Index: pmwiki.php =================================================================== --- pmwiki.php (.../pmwiki-2.2.1) (revision 2344) +++ pmwiki.php (.../pmwiki-2.2.2) (revision 2344) @@ -203,7 +203,8 @@ 'logout' => 'read', 'login' => 'login'); $ActionTitleFmt = array( 'edit' => '| $[Edit]', - 'attr' => '| $[Attributes]'); + 'attr' => '| $[Attributes]', + 'login' => '| $[Login]'); $DefaultPasswords = array('admin'=>'*','read'=>'','edit'=>'','attr'=>''); $AuthCascade = array('edit'=>'read', 'attr'=>'edit'); $AuthList = array('' => 1, 'nopass:' => 1, '@nopass' => 1); @@ -1042,7 +1043,7 @@ $info = "

$[More information]

"; $msg = "

$[PmWiki can't process your request]

$msg

-

We are sorry for any inconvenience.

+

$[We are sorry for any inconvenience].

$info

$[Return to] $ScriptUrl

"; @header("Content-type: text/html; charset=$Charset"); @@ -1408,7 +1409,8 @@ ? $LinkPageSelfFmt : $LinkPageExistsFmt; } $url = PageVar($tgtname, '$PageUrl'); - if (@$EnableLinkPageRelative) + $txt = str_replace("$", "$", $txt); + if (@$EnableLinkPageRelative) $url = preg_replace('!^[a-z]+://[^/]*!i', '', $url); $fmt = str_replace(array('$LinkUrl', '$LinkText'), array($url.PUE($qf), $txt), $fmt); Index: pub/skins/print/print.php =================================================================== --- pub/skins/print/print.php (.../pmwiki-2.2.1) (revision 2344) +++ pub/skins/print/print.php (.../pmwiki-2.2.2) (revision 2344) @@ -22,8 +22,8 @@ $GroupPrintFooterFmt, $GroupHeaderFmt, $GroupFooterFmt; $LinkPageExistsFmt = "\$LinkText"; -SDV($GroupPrintHeaderFmt,'(:include $Group.GroupPrintHeader:)(:nl:)'); -SDV($GroupPrintFooterFmt,'(:nl:)(:include $Group.GroupPrintFooter:)'); +SDV($GroupPrintHeaderFmt,'(:include $Group.GroupPrintHeader basepage={*$FullName}:)(:nl:)'); +SDV($GroupPrintFooterFmt,'(:nl:)(:include $Group.GroupPrintFooter basepage={*$FullName}:)'); $GroupHeaderFmt = $GroupPrintHeaderFmt; $GroupFooterFmt = $GroupPrintFooterFmt; Index: pub/guiedit/guiedit.js =================================================================== --- pub/guiedit/guiedit.js (.../pmwiki-2.2.1) (revision 2344) +++ pub/guiedit/guiedit.js (.../pmwiki-2.2.2) (revision 2344) @@ -12,7 +12,7 @@ function insButton(mopen, mclose, mtext, mlabel, mkey) { if (mkey > '') { mkey = 'accesskey="' + mkey + '" ' } - document.write("" Index: scripts/authuser.php =================================================================== --- scripts/authuser.php (.../pmwiki-2.2.1) (revision 2344) +++ scripts/authuser.php (.../pmwiki-2.2.2) (revision 2344) @@ -1,5 +1,5 @@ $fn) if (@$auth[$k] && $fn($pagename, $id, $pw, $auth[$k])) { $authid = $id; break; } Index: scripts/notify.php =================================================================== --- scripts/notify.php (.../pmwiki-2.2.1) (revision 2344) +++ scripts/notify.php (.../pmwiki-2.2.2) (revision 2344) @@ -88,7 +88,7 @@ function NotifyUpdate($pagename, $dir='') { global $NotifyList, $NotifyListPageFmt, $NotifyFile, $IsPagePosted, $FmtV, $NotifyTimeFmt, $NotifyItemFmt, $SearchPatterns, - $NotifySquelch, $NotifyDelay, $Now, + $NotifySquelch, $NotifyDelay, $Now, $Charset, $EnableNotifySubjectEncode, $NotifySubjectFmt, $NotifyBodyFmt, $NotifyHeaders, $NotifyParameters; $abort = ignore_user_abort(true); @@ -160,6 +160,9 @@ $nextevent = $nnow + 86400; $mailto = array_keys($notify); $subject = FmtPageName($NotifySubjectFmt, $pagename); + if(IsEnabled($EnableNotifySubjectEncode, 0) + && preg_match("/[^\x20-\x7E]/", $subject)) + $subject = strtoupper("=?$Charset?B?"). base64_encode($subject)."?="; $body = FmtPageName($NotifyBodyFmt, $pagename); foreach ($mailto as $m) { $msquelch = @$notify[$m]['lastmail'] + Index: scripts/version.php =================================================================== --- scripts/version.php (.../pmwiki-2.2.1) (revision 2344) +++ scripts/version.php (.../pmwiki-2.2.2) (revision 2344) @@ -1 +1 @@ -$trailname$crumbs"; } } - return $trailname; + return "$trailname"; } Index: scripts/xlpage-utf-8.php =================================================================== --- scripts/xlpage-utf-8.php (.../pmwiki-2.2.1) (revision 2344) +++ scripts/xlpage-utf-8.php (.../pmwiki-2.2.2) (revision 2344) @@ -1,5 +1,5 @@ \$LinkText Δ"); +SDVA($ActionTitleFmt, array('upload' => '| $[Attach]')); SDV($PageUploadFmt,array("
Index: wikilib.d/PmWiki.PageListDefaultTemplates =================================================================== --- wikilib.d/PmWiki.PageListDefaultTemplates (.../pmwiki-2.2.1) (revision 2344) +++ wikilib.d/PmWiki.PageListDefaultTemplates (.../pmwiki-2.2.2) (revision 2344) @@ -1,12 +0,0 @@ -version=pmwiki-2.2.1 ordered=1 urlencoded=1 -agent=Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.19) Gecko/20081216 Ubuntu/8.04 (hardy) Firefox/2.0.0.19 -author=Petko -charset=ISO-8859-1 -csum=mv from PageListExamples -ctime=1238273805 -host=81.65.14.164 -name=PmWiki.PageListDefaultTemplates -rev=1 -targets=Site.PageListTemplates -text=(:Summary: Examples of what is produced by default pagelist formats:)%0aThis page demonstrates the appearance of the default pagelist templates that are distributed on the [[{$SiteGroup}.PageListTemplates]] page.%0a%0aSee also: Cookbook:PagelistTemplateSamples%0a%0a!!fmt=#default%0a%0aThe default template for pagelists when [@fmt=@] isn't specified.%0a%0a(:markup class="horiz":)%0a(:pagelist group={$Group} fmt=#default count=7:)%0a(:markupend:)%0a%0a!!fmt=#bygroup%0a%0aDisplay pages by group/name.%0a%0a(:markup class="horiz":)%0a(:pagelist group={$Group} fmt=#bygroup count=7:)%0a(:markupend:)%0a%0a%0a!!fmt=#simple%0a%0aA simple bullet list of page names.%0a%0a(:markup class="horiz":)%0a(:pagelist group={$Group} fmt=#simple count=5:)%0a(:markupend:)%0a%0a%0a!!fmt=#title%0a%0aA simple bullet list of page titles.%0a%0a(:markup class="horiz":)%0a(:pagelist group={$Group} fmt=#title count=5:)%0a(:markupend:)%0a%0a%0a!!fmt=#titlespaced%0a%0aOutputs wiki page titles with spaces between the words in the title.%0a%0a(:markup class="horiz":)%0a(:pagelist group={$Group} fmt=#titlespaced count=5:)%0a(:markupend:)%0a%0a%0a!!fmt=#group%0a%0aA bullet list of groups.%0a%0a(:markup class="horiz":)%0a(:pagelist fmt=#group count=5:)%0a(:markupend:)%0a%0a%0a!!fmt=#include%0a%0aConcatenate the text of pages in the list. (Note, this can be an expensive operation!)%0a%0a''Not demonstrated.''%0a%0a%0a!!fmt=#includefaq%0a%0aInclude just the #faq sections from pages in the list. (This can also be expensive,%0aespecially if the list includes pages that don't have the [@[[#faq]]@] anchor!)%0a%0a(:markup class="horiz":)%0a(:pagelist name=$[PmWiki.AccessKeys] fmt=#includefaq:)%0a(:markupend:)%0a%0a%0a!!fmt=#description%0a%0aList pages and append the page's description if it exists.%0a%0a(:markup class="horiz":)%0a(:pagelist group={$Group} fmt=#description count=7:)%0a(:markupend:)%0a%0a%0a!!fmt=#simplename%0a%0aSimple bullet list of page names, without the Group name.%0a%0a(:markup class="horiz":)%0a(:pagelist group={$Group} fmt=#simplename count=5:)%0a(:markupend:)%0a%0a%0a!!fmt=#simplenamespaced%0a%0aSimple bullet list of spaced page names, without the Group name.%0a%0a(:markup class="horiz":)%0a(:pagelist group={$Group} fmt=#simplenamespaced count=5:)%0a(:markupend:)%0a -time=1238273805 Index: wikilib.d/PmWiki.Links =================================================================== --- wikilib.d/PmWiki.Links (.../pmwiki-2.2.1) (revision 2344) +++ wikilib.d/PmWiki.Links (.../pmwiki-2.2.2) (revision 2344) @@ -1,11 +1,11 @@ version=pmwiki-2.2.1 ordered=1 urlencoded=1 -agent=Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.19) Gecko/20081216 Ubuntu/8.04 (hardy) Firefox/2.0.0.19 -author=Petko +agent=Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.172.30 Safari/530.5 +author=simon charset=ISO-8859-1 -csum=fix link -host=81.65.14.164 +csum=add anchor +host=203.97.214.12 name=PmWiki.Links -rev=126 +rev=137 targets=PmWiki.WikiWikiWeb,PmWiki.WikiSandbox,PmWiki.Installation,PmWiki.WikiWord,PmWiki.BasicEditing,PmWiki.Categories,PmWiki.InterMap,PmWiki.WikiGroup,Main.WikiSandbox,PmWiki.PageLists,PmWiki.Images -text=(:Summary:Linking within and between wiki pages:)%0a(:Audience: authors (basic) :)%0aA key feature of [[Wiki Wiki Web]]s is the ease of creating %25newwin%25[[Wikipedia:Hyperlink|hyper links]] in the text of a document. %0aPmWiki provides multiple mechanisms for creating such links.%0a%0a!! Links to other pages in the wiki%0a%0aTo create a link to another page, simply enclose the name of the page inside double square brackets, as in [@[[wiki sandbox]]@] or [@[[installation]]@]. These result in links to [[wiki sandbox]] and [[installation]], respectively.%0a%0aPmWiki creates a link by using the text inside the double brackets. It does this by removing spaces between words, and automatically capitalizing words following spaces or other punctuation (like ~). Thus [@[[Wiki sandbox]]@], [@[[wiki sandbox]]@], and [@[[WikiSandbox]]@] all display differently but create the same link to the page titled ''WikiSandbox''.%0a%0aIn other words, PmWiki will automatically create the link path name using title case as a rule, but link text will display in the format you have entered it.%0a%0aA suffix can also be added to the end of a link, which becomes part of the link text but not the target. Thus [@[[wiki sandbox]]es@] is a link to ''[=WikiSandbox=]'' but displays as [[wiki sandbox]]es.%0a%0aLink text in (parentheses) will not be not displayed, so that [@[[(wiki) sandbox]]@] links to ''[=WikiSandbox=]'' and displays as [[(wiki) sandbox]].%0a%0aFinally, you can specify the link text via a vertical brace, thus [@[[WikiSandbox | a play area]]@], which links to ''WikiSandbox'' but displays as [[WikiSandbox | a play area]]. You can use an arrow ([@->@]) to reverse the order of the text and target, as in [@[[a play area -> WikiSandbox]]@] ([[a play area -> WikiSandbox]]).%0a%0aSome sites also recognize [[WikiWord]] links, in which a camel case (capitalised) ''[=WikiWord=]'' appearing in the text is automatically treated as a link to a page of the same name.%0a%0a!!! [[#linkshortcuts]]Link shortcuts%0a%0aUse of special characters in title is not a problem for PmWiki, but sometimes the character set is different from your computer and the server computer or the client computer that is used to read your wiki. Specially UTF-8 gives some problems. So it's better not to use these and keep ASCII characters if possible. Any page can have a [=(:title %3cname>:)=] directive to display a localized title instead of the page file name. In this case, the following tip is important and usefull.%0a%0a'''[@[[PageName|+]]@]''' creates a link to PageName and uses that page's title as the link text, eg [=[[PmWiki.BasicEditing|+]]=] where the page Installation has the directive [=(:title=] {PmWiki/BasicEditing$Title}:)=] gives [[PmWiki.BasicEditing|+]]. %0a%0a%0a[@[[PageName|#]]@] creates a [[#reference|reference]] link as shown below'^[[#reference|#]]^'.%0a%0a[@[[!PageName]]@] creates a link to the PageName in the group called Category. See [[PmWiki/Categories]].%0a%0a[@[[~Author]]@] link creates a link to the page in the page called Author in the Profiles group. PmWiki will automatically generate that link for the current Author when it encounters three tilde characters ([@~@]) in a row ([@~@][@~@][@~@]). Adding a fourth tilde ([@~@][@~@][@~@][@~@]) appends the current date and time.%0a%0a!!! [[#anchors]]Links to specific locations within a page -- "anchors"%0a%0aTo define a location within a page to which you may jump directly, use the markup [@[[#name]]@]. This creates an "anchor" that uniquely identifies that location in the page. Then to have a link jump directly to that anchor, use one of%0a%0a* [@[[#name|link text]]@] within the same page, or%0a* [@[[PageName#name]]@] or [@[[PageName#name|link text]]@] for a location on another page%0a* The form [@[[PageName(#name)]]@] may be useful for hiding the anchor text in a link. %0a%0aFor example, here's a link to the [[#intermaps | Intermaps]] section, below. %0a%0aNotes:%0a* %25red%25the anchor itself must begin with a letter%25%25, '''not a number'''%0a* a link to an anchor must have the '''same capitalization as the anchor''' itself. %0a* Spaces are not allowed in an anchor: "[@[[#my anchor]]@]" won't work, "[@[[#myanchor]]@]" will.%0a%0a!! Links outside the wiki%0a!!! Links to external sites ([=URLs=])%0a%0aLinks to external sites simply begin with a prefix such as 'http:', 'ftp:', etc. Thus [@http://google.com/@] and [@[[http://google.com/]]@] both link to Google. As with the above, an author can specify the link text by using the vertical brace or arrow syntax, as in [@[[http://google.com/ | Google]]@] and [@[[Google -> http://google.com]]@].%0a%0aIf the external link includes (parentheses), escape these using [=%2528=] for "(" and [=%2529=] for ")" : %0a(:markup:)[=[[http://en.wikipedia.org/wiki/Wiki_%2528disambiguation%2529 | link to "Wiki (disambiguation)" ]]=]%0a%0a!!! Links to intranet (local) files%0a%0aYou can link to a file system by including the prefix [@'file:///'@] (for Internet Explorer at least). So [@file:///S:\ProjPlan.mpp@] and [@[[Shared S drive->file:///S:\]]@] are both valid links. On a Windows file system you may want to use network locations (eg \\server1\rootdirectory\subdirectory) rather than drive letters which may not be consistent across all users. Not all browsers will follow such links.%0a%0a!! Link characteristics%0a!!! [[#reference]]Links as References%0a%0aLinks may also be specified as '''References''', so the target appears as an anonymous ''numeric'' reference rather than a ''textual'' reference. The following markup is provided to produce sequential reference numbering within a PmWiki page:%0a%0aFormatting the link as: [@[[http://google.com |#]]@] produces: [[http://google.com |#]] as the link.%0a%0aSubsequent occurrence of the reference link format on the same page will be incremented automatically as per the following example: Entering [@[[http://pmwiki.com |#]]@] produces [[http://pmwiki.com |#]], [@[[#intermaps |#]]@] produces [[#intermaps |#]], and so on for further reference links.%0a%0a!!! [[#intermaps]]Intermaps%0a%0a[[Inter Map]] links are also supported (see [[Inter Map]]). In particular, the [@Path:@] InterMap entry can be used to create links using relative or absolute paths on the current site (e.g., [@Path:../../somedir/foo.html@] or [@Path:/dir/something.gif@]).%0a%0a%0a!!! Links to pages in other [[wiki group]]s%0a%0aSee [[Wiki Group]].%0a%0a!!! Links that open a new browser window%0a%0aTo have a link open in another window, use [@%25newwin%25@]:%0a%0a* [@%25newwin%25 http://pmichaud.com@] produces %25newwin%25 http://pmichaud.com %0a* [@%25newwin%25 [[http://google.com/ | Google]]@] produces %25newwin%25 [[http://google.com/ | Google]]%0a* [@%25newwin%25 Main.WikiSandbox@] produces %25newwin%25 [[Main.WikiSandbox]]%0a%0aYou can also specify that links should open in a new window via the @@target@@ attribute:%0a%0a(:markup class=horiz:)%0a%25target=_blank%25 Any links on this line like http://pmichaud.com %0awill open in a new window.%0a(:markupend:)%0a%0a!!! [[#robots]]Links that are not followed by [[(PmWiki:)robots]]%0a%0aPrefix a link with [=%25rel=nofollow%25=] to advise %25newwin rel=nofollow%25[[http://robotstxt.org/|robots]] and [[http://validator.w3.org/checklink|link checkers]] not to follow it.%0a%0a%0a!! Links and CSS Classes%0a%0aPmWiki automatically gives classes to several types of links. Among other things, this enables you to format each type differently.%0a%0aNote: This may be an incomplete list.%0a:.selflink:A link to the current page. Useful in sidebars to show "you are here".%0a:.wikilink:A link to another page within the wiki.%0a:.urllink:A link to a page outside the wiki.%0a%0aYou can create a the class [@.anchor@] for anchor links\\%0a[@[[#target]]@], aka %3cA name='target'>%3c/A>\\%0aby putting the following in config.php :%0a%0a Markup('[[#','%3c[[','/(?>\\[\\[#([A-Za-z][-.:\\w]*))\\]\\]/e',%0a "Keep(TrackAnchors('$1') ? '' : \"%3ca name='$1' id='$1' class='anchor'>%3c/a>\", 'L')");%0a%0a!! Notes%0a%0a'''Note:''' The default behavior of "+" above can be overridden to display the spaced title, rather than simply the title by adding the following to config.php:%0a->[@%0a## [[target |+]] title links%0aMarkup('[[|+', '%3c[[|',%0a "/(?>\\[\\[([^|\\]]+))\\|\\s*\\+\\s*]]/e",%0a "Keep(MakeLink(\$pagename, PSS('$1'),%0a PageVar(MakePageName(\$pagename,PSS('$1')), '\$Titlespaced')%0a ),'L')");%0a@]%0a%0a%0a>>faq%3c%3c [[#faq]]%0a%0aQ: How do I create a link that will open as a new window?%0a%0aA: Use the [@%25newwin%25@] wikistyle, as in:%0a(:markup:) [=%25newwin%25http://example.com/=]%0a%0aQ: How do I create a link that will open a new window, and configure that new window?%0a%0aA: This requires javascript. See [[Cookbook:PopupWindow]].%0a%0aQ: How do I place a mailing address in a page?%0a%0aA: Use the [@mailto:@] markup, as in one of the following:%0a%0a(:markup class="horiz":)%0a* mailto:myaddress@example.com%0a* [[mailto:myaddress@example.com]]%0a* [[mailto:myaddress@example.com | email me]]%0a* [[mailto:myaddress@example.com?subject=Some subject&body=Body text | email me]]%0a(:markupend:)%0a%0aSee also [[Cookbook:EProtect]] or [[Cookbook:ProtectEmail]] for information on protecting email addresses from spammers.%0a%0aQ: How can I enable links to other protocols, such as nntp:, ssh:, xmpp:, etc?%0a%0aA: See [[Cookbook:Add Url schemes]] {Cookbook.AddUrlSchemes$:Summary}%0a%0aQ: How do I make a WikiWord link to an external page instead of a WikiPage?%0a%0aA: Use link markup. There are two formats:%0a%0a->[@[[http://example.com/ | WikiWord]]%0a[[WikiWord -> http://example.com/]]@]%0a%0aQ: How do I find all of the pages that link to another page (i.e., backlinks)?%0a%0aA: In the wiki search form, use @@link=Group.Page@@ to find all pages linking to Group.Page.%0a%0aA: Use the [@link=@] option of the [[[@(:pagelist:)@] directive -> PmWiki/PageLists#pagelistlink]], as in%0a%0a->[@(:pagelist link=SomePage list=all:) -- show all links to SomePage%0a(:pagelist link={$FullName} list=all:) -- show all links to the current page@]%0a%0a%0aQ: What link schemes does PmWiki support?%0aA: See [[PmWiki:Link schemes]] {PmWiki.LinkSchemes$:Summary}%0a%0aQ: How do I open external links in a new window or mark them with an icon?%0aA: See [[Cookbook:External links]] {Cookbook.ExternalLinks$:Summary}%0a%0aQ: How can I use an image as a link?%0aA: Use [=[[Page| Attach:image.jpg ]] or [[ http://site | http://site/image.jpg ]]=] See [[PmWiki/Images#links]] -time=1238270955 +text=(:Summary:Linking within and between wiki pages:)%0a(:Audience: authors (basic) :)%0aA key feature of [[Wiki Wiki Web]]s is the ease of creating %25newwin%25[[Wikipedia:Hyperlink|hyper links]]%25%25 in the text of a document. %0aPmWiki provides multiple mechanisms for creating such links.%0a%0a!! Links to other pages in the wiki%0a%0aTo create a link to another page, simply enclose the name of the page inside double square brackets, as in [@[[wiki sandbox]]@] or [@[[installation]]@]. These result in links to [[wiki sandbox]] and [[installation]], respectively.%0a%0aPmWiki creates a link by using the text inside the double brackets. It does this by removing spaces between words, and automatically capitalizing words following spaces or other punctuation (like ~). Thus [@[[Wiki sandbox]]@], [@[[wiki sandbox]]@], and [@[[WikiSandbox]]@] all display differently but create the same link to the page titled ''WikiSandbox''.%0a%0aIn other words, PmWiki will automatically create the link path name using title case as a rule, but link text will display in the format you have entered it.%0a%0aA suffix can also be added to the end of a link, which becomes part of the link text but not the target. Thus [@[[wiki sandbox]]es@] is a link to ''[=WikiSandbox=]'' but displays as [[wiki sandbox]]es.%0a%0aLink text in (parentheses) will not be not displayed, so that [@[[(wiki) sandbox]]@] links to ''[=WikiSandbox=]'' and displays as [[(wiki) sandbox]].%0a%0aFinally, you can specify the link text via a vertical brace, thus [@[[WikiSandbox | a play area]]@], which links to ''WikiSandbox'' but displays as [[WikiSandbox | a play area]]. You can use an arrow ([@->@]) to reverse the order of the text and target, as in [@[[a play area -> WikiSandbox]]@] ([[a play area -> WikiSandbox]]).%0a%0aSome sites also recognize [[WikiWord]] links, in which a camel case (capitalised) ''[=WikiWord=]'' appearing in the text is automatically treated as a link to a page of the same name.%0a%0a!!! [[#linkshortcuts]]Link shortcuts%0a%0aUse of special characters in title is not a problem for PmWiki, but sometimes the character set is different from your computer and the server computer or the client computer that is used to read your wiki. Specially UTF-8 gives some problems. So it's better not to use these and keep ASCII characters if possible. Any page can have a [=(:title %3cname>:)=] directive to display a localized title instead of the page file name. In this case, the following tip is important and usefull.%0a%0a'''[@[[PageName|+]]@]''' creates a link to PageName and uses that page's title as the link text, eg [=[[PmWiki.BasicEditing|+]]=] where the page Installation has the directive [=(:title=] {PmWiki/BasicEditing$Title}:)=] gives [[PmWiki.BasicEditing|+]]. %0a%0a%0a[@[[PageName|#]]@] creates a [[#reference|reference]] link as shown below'^[[#reference|#]]^'.%0a%0a[@[[!PageName]]@] creates a link to the PageName in the group called Category. See [[PmWiki/Categories]].%0a%0a[@[[~Author]]@] link creates a link to the page in the page called Author in the Profiles group. PmWiki will automatically generate that link for the current Author when it encounters three tilde characters ([@~@]) in a row ([@~@][@~@][@~@]). Adding a fourth tilde ([@~@][@~@][@~@][@~@]) appends the current date and time.%0a%0a!!! [[#anchors]]Links to specific locations within a page -- "anchors"%0a%0aTo define a location within a page to which you may jump directly, use the markup [@[[#name]]@]. This creates an "anchor" that uniquely identifies that location in the page. Then to have a link jump directly to that anchor, use one of%0a%0a* [@[[#name|link text]]@] within the same page, or%0a* [@[[PageName#name]]@] or [@[[PageName#name|link text]]@] for a location on another page%0a* The form [@[[PageName(#name)]]@] may be useful for hiding the anchor text in a link. %0a%0aFor example, here's a link to the [[#intermaps | Intermaps]] section, below. %0a%0aNotes:%0a* %25red%25the anchor itself must begin with a letter%25%25, '''not a number'''%0a* a link to an anchor must have the '''same capitalization as the anchor''' itself. %0a* Spaces are not allowed in an anchor: "[@[[#my anchor]]@]" won't work, "[@[[#myanchor]]@]" will.%0a%0a!! Links outside the wiki%0a[[#externallinks]]%0a!!! Links to external sites ([=URLs=])%0a%0aLinks to external sites simply begin with a prefix such as 'http:', 'ftp:', etc. Thus [@http://google.com/@] and [@[[http://google.com/]]@] both link to Google. As with the above, an author can specify the link text by using the vertical brace or arrow syntax, as in [@[[http://google.com/ | Google]]@] and [@[[Google -> http://google.com]]@].%0a%0aIf the external link includes (parentheses), escape these using [=%2528=] for "(" and [=%2529=] for ")" : %0a(:markup:)[=[[http://en.wikipedia.org/wiki/Wiki_%2528disambiguation%2529 | link to "Wiki (disambiguation)" ]]=]%0a%0a!!! Links to intranet (local) files%0a%0aYou can link to a file system by including the prefix [@'file:///'@] (for Internet Explorer at least). So [@file:///S:\ProjPlan.mpp@] and [@[[Shared S drive->file:///S:\]]@] are both valid links. On a Windows file system you may want to use network locations (eg \\server1\rootdirectory\subdirectory) rather than drive letters which may not be consistent across all users. Not all browsers will follow such links.%0a%0a!! Link characteristics%0a!!! [[#reference]]Links as References%0a%0aLinks may also be specified as '''References''', so the target appears as an anonymous ''numeric'' reference rather than a ''textual'' reference. The following markup is provided to produce sequential reference numbering within a PmWiki page:%0a%0aFormatting the link as: [@[[http://google.com |#]]@] produces: [[http://google.com |#]] as the link.%0a%0aSubsequent occurrence of the reference link format on the same page will be incremented automatically as per the following example: Entering [@[[http://pmwiki.com |#]]@] produces [[http://pmwiki.com |#]], [@[[#intermaps |#]]@] produces [[#intermaps |#]], and so on for further reference links.%0a%0a!!! [[#intermaps]]Intermaps%0a%0a[[Inter Map]] links are also supported (see [[Inter Map]]). In particular, the [@Path:@] InterMap entry can be used to create links using relative or absolute paths on the current site (e.g., [@Path:../../somedir/foo.html@] or [@Path:/dir/something.gif@]).%0a%0a%0a!!! Links to pages in other [[wiki group]]s%0a%0aSee [[Wiki Group]].%0a%0a!!! Links that open a new browser window%0a%0aTo have a link open in another window, use [@%25newwin%25...%25%25@]:%0a%0a* [@%25newwin%25 http://pmichaud.com %25%25@] produces %25newwin%25 http://pmichaud.com %25%25%0a* [@%25newwin%25 [[http://google.com/ | Google]] %25%25@] produces %25newwin%25 [[http://google.com/ | Google]]%25%25%0a* [@%25newwin%25 [[Main.WikiSandbox]] %25%25@] produces %25newwin%25 [[Main.WikiSandbox]]%25%25%0a%0aYou can also specify that links should open in a new window via the @@[=%25target=_blank%25...%25%25=]@@ attribute:%0a%0a(:markup class=horiz:)%0aThe following link %25target=_blank%25 http://pmichaud.com %25%25%0awill open in a new window.%0a(:markupend:)%0a%0a!!! [[#robots]]Links that are not followed by [[(PmWiki:)robots]]%0a%0aPrefix a link with [=%25rel=nofollow%25=] to advise %25newwin rel=nofollow%25[[http://robotstxt.org/|robots]] and [[http://validator.w3.org/checklink|link checkers]]%25%25 not to follow it.%0a%0a%0a!! Links and CSS Classes%0a%0aPmWiki automatically gives classes to several types of links. Among other things, this enables you to format each type differently.%0a%0aNote: This may be an incomplete list.%0a:.selflink:A link to the current page. Useful in sidebars to show "you are here".%0a:.wikilink:A link to another page within the wiki.%0a:.urllink:A link to a page outside the wiki.%0a%0aYou can create a the class [@.anchor@] for anchor links\\%0a[@[[#target]]@], aka %3cA name='target'>%3c/A>\\%0aby putting the following in config.php :%0a%0a Markup('[[#','%3c[[','/(?>\\[\\[#([A-Za-z][-.:\\w]*))\\]\\]/e',%0a "Keep(TrackAnchors('$1') ? '' : \"%3ca name='$1' id='$1' class='anchor'>%3c/a>\", 'L')");%0a%0a!! Notes%0a%0a'''Note:''' The default behavior of "+" above can be overridden to display the spaced title, rather than simply the title by adding the following to config.php:%0a->[@%0a## [[target |+]] title links%0aMarkup('[[|+', '%3c[[|',%0a "/(?>\\[\\[([^|\\]]+))\\|\\s*\\+\\s*]]/e",%0a "Keep(MakeLink(\$pagename, PSS('$1'),%0a PageVar(MakePageName(\$pagename,PSS('$1')), '\$Titlespaced')%0a ),'L')");%0a@]%0a%0a%0a>>faq%3c%3c [[#faq]]%0a%0aQ: How do I create a link that will open as a new window?%0a%0aA: Use the [@%25newwin%25@] wikistyle, as in:%0a(:markup class=horiz:) [=%25newwin%25 http://example.com/ %25%25=]%0a%0aQ: How do I create a link that will open a new window, and configure that new window?%0a%0aA: This requires javascript. See [[Cookbook:PopupWindow]].%0a%0aQ: How do I place a mailing address in a page?%0a%0aA: Use the [@mailto:@] markup, as in one of the following:%0a%0a(:markup class="horiz":)%0a* mailto:myaddress@example.com%0a* [[mailto:myaddress@example.com]]%0a* [[mailto:myaddress@example.com | email me]]%0a* [[mailto:myaddress@example.com?subject=Some subject | email me]]@]%0a(:markupend:)%0aThe markup @@[=[[mailto:me@example.=]com?%25red%25cc=%25%25someoneelse@example.com%25red%25&bcc=%25%25else@example.com%25red%25&subject=%25%25Pre-set Subject%25red%25&body=%25%25Pre-set body | display text]] =]@@ lets you specify more parameters like the message body and more recipients (may not work in all browsers and e-mail clients).%0a%0aSee also [[Cookbook:EProtect]] or [[Cookbook:ProtectEmail]] for information on protecting email addresses from spammers.%0a%0aQ: How can I enable links to other protocols, such as nntp:, ssh:, xmpp:, etc?%0a%0aA: See [[Cookbook:Add Url schemes]] {Cookbook.AddUrlSchemes$:Summary}%0a%0aQ: How do I make a WikiWord link to an external page instead of a WikiPage?%0a%0aA: Use link markup. There are two formats:%0a%0a->[@[[http://example.com/ | WikiWord]]%0a[[WikiWord -> http://example.com/]]@]%0a%0aQ: How do I find all of the pages that link to another page (i.e., backlinks)?%0a%0aA: In the wiki search form, use @@link=Group.Page@@ to find all pages linking to Group.Page.%0a%0aA: Use the [@link=@] option of the [[[@(:pagelist:)@] directive -> PmWiki/PageLists#pagelistlink]], as in%0a%0a->[@(:pagelist link=SomePage list=all:) -- show all links to SomePage%0a(:pagelist link={$FullName} list=all:) -- show all links to the current page@]%0a%0a%0aQ: What link schemes does PmWiki support?%0aA: See [[PmWiki:Link schemes]] {PmWiki.LinkSchemes$:Summary}%0a%0aQ: How do I open external links in a new window or mark them with an icon?%0aA: See [[Cookbook:External links]] {Cookbook.ExternalLinks$:Summary}%0a%0aQ: How can I use an image as a link?%0aA: Use [=[[Page| Attach:image.jpg ]] or [[ http://site | http://site/image.jpg ]]=] See [[PmWiki/Images#links]]%0a +time=1243365953 Index: wikilib.d/PmWiki.WikiTrails =================================================================== --- wikilib.d/PmWiki.WikiTrails (.../pmwiki-2.2.1) (revision 2344) +++ wikilib.d/PmWiki.WikiTrails (.../pmwiki-2.2.2) (revision 2344) @@ -1,11 +1,11 @@ version=pmwiki-2.2.1 ordered=1 urlencoded=1 -agent=Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.19) Gecko/20081216 Ubuntu/8.04 (hardy) Firefox/2.0.0.19 -author=Petko +agent=Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10 GTB5 +author=TeganDowling charset=ISO-8859-1 -csum=refactor -host=81.65.14.164 +csum=punctuation and other minor copy-edits for clarity +host=69.131.21.195 name=PmWiki.WikiTrails -rev=151 -targets=PmWiki.Installation,PmWiki.LocalCustomizations,PmWiki.PmWiki,PmWiki.PmWikiPhilosophy,PmWiki.PmWikiFeatures,PmWiki.Download,PmWiki.WikiStyles,PmWiki.PageLists,PmWiki.Features,PmWiki.InterMap,Cookbook.Cookbook,PmWiki.TextFormattingRules,PmWiki.DesignNotes,PmWiki.Links,PmWiki.Security,PmWiki.Troubleshooting,PITS.PITS,PITS.00895,PmWiki.GroupHeaders,PmWiki.FullName -text=(:Summary: Trails from lists items from a single page:)%0a(:div class="rfloat frame" style="font-size:smaller; clear:right;" :)%0a!! Table of contents%0a* [[#creating | Creating a trail]]%0a* [[#types | Types of trail]]%0a* [[#linksyntax | Trail link syntax]]%0a* [[#using | Using a trail]]%0a** [[#pathtrail | Path trail]]%0a** [[#circular-trails | Circular trail]]%0a* [[#crossgroup | Cross group trails]]%0a* [[#trailstyle | Trail style]]%0a* [[#trailpagelists | Trail page lists]]%0a(:divend:)%0a(:Audience: authors (basic) :)%0aThe WikiTrails feature allows wiki authors to create "trails" through sequences of pages in the wiki.%0a%0a[[#creating]]%0a!! Creating a trail%0a%0aBefore you can use a trail through a group of pages, you have to create a "trail index" on a separate page, which we will call the "trail index page". %0aOn that trail index page, you simply create a numbered or bulleted list of links. (So every numbered or bulleted list of links implicitly creates a trail.) It is important that each page name (link) be the first item following each bullet.%0a%0aAn example trail index page might contain:%0a[[#trailstart]]%0a* [[Installation]] how to install%0a* [[The customisation page->LocalCustomizations]]%0a* [[PmWiki]] some other text [[PmWiki Philosophy]] [-(The latter won't be in the trail because it is preceded by text)-]%0a* Yet some other text. [[PmWiki Features]] [-(This won't be in the trail because it follows text)-]%0a* %25center%25[[PmWiki/Download]] [-(This won't be in the trail because it starts with the [=%25centre%25=] style.)-]%0a* [[PmWiki.WikiStyles]]%0a* Some text [-(This won't be in the trail because it is not a link)-]%0a* [[PmWiki/PageLists]] %0a* [[http://pmwiki.org]] [-(This won't be in the trail because it is not a page link)-]%0a** [[Features]] %0a* [[PmWiki:InterMap]] [-(This won't be in the trail because it is an [[InterMap]] link)-]%0a* [[Cookbook/Cookbook]] %0a: [[PmWiki philosophy]] : [[Design notes]] [-(The first link will, and the second link won't, be in the trail ([[TextFormattingRules#DefinitionLists | definition list]]))-]%0a* [[#security]][[Security]] [-(This won't be in the trail because its preceded by a (hidden) [[Links#anchors | anchor]])-]%0a* %25newwin%25[[Links]] [-(This won't be in the trail because its preceded by a (hidden) [=%25newwin%25=] style)-]%0a* ''[[PmWiki/Troubleshooting]]'' [-(This won't be in the trail because its preceded by a (hidden) ''italic'' style)-]%0a# [[PITS]] %0a## [[PITS/00895|+]]%0a[[#trailend]]%0a%0acreates the following "wikitrail", using pagelist to display it:%0a(:markup:)%0a(:pagelist trail={$FullName}#trailstart#trailend fmt={$FullName}#traillist:)%0a(:markupend:)%0a%0a!!! Observations%0a%0a# In general, indentation levels in the page list don't matter -- trails are a linear sequence of pages.%0a# A page is part of the trail only if the page link immediately follows the list markup.%0a%0a[[#types]]%0a!! Trail types%0aPmWiki defines 2 trail markups:%0a%0a* '''[@%3c%3c|[[Trail Index Page]]|>>@]''' displays as "[=%3c%3c PreviousPage | Trail Index Page | NextPage >>=]".%0a%0a* '''[@%3c|[[Trail Index Page]]|>@]''' displays as "[=%3c PreviousPage | Trail Index Page | NextPage >=]", except the appropriate arrow is omitted at the beginning and end of the trail.%0a%0a[[#linksyntax]]%0a!! Trail link syntax%0aThe trail link has the same syntax as a standard [[link(s)]], %0athis means for example you can specify %0a* [@%3c|[[TrailIndexPage | +]]|>@]%0a%0aTrail links can be restricted by [[links#anchors|anchors]] (links to a specific location within a page),%0athis means you can have more than one trail on a page, or start a trail from a specific location in a page.%0a* [@%3c|[[Trail Index Page#trailstart#trailend]]|>@]%0a%0a[[#using]]%0a!! Using the trail%0a%0aWhat makes a trail "work" is adding ''trail markup'' on the pages in the trail (i.e. the pages that are listed in the bullet/numbered list on the trail index page).%0a%0aTo build a trail, add ''trail markup'' like [@%3c%3c|[[TrailIndexPage]]|>>@] to a page, where `TrailIndexPage is the page, described above, containing the bulleted list of pages in the trail. PmWiki will display the trail markup with links to any previous and next pages in the trail. %0a%0aThe trail markup can be placed anywhere in a page, and a page can contain multiple trail markups. If you are adding a trail to every page in a group, consider setting the trail markup in the [[Group Headers | GroupHeader]] or GroupFooter pages instead of on every individual page in your group.%0a%0a[[#pathtrail]]%0a!!! Path trail[[#path-trail]]%0a%0a[@^|[[TrailIndexPage]]|^@] treats the list levels as a hierarchy and displays the "path" to reach the current page (i.e., a "breadcrumb" trail). In the example trail above, the markup [@^|TrailIndexPage|^@] on [@TrailPage4@] would display as "[=TrailIndexPage | TrailPage2 | TrailPage4=]".%0a%0aWiki administrators can change the trail separator of the "path" trail ( [@^|[[TrailIndexPage]]|^@] ) from the default | by setting the variable $TrailPathSep in the ''config.php'' file. For instance $TrailPathSep = ' > '; will output "[=TrailIndexPage > TrailPage2 > TrailPage4=]".%0a%0a[[#circular-trails]]%0a!! Circular trails%0a%0aTypically, a trail is a linear list with a first and a last page. However, the trail can be made "circular" by repeating the first page as the last item in the trail index:%0a%0a->[@%0a * [[TrailPage1]]%0a * [[TrailPage2]]%0a ...%0a * [[TrailPageN]]%0a * [[TrailPage1]]%0a@]%0a%0aIf the trail index page is intended to be read by others, the last item can be made invisible inside an [@(:if false:)@] block:%0a%0a->[@%0a * [[TrailPage1]]%0a * [[TrailPage2]]%0a ...%0a * [[TrailPageN]]%0a (:if false:)%0a * [[TrailPage1]]%0a (:ifend:)%0a@]%0a%0a[[#crossgroup]]%0a!! Cross Group Trails%0aBefore version 2.2.1, if your trail contains pages in different groups, it should use full [=[[Group.Name]]=] links instead of just [=[[Name]]=].%0a%0a!! Other notes%0a* There is no space between @@%3c|@@ and @@[=[[link]]=]@@ and @@|>@@, same for the other trail markups.%0a* Note that non-existing pages will appear in the WikiTrail as links.%0a%0a[[#trailstyle]]%0a!!! Trail style%0aPmWiki encapsulates the trail with a ''wikitrail'' css class. %0aThis allows the wiki trail to be [[LocalCustomizations | customised]] by defining CSS for the ''wikitrail'' in the ''local.css'' file.%0a%0a%0a[[#trailpagelists]]%0a!!! Trail in [[page lists]]%0aTrails from a single page can only be displayed using the pagelist [[PmWiki/PageLists#pagelisttrail|trail]] parameter. For example%0a(:markup class="horiz":)%0a(:pagelist trail=PmWiki/WikiTrails fmt=PmWiki.WikiTrails#traillist order=random count=3:)%0a(:markupend:)%0a%0a(:if false:)%0a[[#traillist]]%0a%25font-size:small green%25> [[{=$FullName}|{=$Groupspaced}.{=$Namespaced}]] %3c%0a[[#traillistend]]%0a(:ifend:)%0a%0a!! Questions%0a[[#faq]]%0a>>faq%3c%3c%0aQ:%0aA:%0a -time=1238273253 +rev=155 +targets=PmWiki.PageLists,PmWiki.Links,PmWiki.Installation,PmWiki.LocalCustomizations,PmWiki.PmWiki,PmWiki.PmWikiPhilosophy,PmWiki.PmWikiFeatures,PmWiki.Download,PmWiki.WikiStyles,PmWiki.Features,PmWiki.InterMap,PmWiki.TextFormattingRules,PmWiki.DesignNotes,PmWiki.Security,PmWiki.Troubleshooting,PITS.PITS,PITS.00895,PmWiki.GroupHeaders,PmWiki.FullName,PmWiki.WebFeeds +text=(:Summary: Trails from lists items from a single page:)%0a(:div class="rfloat frame" style="font-size:smaller; clear:right;" :)%0a!! Table of contents%0a* [[#creating | Creating a trail]]%0a* [[#types | Types of trail]]%0a* [[#linksyntax | Trail link syntax]]%0a* [[#using | Using a trail]]%0a** [[#pathtrail | Path trail]]%0a** [[#circular-trails | Circular trail]]%0a* [[#crossgroup | Cross group trails]]%0a* [[#trailstyle | Trail style]]%0a* [[#trailpagelists | Trail page lists]]%0a(:divend:)%0a(:Audience: authors (basic) :)%0aThe WikiTrails feature allows wiki authors to create "trails" through sequences of pages in the wiki. You simply specify pages and their order on a "trail index", and then place the navigation markup on the pages that you will be navigating. %0a%0a(Don't confuse the [[PmWiki/PageLists|pagelist]] directive with WikiTrails - they are different animals as explained in the [[#faq|Q and A]] below.)%0a%0a[[#creating]]%0a!! Creating a trail%0a%0aBefore you can use a trail through a group of pages, you have to create a "trail index" on a separate page, which we will call the "trail index page". %0aOn that trail index page, you simply create a numbered or bulleted list of links. (So every numbered or bulleted list of links implicitly creates a trail.) %0aIt is important that each page name ([[Links|link]]) be the first item following each bullet; any text or formatting in front of the page name will exclude it from the trail.%0a%0aAn example trail index page might contain the list:%0a[[#trailstart]]%0a* [[Installation]] how to install%0a* [[The customisation page->LocalCustomizations]]%0a* [[PmWiki]] some other text [[PmWiki Philosophy]] [-(The latter won't be in the trail because it is preceded by text)-]%0a* Yet some other text. [[PmWiki Features]] [-(This won't be in the trail because it follows text)-]%0a* %25center%25[[PmWiki/Download]] [-(This won't be in the trail because it is preceded by the [=%25center%25=] style.)-]%0a* [[PmWiki.WikiStyles]]%0a* Some text [-(This won't be in the trail because it is not a link)-]%0a* [[PmWiki/PageLists]] {PmWiki/PageLists$:Summary}%0a* [[http://pmwiki.org]] [-(This won't be in the trail because it is not a page link)-]%0a** [[Features]] %0a* [[PmWiki:InterMap]] [-(This won't be in the trail because it is an [[InterMap]] link)-]%0a* [[Cookbook:Cookbook]] [-(This won't be in the trail because it is an [[InterMap]] link)-] %0a: [[PmWiki philosophy]] : [[Design notes]] [-(The first link will, and the second link won't, be in the trail defined by ([[TextFormattingRules#DefinitionLists | definition list]]))-]%0a* [[#security]][[Security]] [-(This won't be in the trail because its preceded by a (hidden) [[Links#anchors | anchor]])-]%0a* %25newwin%25[[Links]] [-(This won't be in the trail because its preceded by a (hidden) [=%25newwin%25=] style)-]%0a* ''[[PmWiki/Troubleshooting]]'' [-(This won't be in the trail because its preceded by (hidden) ''italic'' style markup)-]%0a# [[PITS/]] %0a## [[PITS/00895|+]]%0a[[#trailend]]%0a%0aThe list above creates the following "wikitrail", displayed using a [[PageLists|pagelist]]:%0a(:markup:)%0a(:pagelist trail={$FullName}#trailstart#trailend fmt={$FullName}#traillist:)%0a(:markupend:)%0a%0a!!! Observations%0a%0a# In general, indentation levels in the page list don't matter -- trails are a linear sequence of pages.%0a# A page is part of the trail only if the page link immediately follows the list markup.%0a#The list itself can be [[#linksyntax|delineated]] by the use of [[#list#anchors|anchors]], allowing for multiple lists on a page, or for some list items to be excluded.%0a%0a[[#types]]%0a!! Trail types%0aPmWiki defines 2 trail markups:%0a%0a* '''[@%3c%3c|[[Trail Index Page]]|>>@]''' displays as "[=%3c%3c PreviousPage | Trail Index Page | NextPage >>=]".%0a%0a* '''[@%3c|[[Trail Index Page]]|>@]''' displays as "[=%3c PreviousPage | Trail Index Page | NextPage >=]", except the appropriate arrow is omitted at the beginning and end of the trail.%0a%0a[[#linksyntax]]%0a!! Trail link syntax%0aThe trail link has the same syntax as a standard [[link(s)]], %0athis means for example you can specify %0a* [@%3c|[[TrailIndexPage | +]]|>@]%0a%0aTrail links can be restricted by [[links#anchors|anchors]] (links to a specific location within a page),%0athis means you can have more than one trail on a page, or start a trail from a specific location in a page.%0a* [@%3c|[[Trail Index Page#trailstart#trailend]]|>@]%0a%0a[[#using]]%0a!! Using the trail%0a%0aWhat makes a trail "work" is adding ''trail markup'' on the pages in the trail (i.e. the pages that are listed in the bullet/numbered list on the trail index page).%0a%0aTo build a trail, add ''trail markup'' like [@%3c%3c|[[TrailIndexPage]]|>>@] to a page, where `TrailIndexPage is the page, described above, containing the bulleted list of pages in the trail. PmWiki will display the trail markup with links to any previous and next pages in the trail. %0a%0aThe trail markup can be placed anywhere in a page, and a page can contain multiple trail markups. If you are adding a trail to every page in a group, consider setting the trail markup in the [[Group Headers | GroupHeader]] or GroupFooter pages instead of on every individual page in your group.%0a%0a[[#pathtrail]]%0a!!! Path trail[[#path-trail]]%0a%0a[@^|[[TrailIndexPage]]|^@] treats the list levels as a hierarchy and displays the "path" to reach the current page (i.e., a "breadcrumb" trail). In the example trail above, the markup [@^|TrailIndexPage|^@] on [@TrailPage4@] would display as "[=TrailIndexPage | TrailPage2 | TrailPage4=]".%0a%0aWiki administrators can change the trail separator of the "path" trail ( [@^|[[TrailIndexPage]]|^@] ) from the default | by setting the variable $TrailPathSep in the ''config.php'' file. For instance $TrailPathSep = ' > '; will output "[=TrailIndexPage > TrailPage2 > TrailPage4=]".%0a%0a[[#circular-trails]]%0a!! Circular trails%0a%0aTypically, a trail is a linear list with a first and a last page. However, the trail can be made "circular" by repeating the first page as the last item in the trail index:%0a%0a->[@%0a * [[TrailPage1]]%0a * [[TrailPage2]]%0a ...%0a * [[TrailPageN]]%0a * [[TrailPage1]]%0a@]%0a%0aIf the trail index page is intended to be read by others, the last item can be made invisible inside an [@(:if false:)@] block:%0a%0a->[@%0a * [[TrailPage1]]%0a * [[TrailPage2]]%0a ...%0a * [[TrailPageN]]%0a (:if false:)%0a * [[TrailPage1]]%0a (:ifend:)%0a@]%0a%0a[[#crossgroup]]%0a!! Cross Group Trails%0aBefore version 2.2.1, if your trail contains pages in different groups, it should use full [=[[Group.Name]]=] links instead of just [=[[Name]]=].%0a%0a!! Other notes%0a* There is no space between @@%3c|@@ and @@[=[[link]]=]@@ and @@|>@@; same for the other trail markups.%0a* Note that non-existing pages will appear in the WikiTrail as links.%0a%0a[[#trailstyle]]%0a!!! Trail style%0aPmWiki encapsulates the trail with a ''wikitrail'' css class. %0aThis allows the wiki trail to be [[LocalCustomizations | customised]] by defining CSS for the ''wikitrail'' in the ''local.css'' file.%0a%0a%0a[[#trailpagelists]]%0a!!! Trail in [[page lists]]%0aTrails from a single page can only be displayed using the pagelist [[PmWiki/PageLists#pagelisttrail|trail]] parameter. For example%0a(:markup class="horiz":)%0a(:pagelist trail=PmWiki/WikiTrails fmt=PmWiki.WikiTrails#traillist order=random count=3:)%0a(:markupend:)%0a%0a!!!A simple example of a WikiTrail%0a%0a1) On the TrailIndexPage:%0a%0a[@%0a* [[MyTrailPage1]]%0a* [[MyTrailPage2]]%0a* [[MyTrailPage3]]%0a@]%0a%0a2) On the pages MyTrailPage1, 2, and 3:%0a%0a[@%0a%3c%3c|[[TrailIndexPage]]|>>%0a@]%0a%0a>>comment%3c%3c%0a[[#traillist]]%0a%25font-size:small green%25> [[{=$FullName}|{=$Groupspaced}.{=$Namespaced}]] %3c%0a[[#traillistend]]%0a>>%3c%3c%0a%0a!! Questions%0a[[#faq]]%0a>>faq%3c%3c%0aQ: What's the difference between a [[[[PmWiki/PageLists|PageList]] and a WikiTrail?%0aA: The pagelist directive dynamically generates a list of pages. There are many ways to generate the list, including using a WikiTrail as the source. The pagelist directive then displays the pages that match the criteria using an optional template - for example displaying each page name on a separate line as a link or including the entire content. The pagelist directive currently does not have built-in navigation markup that you can put on the pages in the list. By contrast, WikiTrails are simply specified via links on an "index" page and you ''can'' put previous-next navigation markup on each page. The two serve very different purposes. WikiTrails are useful for specifying the pages in [[PmWiki/WebFeeds|web feeds]], for creating a "tour" through a predefined set of pages, and many other things.%0a +time=1244808605 Index: wikilib.d/PmWiki.ConditionalMarkup =================================================================== --- wikilib.d/PmWiki.ConditionalMarkup (.../pmwiki-2.2.1) (revision 2344) +++ wikilib.d/PmWiki.ConditionalMarkup (.../pmwiki-2.2.2) (revision 2344) @@ -1,11 +1,11 @@ -version=pmwiki-2.2.0 ordered=1 urlencoded=1 -agent=Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.19) Gecko/20081216 Ubuntu/8.04 (hardy) Firefox/2.0.0.19 +version=pmwiki-2.2.1 ordered=1 urlencoded=1 +agent=Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7 author=Petko charset=ISO-8859-1 -csum="if attachments" : current page has one or more attachments -host=81.65.14.164 +csum=fix beta (2.2.beta66) +host=86.69.109.11 name=PmWiki.ConditionalMarkup -rev=136 +rev=140 targets=PmWiki.ReleaseNotes,PmWiki.ChangeLog,PmWiki.AuthUser,PmWiki.WikiTrails,Site.PageListTemplates,PmWiki.PageVariables -text=(:Summary:The if directive allows portions of a page to be included or excluded from rendering:)%0a%25define=indent block margin-left=2em%25%0a(:Audience: authors, admins (advanced) :)%0a!! Using the [=(:if:)=] Directive%0aThe [@(:if:)@] directive allows portions of a page to be included or %0aexcluded from rendering. The generic forms of the [@(:if:)@] directive are%0a%0a-> [@(:if cond param:) body (:ifend:)@]%0a-> [@(:if cond param:) body (:else:) body (:ifend:)@]%0a-> [@(:if cond param:) body (:elseif cond param:) body (:ifend:)@] '^see [[PmWiki/ReleaseNotes#elseifelse|#]] [[PmWiki/ChangeLog#beta32|#]]^'%0a%0awhere "cond" names a condition to be tested (described below), and "param" %0ais a parameter or other argument to the condition.%0aConditions may be nested (from beta 66).%0a%0aThe built-in conditions include:%0a%0a(:table class='indent' border=0 cellpadding=0 cellspacing=0 valign=top:)%0a(:cellnr:)[@(:if name PAGENAME:)@]%0a(:cell:) - %0a(:cell:)current page is named "[@PAGENAME@]"%0a(:cellnr:)[@(:if group GROUPNAME:)@]%0a(:cell:) - %0a(:cell:)current group is named "[@GROUPNAME@]"%0a(:cellnr:)[@(:if auth LEVEL PAGENAME:)@]%0a(:cell:) - %0a(:cell:)viewer is authorized - meaning "what they are allowed to do" - matches a "[@LEVEL@]" where [@LEVEL@] can be: [@read@], [@edit@], [@upload@], [@attr@] or [@admin@]; [@PAGENAME@] is optional.%0a(:cellnr:)[@(:if authid:)@]%0a(:cell:) - %0a(:cell:)current viewer is authenticated - meaning they have proven who they are via login - to use this the wiki must include recipe [[PmWiki/AuthUser|AuthUser]] or others which set the [@$AuthId@] variable.%0a(:cellnr:)[@(:if enabled InvalidLogin:)@]%0a(:cell:) - %0a(:cell:)username and password not authenticated%0a(:cellnr:)[@(:if true:)@]%0a(:cell:) - %0a(:cell:)always include text%0a(:cellnr:)[@(:if false:)@]%0a(:cell:) - %0a(:cell:)always exclude text (same as a comment)%0a(:cellnr:)[@(:if attachments:)@]%0a(:cell:) - %0a(:cell:)current page has one or more attachments%0a(:cellnr:)[@(:if date DATE VALUE:)@]%0a(:cell:) - %0a(:cell:)[@DATE@] may be year-month. year-month-day is optional. %0aEvaluates to true if [@VALUE@] is within [@DATE@] ("now" or "today" is assumed for VALUE. VALUE may be omitted, as in the following examples.) (Note that [@VALUE@] can be a recognizable date via strtotime() whereas DATE [or DATE1 and DATE2 below] have a more fixed format which explicitly must exclude spaces. Any spaces in DATE1 or DATE2 cause unpredictable results.)%0a(:cellnr:)[@(:if date DATE..:)@]%0a(:cell:) - %0a(:cell:)true if current date is [@DATE@] or later (unlimited)%0a(:cellnr:)[@(:if date DATE1..DATE2:)@]%0a(:cell:) - %0a(:cell:)true if current date is in range [@DATE1@] to [@DATE2@] (inclusive) %0a%25green newwin%25[-''dates are in [[http://w3.org/QA/Tips/iso-date|standard]] format yyyy-mm-dd or yyyymmdd or yyyymmddhhmm (but see comment above on format of VALUE)''-]%0a[[%3c%3c]][-Note the ".." cannot have leading or trailing spaces.-]%0a(:cellnr:)[@(:if enabled VAR:)@]%0a(:cell:) - %0a(:cell:)true if PHP VAR is true%0a(:cellnr:)[@(:if enabled AuthPw:)@]%0a(:cell:) - %0a(:cell:)true if user has entered any password during the current browser session.%0a- This does not mean the user has entered the correct password, just that they entered one.%0a(:cellnr:)[@(:if equal STRING1 STRING2:)@]%0a(:cell:) - %0a(:cell:)true if [@STRING1@] equals [@STRING2@], use quotes if the string or string variable contains spaces, eg [@"MY STRING"@]%0a(:cellnr:)[@(:if match REG_EXPRESSION:)@]%0a(:cell:) - %0a(:cell:)true if current page name matches the regular expression%0a(:cellnr:)[@(:if exists PAGENAME:)@]%0a(:cell:) - %0a(:cell:)true if the page ''pagename'' exists%0a(:cellnr:)[@(:if action ACTION:)@]%0a(:cell:) - %0a(:cell:)true if the action ?action=ACTION (edit, print, ...) is currently permitted. To test what the current action being requested is, use [@(:if equal {$Action} ACTION:)@].%0a(:cellnr:)[@(:if ontrail WikiTrailPage ThisPage:)@]%0a(:cell:) - %0a(:cell:)true if ThisPage is in a list used as a [[wiki trails | trail]] on WikiTrailPage%0a(:tableend:)%0a%0aThe name and group conditionals will work even for an included page, as the "name" and "group" conditionals always check the currently displayed page, as opposed to the page that the markup appears in.%0a%0aNegated forms of conditions also work:%0a%0a(:table class='indent' border=0 cellpadding=0 cellspacing=0 valign=top:)%0a(:cellnr:)[@(:if !attachments:)@]%0a(:cell:) - %0a(:cell:)this page has no attachments%0a(:cellnr colspan=3:) %0a(:cellnr:)[@(:if ! name PAGENAME:)@]%0a(:cell rowspan=3:)%0a(:cell rowspan=3 valign=middle:)current page is NOT named "[@PAGENAME@]"%0a(:cellnr:)[@(:if name -PAGENAME :)@]%0a(:cell:)%0a(:cellnr:)[@(:if name !PAGENAME :)@]%0a(:tableend:)%0a%0a%0a!!! Using wildcard placeholders(:if false:)%25green%25[-(new for pmwiki 2.1.beta21)-]:(:ifend:)%0a%0aThe character [@*@] can be used as a wildcard to represent any character, zero, one, or multiple times.\\%0aThe character [@?@] can be used as a wildcard to represent any character exactly once.\\%0aWildcard characters ([@*@] and [@?@]) can be used with the ''name'' and ''group'' conditional markups, thus:%0a%0a(:table class='indent' border=0 cellpadding=0 cellspacing=0 valign=top:)%0a(:cellnr:)[@(:if name PmCal.2005* :)@]%0a(:cell:) - %0a(:cell:)current page is in group PmCal and begins with 2005%0a(:cellnr:)[@(:if group PmWiki* :)@]%0a(:cell:) - %0a(:cell:)current page is in group PmWiki or a group beginning with PmWiki%0a(:cellnr:)[@(:if name Profiles.*,-Profiles.Profiles :)@]%0a(:cell:) - %0a(:cell:)current page is in group [@Profiles@] but not [@Profiles.Profiles@]%0a(:tableend:)%0a%0a%0a!!! Use with [[Site/page list templates]]%0aConditional markup is used extensively with [[Site/page list templates]].%0a%0aUse with page variables:%0a-> = current item%0a-> %3c previous item%0a-> > next item%0a%0aConditionals used to structure pagelist output:%0a [@(:if equal {%3c$Group}:)@] At beginning of list%0a [@(:if equal {>$Group}:)@] At end of list%0a [@(:if ! equal {=$Group} {%3c$Group}:)@] First item in group%0a [@(:if ! equal {=$Group} {>$Group}:)@] Last item in group%0a%0a!!! Combining conditions%0aConditions (as previously defined) may be combined into more complex conditional expressions using one of these three equivalent forms:%0a%0a->[@%0a(:if expr EXPRESSION :)%0a(:if [ EXPRESSION ] :)%0a(:if ( EXPRESSION ) :)@]%0a%0aConditions are combined into expressions with boolean operators and brackets. In the next table, A and B are either regular conditions or (round-)bracketed sub-expressions of regular conditions:%0a%0a>>indent%3c%3c%0a|| border=1 cellpadding=2 cellspacing=0%0a||! Expression ||! Operator ||! Result ||%0a|| [@A and B@] || And ||TRUE if both A and B are TRUE.||%0a|| [@A or B@] || Or ||TRUE if either A or B is TRUE.||%0a|| [@A xor B@] || Xor ||TRUE if either A or B is TRUE, but not both.||%0a|| [@! A@] || Not ||TRUE if A is not TRUE.||%0a|| [@A && B@] || And ||TRUE if both A and B are TRUE.||%0a|| [@A || B@] || Or ||TRUE if either A or B is TRUE.||%0a>>%3c%3c%0a%0aExample%0a->[@%0a(:if [ name SomePage and group SomeGroup ]:) equivalent to (:if name SomeGroup.SomePage:)@]%0a%0aNota:%0a* Spaces around operators and brackets are required.%0a* No specific feedback is given for syntax errors or unbalanced brackets.%0a* Use round brackets (not square) for nested expressions.%0a%0aThus, the following is a valid way of building an expression that shows the following contents only when the user is either the administrator, or is logged in and the time is later than the given date:%0a%0a->[@(:if [ auth admin || ( authid && date 2006-06-01 ) ] :)@]%0a%0aNesting with square brackets will silently fail to work as expected:%0a%0a->[@(:if [ auth admin || [ authid && date 2006-06-01 ] ] :) @]   %25red%25NOTE: Doesn't Work!%0a%0aA common use of these complex tests are for expressions like:%0a%0a->[@(:if expr auth admin || auth attr || auth edit :)@]%0a->[@[[Logout -> {$Name}?action=logout]]@]%0a->[@(:ifend:)@]%0a%0awhich provides a ''logout'' link only when the browser has admin, attr, or edit permissions.%0a%0a%25audience%25 admins (advanced)%0a!! Creating new conditions%0a%0aSee [[Cookbook:ConditionalMarkupSamples]].%0a%0aSee also [[PmWiki/PageVariables#specialreferences|special references]] for the use of [={*$Variables}=].%0a%0a>>faq%3c%3c [[#faq]]%0a%0a -time=1238142735 +text=(:Summary:The if directive allows portions of a page to be included or excluded from rendering:)%0a%25define=indent block margin-left=2em%25%0a(:Audience: authors, admins (advanced) :)%0a!! Using the [=(:if:)=] Directive%0aThe [@(:if:)@] directive allows portions of a page to be included or %0aexcluded from rendering. The generic forms of the [@(:if:)@] directive are%0a%0a-> [@(:if cond param:) body (:ifend:)@]%0a-> [@(:if cond param:) body (:else:) body (:ifend:)@]%0a-> [@(:if cond param:) body (:elseif cond param:) body (:ifend:)@] '^see [[PmWiki/ReleaseNotes#elseifelse|#]] [[PmWiki/ChangeLog#beta32|#]]^'%0a%0awhere "cond" names a [[#built-in-conditions | condition to be tested]], and "param" is a parameter or other argument to the condition.%0a%0a!! Markup Shortcut%0aYou can also use an abbreviated form of [@(:ifend:)@], [@(:if:)@] for brevity:%0a-> [@(:if cond1:) cond1 is true (:if:)@]%0a-> [@(:if cond1:) cond1 is true (:if cond2:) cond2 is true (:if:)@]%0aThe latter is identical to :%0a-> [@(:if cond1:) cond1 is true (:ifend:)(:if cond2:) cond2 is true (:ifend:)@]%0a%0a!! Built-in Conditions [[#built-in-conditions]]%0aThe built-in conditions include:%0a%0a(:table class='indent' border=0 cellpadding=0 cellspacing=0 valign=top:)%0a(:cellnr:)[@(:if name PAGENAME:)@]%0a(:cell:) - %0a(:cell:)current page is named "[@PAGENAME@]"%0a(:cellnr:)[@(:if group GROUPNAME:)@]%0a(:cell:) - %0a(:cell:)current group is named "[@GROUPNAME@]"%0a(:cellnr:)[@(:if auth LEVEL PAGENAME:)@]%0a(:cell:) - %0a(:cell:)viewer is authorized - meaning "what they are allowed to do" - matches a "[@LEVEL@]" where [@LEVEL@] can be: [@read@], [@edit@], [@upload@], [@attr@] or [@admin@]; [@PAGENAME@] is optional.%0a(:cellnr:)[@(:if authid:)@]%0a(:cell:) - %0a(:cell:)current viewer is authenticated - meaning they have proven who they are via login - to use this the wiki must include recipe [[PmWiki/AuthUser|AuthUser]] or others which set the [@$AuthId@] variable.%0a(:cellnr:)[@(:if enabled InvalidLogin:)@]%0a(:cell:) - %0a(:cell:)username and password not authenticated%0a(:cellnr:)[@(:if true:)@]%0a(:cell:) - %0a(:cell:)always include text%0a(:cellnr:)[@(:if false:)@]%0a(:cell:) - %0a(:cell:)always exclude text (same as a comment)%0a(:cellnr:)[@(:if attachments:)@]%0a(:cell:) - %0a(:cell:)current page has one or more attachments%0a(:cellnr:)[@(:if date DATE VALUE:)@]%0a(:cell:) - %0a(:cell:)[@DATE@] may be year-month. year-month-day is optional. %0aEvaluates to true if [@VALUE@] is within [@DATE@] ("now" or "today" is assumed for VALUE. VALUE may be omitted, as in the following examples.) (Note that [@VALUE@] can be a recognizable date via strtotime() whereas DATE [or DATE1 and DATE2 below] have a more fixed format which explicitly must exclude spaces. Any spaces in DATE1 or DATE2 cause unpredictable results.)%0a(:cellnr:)[@(:if date DATE..:)@]%0a(:cell:) - %0a(:cell:)true if current date is [@DATE@] or later (unlimited)%0a(:cellnr:)[@(:if date DATE1..DATE2:)@]%0a(:cell:) - %0a(:cell:)true if current date is in range [@DATE1@] to [@DATE2@] (inclusive) %0a%25green newwin%25[-''dates are in [[http://w3.org/QA/Tips/iso-date|standard]] format yyyy-mm-dd or yyyymmdd or yyyymmddhhmm (but see comment above on format of VALUE)''-]%0a[[%3c%3c]][-Note the ".." cannot have leading or trailing spaces.-]%0a(:cellnr:)[@(:if enabled VAR:)@]%0a(:cell:) - %0a(:cell:)true if PHP VAR is true%0a(:cellnr:)[@(:if enabled AuthPw:)@]%0a(:cell:) - %0a(:cell:)true if user has entered any password during the current browser session.%0a- This does not mean the user has entered the correct password, just that they entered one.%0a(:cellnr:)[@(:if equal STRING1 STRING2:)@]%0a(:cell:) - %0a(:cell:)true if [@STRING1@] equals [@STRING2@], use quotes if the string or string variable contains spaces, eg [@"MY STRING"@]%0a(:cellnr:)[@(:if match REG_EXPRESSION:)@]%0a(:cell:) - %0a(:cell:)true if current page name matches the regular expression%0a(:cellnr:)[@(:if exists PAGENAME:)@]%0a(:cell:) - %0a(:cell:)true if the page ''pagename'' exists%0a(:cellnr:)[@(:if action ACTION:)@]%0a(:cell:) - %0a(:cell:)true if the action ?action=ACTION (edit, print, ...) is currently permitted. To test what the current action being requested is, use [@(:if equal {$Action} ACTION:)@].%0a(:cellnr:)[@(:if ontrail WikiTrailPage ThisPage:)@]%0a(:cell:) - %0a(:cell:)true if ThisPage is in a list used as a [[wiki trails | trail]] on WikiTrailPage%0a(:tableend:)%0a%0aThe name and group conditionals will work even for an included page, as the "name" and "group" conditionals always check the currently displayed page, as opposed to the page that the markup appears in.%0a%0a!! Negated Conditions%0aNegated forms of conditions also work:%0a%0a(:table class='indent' border=0 cellpadding=0 cellspacing=0 valign=top:)%0a(:cellnr:)[@(:if !attachments:)@]%0a(:cell:) - %0a(:cell:)this page has no attachments%0a(:cellnr colspan=3:) %0a(:cellnr:)[@(:if ! name PAGENAME:)@]%0a(:cell rowspan=3:)%0a(:cell rowspan=3 valign=middle:)current page is NOT named "[@PAGENAME@]"%0a(:cellnr:)[@(:if name -PAGENAME :)@]%0a(:cell:)%0a(:cellnr:)[@(:if name !PAGENAME :)@]%0a(:tableend:)%0a%0a!! Nesting Conditions [[#nested-conditions]]%0aConditions may be nested (from 2.2.beta 66).%0a%0aNested [@(:if:)@] works the same way as nested [@(:div:)@]. To have nested conditionals you need to number the if, and the matching else/ifend:%0a->[@%0a(:if cond1:)%0a cond1 is true%0a (:if2 cond2:)%0a cond1 and cond2 are true%0a (:else2:)%0a cond1 is true, cond2 is not%0a (:if2end:)%0a(:else:)%0a cond1 is false, cond2 testing was skipped%0a(:ifend:)%0a@]%0a[-''Spaces were added for better readability.''-]%0a%0a!! Using wildcard placeholders(:if false:)%25green%25[-(new for pmwiki 2.1.beta21)-]:(:ifend:)%0aThe character [@*@] can be used as a wildcard to represent any character, zero, one, or multiple times.\\%0aThe character [@?@] can be used as a wildcard to represent any character exactly once.\\%0aWildcard characters ([@*@] and [@?@]) can be used with the ''name'' and ''group'' conditional markups, thus:%0a%0a(:table class='indent' border=0 cellpadding=0 cellspacing=0 valign=top:)%0a(:cellnr:)[@(:if name PmCal.2005* :)@]%0a(:cell:) - %0a(:cell:)current page is in group PmCal and begins with 2005%0a(:cellnr:)[@(:if group PmWiki* :)@]%0a(:cell:) - %0a(:cell:)current page is in group PmWiki or a group beginning with PmWiki%0a(:cellnr:)[@(:if name Profiles.*,-Profiles.Profiles :)@]%0a(:cell:) - %0a(:cell:)current page is in group [@Profiles@] but not [@Profiles.Profiles@]%0a(:tableend:)%0a%0a!! Use with [[Site/page list templates]]%0aConditional markup is used extensively with [[Site/page list templates]].%0a%0aUse with page variables:%0a-> = current item%0a-> %3c previous item%0a-> > next item%0a%0aConditionals used to structure pagelist output:%0a [@(:if equal {%3c$Group}:)@] At beginning of list%0a [@(:if equal {>$Group}:)@] At end of list%0a [@(:if ! equal {=$Group} {%3c$Group}:)@] First item in group%0a [@(:if ! equal {=$Group} {>$Group}:)@] Last item in group%0a%0a!! Combining conditions%0aConditions (as previously defined) may be combined into more complex conditional expressions using one of these three equivalent forms:%0a%0a->[@%0a(:if expr EXPRESSION :)%0a(:if [ EXPRESSION ] :)%0a(:if ( EXPRESSION ) :)@]%0a%0aConditions are combined into expressions with boolean operators and brackets. In the next table, A and B are either regular conditions or (round-)bracketed sub-expressions of regular conditions:%0a%0a>>indent%3c%3c%0a|| border=1 cellpadding=2 cellspacing=0%0a||! Expression ||! Operator ||! Result ||%0a|| [@A and B@] || And ||TRUE if both A and B are TRUE.||%0a|| [@A or B@] || Or ||TRUE if either A or B is TRUE.||%0a|| [@A xor B@] || Xor ||TRUE if either A or B is TRUE, but not both.||%0a|| [@! A@] || Not ||TRUE if A is not TRUE.||%0a|| [@A && B@] || And ||TRUE if both A and B are TRUE.||%0a|| [@A || B@] || Or ||TRUE if either A or B is TRUE.||%0a>>%3c%3c%0a%0aExample%0a->[@%0a(:if [ name SomePage and group SomeGroup ]:) equivalent to (:if name SomeGroup.SomePage:)@]%0a%0aNote:%0a* Spaces around operators and brackets are required.%0a* No specific feedback is given for syntax errors or unbalanced brackets.%0a* Use round brackets (not square) for nested expressions.%0a%0aThus, the following is a valid way of building an expression that shows the following contents only when the user is either the administrator, or is logged in and the time is later than the given date:%0a%0a->[@(:if [ auth admin || ( authid && date 2006-06-01 ) ] :)@]%0a%0aNesting with square brackets will silently fail to work as expected:%0a%0a->[@(:if [ auth admin || [ authid && date 2006-06-01 ] ] :) @]   %25red%25NOTE: Doesn't Work!%0a%0aA common use of these complex tests are for expressions like:%0a%0a->[@(:if expr auth admin || auth attr || auth edit :)@]%0a->[@[[Logout -> {$Name}?action=logout]]@]%0a->[@(:ifend:)@]%0a%0awhich provides a ''logout'' link only when the browser has admin, attr, or edit permissions.%0a%0a%25audience%25 admins (advanced)%0a!! Creating new conditions%0aSee [[Cookbook:ConditionalMarkupSamples]].%0a%0aSee also [[PmWiki/PageVariables#specialreferences|special references]] for the use of [={*$Variables}=].%0a%0a>>faq%3c%3c [[#faq]] +time=1245515846 Index: wikilib.d/PmWiki.AvailableActions =================================================================== --- wikilib.d/PmWiki.AvailableActions (.../pmwiki-2.2.1) (revision 2344) +++ wikilib.d/PmWiki.AvailableActions (.../pmwiki-2.2.2) (revision 2344) @@ -1,11 +1,11 @@ -version=pmwiki-2.2.0 ordered=1 urlencoded=1 -agent=Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.19) Gecko/20081216 Ubuntu/8.04 (hardy) Firefox/2.0.0.19 -author=Petko +version=pmwiki-2.2.1 ordered=1 urlencoded=1 +agent=Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 FirePHP/0.2.4 +author=Frank charset=ISO-8859-1 -csum=+ ?action=mini -host=81.65.14.164 +csum= +host=95.36.0.159 name=PmWiki.AvailableActions -rev=103 -targets=PmWiki.Passwords,PmWiki.PageHistory,PmWiki.BasicEditing,PmWiki.RefCount,PmWiki.Search,PmWiki.WebFeeds,PmWiki.SitePreferences,PmWiki.Uploads,PmWiki.AnalyzeResults,PmWiki.CustomMarkup,PmWiki.SiteAnalyzer,PmWiki.UrlApprovals,PmWiki.WikiFarms -text=(:Summary: All PmWiki page actions (?action=):)%0a(:div class="rfloat frame" style="font-size:smaller; clear:right;" :)%0a!!!! Table of contents%0a* [[#defaultactions| Default actions]]%0a* [[#enablediag| Enable diag actions]]%0a* [[#scriptactions | Script actions]]%0a* [[#cookbook | Cookbook actions]]%0a(:divend:)%0a%0a[[#defaultactions]]%0a!! Default Actions%0a%0a[[#attr]]%0a:?action='''attr''': displays dialog for setting/changing password of the specified page, see [[PmWiki/passwords]], see also $EnablePostAttrClearSession if you do not want to have the session cleared after validating change [-{PmWiki/Passwords$:Summary}-]%0a%0a[[#browse]]%0a:?action='''browse''': display the specified page (default action if no [@?action=@] is present)%0a%0a[[#crypt]]%0a:?action='''crypt''': displays a form for generating hashed [[Passwords | passwords]] out of clear text for usage in your config.php%0a%0a[[#diff]]%0a:?action='''diff''': show a change history of the specified page, see [[PmWiki/page history]] [-{PmWiki/PageHistory$:Summary}-]%0a%0a[[#download]]%0a:?action='''download'''&upname=''file.ext'': retrieve the page's attachment named ''file.ext'', see $EnableDirectDownload%0a%0a[[#edit]]%0a:?action='''edit''': edit the specified page, see [[PmWiki/basic editing]] [-{PmWiki/BasicEditing$:Summary}-]%0a%0a[[#login]]%0a:?action='''login''': prompt visitor for username/password%0a%0a[[#logout]]%0a:?action='''logout''': remove author, password, and login information%0a%0a[[#print]]%0a:?action='''print''': display the specified page using the skin specified by $ActionSkin['print']%0a%0a[[#refcount]]%0a:?action='''refcount''': bring up the reference count form, which allows the user to generate a list of links (all, missing, existing or orphaned) in or from specified groups. See [[Ref Count]] [-{PmWiki/RefCount$:Summary}-]. Part of the core distribution but must be enabled by the administrator.%0a%0a[[#search]]%0a:?action='''search''': displays searchbox on current page, see [[PmWiki/search]] [-{PmWiki/Search$:Summary}-]%0a%0a:?action='''search'''&q=''searchterm'': performs search with ''searchterm'' and displays results on current page%0a%0a[[#source]]%0a:?action='''source''': show page source%0a%0a[[#feed]]%0a:?action='''atom''':%0a:?action='''rdf''':%0a:?action='''rss''':%0a:?action='''dc''': If [[web feeds]] are enabled, returns a syndication feed based on the contents of the page or other options provided by the url, see [[PmWiki/web feeds]] [-{PmWiki/WebFeeds$:Summary}-]%0a%0a[[#setprefs]]%0a:?'''setprefs'''=SomeGroup.CustomPreferences: sets cookie to custom preferences page. See [[PmWiki/site preferences]] [-{PmWiki/SitePreferences$:Summary}-]%0a%0a[[#upload]]%0a:?action='''upload''': display a form to upload an attachment for the current group, see [[PmWiki/uploads]] [-{Cookbook/Uploads$:Summary}-]%0a[[#defaultactionsend]]%0a----%0a[[#enablediag]]%0a!! Actions enabled by $EnableDiag%0a[[#BEGENABLEDIAG]]%0aThe following actions are available only if you [[PmWiki/AnalyzeResults#ActionDiag_enabled|set]] [@$EnableDiag = 1@] in your configuration file. They can be used for debugging and should not be set in a production environment.%0a%0a:?action='''ruleset''': displays a list of all markups in 3 columns:%0a** column 1 = markup-name (1. parameter of markup() )%0a** column 2 = when will rule apply (2. parameter of markup() )%0a** column 3 = PmWiki's internal sort key (derived from #2)%0a->(see [[Custom Markup]] [-{PmWiki/CustomMarkup$:Summary}-]).%0a->To see more than what [@?action=ruleset@] gives you, apply the [[Cookbook:MarkupRulesetDebugging]] recipe: it can also show the pattern and the replacement strings.%0a** doesn't make use of PmWiki's authorization mechanisms.%0a%0a[[#phpinfo]]%0a:?action='''phpinfo''': displays the output of phpinfo() and exits. no page will be processed%0a** doesn't make use of PmWiki's authorization mechanisms.%0a%0a[[#diag]]%0a:?action='''diag''': displays a dump of all global vars and exits. no page will be processed%0a** doesn't make use of PmWiki's authorization mechanisms.%0a%0a[[#ENDENABLEDIAG]]%0a----%0a[[#scriptactions]]%0a!! Actions enabled by PmWiki Scripts%0a%0a[[#analyse]]%0a:?action='''analyze''': see [[PmWiki/Site Analyzer]] [-{PmWiki/SiteAnalyzer$:Summary}-] and [[PmWiki/Analyze Results]] [-{PmWiki/AnalyzeResults$:Summary}-]%0a%0a[[#approvesites]]%0a:?action='''approvesites''': see [[PmWiki/Url approvals]] [-{PmWiki/UrlApprovals$:Summary}-]%0a** doesn't make use of PmWiki's authorization mechanisms.%0a%0a[[#analyseend]]%0a----%0a[[#cookbook]]%0a!! Actions enabled by [[Cookbook(:.)]] recipes%0a%0a:?action='''admin''': see [[Cookbook:UserAuth2]] [-{Cookbook/UserAuth2$:Summary}-]%0a%0a:?action='''backup''': see [[Cookbook:BackupPages]] [-{Cookbook/BackupPages$:Summary}-]%0a%0a:?action='''clearsky''': see [[Cookbook:SearchCloud]] [-{Cookbook/SearchCloud$:Summary}-]%0a%0a:?action='''comment''': see [[Cookbook:CommentBox]] [-{Cookbook/CommentBox$:Summary}-]%0a%0a:?action='''comments''': see [[Cookbook:Comments]] [-{Cookbook/Comments$:Summary}-]%0a%0a:?action='''comment-rss''': see [[Cookbook:CommentDb]] [-{Cookbook/CommentDb$:Summary}-]%0a%0a:?action='''convert''': see [[Cookbook:ROEPatterns]] [-{Cookbook/ROEPatterns$:Summary}-]%0a%0a:?action='''converttable''': [[Cookbook:ConvertTable]] [-{Cookbook/ConvertTable$:Summary}-]%0a%0a:?action='''downloaddeleted''':%0a:?action='''delattach''':%0a:?action='''undelattach''': [[Cookbook:Attachtable]] [-{Cookbook/Attachtable$:Summary}-]%0a%0a:?action='''delete''': see [[Cookbook:DeleteAction]] [-{Cookbook/DeleteAction$:Summary}-]%0a%0a:?action='''discuss''': see [[Cookbook:DiscussionTab]] [-{Cookbook/DiscussionTab$:Summary}-]%0a%0a:?action='''downloadman''': see [[Cookbook:DownloadManager]] [-{Cookbook/DownloadManager$:Summary}-]%0a%0a:?action='''expirediff''': see [[Cookbook:ExpireDiff]] [-{Cookbook/ExpireDiff$:Summary}-]%0a%0a:?action='''import''': see [[Cookbook:ImportText]] [-{Cookbook/ImportText$:Summary}-]%0a%0a:?action='''PageUrl''': see [[Cookbook:CommentBoxPlus]] [-{Cookbook/CommentBoxPlus$:Summary}-]%0a%0a:?action='''pageindex''': see [[Cookbook:ListCategories]] [-{Cookbook/ListCategories$:Summary}-]%0a%0a:?action='''pdf''': see [[Cookbook:GeneratePDF]] [-{Cookbook/GeneratePDF$:Summary}-] or [[Cookbook:PmWiki2PDF]] [-{Cookbook/PmWiki2PDF$:Summary}-]%0a%0a:?action='''publish''': see [[Cookbook:PublishPDF]] [-{Cookbook/PublishPDF$:Summary}-]%0a%0a:?action='''purgeqns''': see [[Cookbook:ASCIIMath]] [-{Cookbook/ASCIIMath$:Summary}-]%0a%0a:?action='''pwchange''': see [[Cookbook:UserAuth2]] [-{Cookbook/UserAuth2$:Summary}-]%0a%0a:?action='''imgtpl''': (the ''imgtpl'' action is called automatically and should not be called by a link in a wiki page)%0a:?action='''createthumb''': (the ''createthumb'' action is called automatically and should not be called by a link in a wiki page)%0a:?action='''mini''': (this action is called automatically and should not be called by a link in a wiki page)%0a:?action='''purgethumbs''': see [[Cookbook:ThumbList]] [-{Cookbook/ThumbList$:Summary}-] \\%0a see [[Cookbook:Mini]] [-{Cookbook/Mini$:Summary}-] %0a%0a:?action='''recipecheck''': see [[Cookbook:RecipeCheck]] [-{Cookbook/RecipeCheck$:Summary}-]%0a%0a:?action='''regen''': see [[Cookbook:PageRegenerate]] [-{Cookbook/PageRegenerate$:Summary}-]%0a%0a:?action='''rename''':%0a:?action='''links''': see [[Cookbook:RenamePage]] [-{Cookbook/RenamePage$:Summary}-]%0a%0a:?action='''share''':%0a:?action='''unshare''': see [[Cookbook:SharedPages]] [-{Cookbook/SharedPages$:Summary}-]%0a%0a:?action='''sitemapaddgroups''':%0a:?action='''sitemapupdate''': see [[Cookbook:Sitemapper]] [-{Cookbook/Sitemapper$:Summary}-]%0a%0a:?action='''totalcounter''': see [[Cookbook:TotalCounter]] [-{Cookbook/TotalCounter$:Summary}-]%0a%0a:?action='''trash''':%0a:?action='''untrash''': see [[Cookbook:Trash]] [-{Cookbook/Trash$:Summary}-]%0a%0a:?action='''webadmin''': see [[Cookbook:WebAdmin]] [-{Cookbook/WebAdmin$:Summary}-]%0a%0a:?action='''zap''': see [[Cookbook:ZAP]] [-{Cookbook/ZAP$:Summary}-]%0a[[#cookbookend]]%0a%0a -time=1234617576 +rev=104 +targets=PmWiki.Passwords,PmWiki.PageHistory,PmWiki.BasicEditing,PmWiki.RefCount,PmWiki.Search,PmWiki.WebFeeds,PmWiki.SitePreferences,PmWiki.Uploads,PmWiki.AnalyzeResults,PmWiki.CustomMarkup,PmWiki.SiteAnalyzer,PmWiki.UrlApprovals,PmWiki.CustomActions,PmWiki.WikiFarms +text=(:Summary: All PmWiki page actions (?action=):)%0a(:div class="rfloat frame" style="font-size:smaller; clear:right;" :)%0a!!!! Table of contents%0a* [[#defaultactions| Default actions]]%0a* [[#enablediag| Enable diag actions]]%0a* [[#scriptactions | Script actions]]%0a* [[#cookbook | Cookbook actions]]%0a(:divend:)%0a%0a[[#defaultactions]]%0a!! Default Actions%0a%0a[[#attr]]%0a:?action='''attr''': displays dialog for setting/changing password of the specified page, see [[PmWiki/passwords]], see also $EnablePostAttrClearSession if you do not want to have the session cleared after validating change [-{PmWiki/Passwords$:Summary}-]%0a%0a[[#browse]]%0a:?action='''browse''': display the specified page (default action if no [@?action=@] is present)%0a%0a[[#crypt]]%0a:?action='''crypt''': displays a form for generating hashed [[Passwords | passwords]] out of clear text for usage in your config.php%0a%0a[[#diff]]%0a:?action='''diff''': show a change history of the specified page, see [[PmWiki/page history]] [-{PmWiki/PageHistory$:Summary}-]%0a%0a[[#download]]%0a:?action='''download'''&upname=''file.ext'': retrieve the page's attachment named ''file.ext'', see $EnableDirectDownload%0a%0a[[#edit]]%0a:?action='''edit''': edit the specified page, see [[PmWiki/basic editing]] [-{PmWiki/BasicEditing$:Summary}-]%0a%0a[[#login]]%0a:?action='''login''': prompt visitor for username/password%0a%0a[[#logout]]%0a:?action='''logout''': remove author, password, and login information%0a%0a[[#print]]%0a:?action='''print''': display the specified page using the skin specified by $ActionSkin['print']%0a%0a[[#refcount]]%0a:?action='''refcount''': bring up the reference count form, which allows the user to generate a list of links (all, missing, existing or orphaned) in or from specified groups. See [[Ref Count]] [-{PmWiki/RefCount$:Summary}-]. Part of the core distribution but must be enabled by the administrator.%0a%0a[[#search]]%0a:?action='''search''': displays searchbox on current page, see [[PmWiki/search]] [-{PmWiki/Search$:Summary}-]%0a%0a:?action='''search'''&q=''searchterm'': performs search with ''searchterm'' and displays results on current page%0a%0a[[#source]]%0a:?action='''source''': show page source%0a%0a[[#feed]]%0a:?action='''atom''':%0a:?action='''rdf''':%0a:?action='''rss''':%0a:?action='''dc''': If [[web feeds]] are enabled, returns a syndication feed based on the contents of the page or other options provided by the url, see [[PmWiki/web feeds]] [-{PmWiki/WebFeeds$:Summary}-]%0a%0a[[#setprefs]]%0a:?'''setprefs'''=SomeGroup.CustomPreferences: sets cookie to custom preferences page. See [[PmWiki/site preferences]] [-{PmWiki/SitePreferences$:Summary}-]%0a%0a[[#upload]]%0a:?action='''upload''': display a form to upload an attachment for the current group, see [[PmWiki/uploads]] [-{Cookbook/Uploads$:Summary}-]%0a[[#defaultactionsend]]%0a----%0a[[#enablediag]]%0a!! Actions enabled by $EnableDiag%0a[[#BEGENABLEDIAG]]%0aThe following actions are available only if you [[PmWiki/AnalyzeResults#ActionDiag_enabled|set]] [@$EnableDiag = 1@] in your configuration file. They can be used for debugging and should not be set in a production environment.%0a%0a:?action='''ruleset''': displays a list of all markups in 3 columns:%0a** column 1 = markup-name (1. parameter of markup() )%0a** column 2 = when will rule apply (2. parameter of markup() )%0a** column 3 = PmWiki's internal sort key (derived from #2)%0a->(see [[Custom Markup]] [-{PmWiki/CustomMarkup$:Summary}-]).%0a->To see more than what [@?action=ruleset@] gives you, apply the [[Cookbook:MarkupRulesetDebugging]] recipe: it can also show the pattern and the replacement strings.%0a** doesn't make use of PmWiki's authorization mechanisms.%0a%0a[[#phpinfo]]%0a:?action='''phpinfo''': displays the output of phpinfo() and exits. no page will be processed%0a** doesn't make use of PmWiki's authorization mechanisms.%0a%0a[[#diag]]%0a:?action='''diag''': displays a dump of all global vars and exits. no page will be processed%0a** doesn't make use of PmWiki's authorization mechanisms.%0a%0a[[#ENDENABLEDIAG]]%0a----%0a[[#scriptactions]]%0a!! Actions enabled by PmWiki Scripts%0a%0a[[#analyse]]%0a:?action='''analyze''': see [[PmWiki/Site Analyzer]] [-{PmWiki/SiteAnalyzer$:Summary}-] and [[PmWiki/Analyze Results]] [-{PmWiki/AnalyzeResults$:Summary}-]%0a%0a[[#approvesites]]%0a:?action='''approvesites''': see [[PmWiki/Url approvals]] [-{PmWiki/UrlApprovals$:Summary}-]%0a** doesn't make use of PmWiki's authorization mechanisms.%0a%0a[[#analyseend]]%0a----%0a[[#cookbook]]%0a!! Actions enabled by [[Cookbook(:.)]] recipes%0a(more information about [[Custom Actions]])%0a%0a:?action='''admin''': see [[Cookbook:UserAuth2]] [-{Cookbook/UserAuth2$:Summary}-]%0a%0a:?action='''backup''': see [[Cookbook:BackupPages]] [-{Cookbook/BackupPages$:Summary}-]%0a%0a:?action='''clearsky''': see [[Cookbook:SearchCloud]] [-{Cookbook/SearchCloud$:Summary}-]%0a%0a:?action='''comment''': see [[Cookbook:CommentBox]] [-{Cookbook/CommentBox$:Summary}-]%0a%0a:?action='''comments''': see [[Cookbook:Comments]] [-{Cookbook/Comments$:Summary}-]%0a%0a:?action='''comment-rss''': see [[Cookbook:CommentDb]] [-{Cookbook/CommentDb$:Summary}-]%0a%0a:?action='''convert''': see [[Cookbook:ROEPatterns]] [-{Cookbook/ROEPatterns$:Summary}-]%0a%0a:?action='''converttable''': [[Cookbook:ConvertTable]] [-{Cookbook/ConvertTable$:Summary}-]%0a%0a:?action='''downloaddeleted''':%0a:?action='''delattach''':%0a:?action='''undelattach''': [[Cookbook:Attachtable]] [-{Cookbook/Attachtable$:Summary}-]%0a%0a:?action='''delete''': see [[Cookbook:DeleteAction]] [-{Cookbook/DeleteAction$:Summary}-]%0a%0a:?action='''discuss''': see [[Cookbook:DiscussionTab]] [-{Cookbook/DiscussionTab$:Summary}-]%0a%0a:?action='''downloadman''': see [[Cookbook:DownloadManager]] [-{Cookbook/DownloadManager$:Summary}-]%0a%0a:?action='''expirediff''': see [[Cookbook:ExpireDiff]] [-{Cookbook/ExpireDiff$:Summary}-]%0a%0a:?action='''import''': see [[Cookbook:ImportText]] [-{Cookbook/ImportText$:Summary}-]%0a%0a:?action='''PageUrl''': see [[Cookbook:CommentBoxPlus]] [-{Cookbook/CommentBoxPlus$:Summary}-]%0a%0a:?action='''pageindex''': see [[Cookbook:ListCategories]] [-{Cookbook/ListCategories$:Summary}-]%0a%0a:?action='''pdf''': see [[Cookbook:GeneratePDF]] [-{Cookbook/GeneratePDF$:Summary}-] or [[Cookbook:PmWiki2PDF]] [-{Cookbook/PmWiki2PDF$:Summary}-]%0a%0a:?action='''publish''': see [[Cookbook:PublishPDF]] [-{Cookbook/PublishPDF$:Summary}-]%0a%0a:?action='''purgeqns''': see [[Cookbook:ASCIIMath]] [-{Cookbook/ASCIIMath$:Summary}-]%0a%0a:?action='''pwchange''': see [[Cookbook:UserAuth2]] [-{Cookbook/UserAuth2$:Summary}-]%0a%0a:?action='''imgtpl''': (the ''imgtpl'' action is called automatically and should not be called by a link in a wiki page)%0a:?action='''createthumb''': (the ''createthumb'' action is called automatically and should not be called by a link in a wiki page)%0a:?action='''mini''': (this action is called automatically and should not be called by a link in a wiki page)%0a:?action='''purgethumbs''': see [[Cookbook:ThumbList]] [-{Cookbook/ThumbList$:Summary}-] \\%0a see [[Cookbook:Mini]] [-{Cookbook/Mini$:Summary}-] %0a%0a:?action='''recipecheck''': see [[Cookbook:RecipeCheck]] [-{Cookbook/RecipeCheck$:Summary}-]%0a%0a:?action='''regen''': see [[Cookbook:PageRegenerate]] [-{Cookbook/PageRegenerate$:Summary}-]%0a%0a:?action='''rename''':%0a:?action='''links''': see [[Cookbook:RenamePage]] [-{Cookbook/RenamePage$:Summary}-]%0a%0a:?action='''share''':%0a:?action='''unshare''': see [[Cookbook:SharedPages]] [-{Cookbook/SharedPages$:Summary}-]%0a%0a:?action='''sitemapaddgroups''':%0a:?action='''sitemapupdate''': see [[Cookbook:Sitemapper]] [-{Cookbook/Sitemapper$:Summary}-]%0a%0a:?action='''totalcounter''': see [[Cookbook:TotalCounter]] [-{Cookbook/TotalCounter$:Summary}-]%0a%0a:?action='''trash''':%0a:?action='''untrash''': see [[Cookbook:Trash]] [-{Cookbook/Trash$:Summary}-]%0a%0a:?action='''webadmin''': see [[Cookbook:WebAdmin]] [-{Cookbook/WebAdmin$:Summary}-]%0a%0a:?action='''zap''': see [[Cookbook:ZAP]] [-{Cookbook/ZAP$:Summary}-]%0a[[#cookbookend]]%0a%0a +time=1238492436 Index: wikilib.d/PmWiki.DocumentationIndex =================================================================== --- wikilib.d/PmWiki.DocumentationIndex (.../pmwiki-2.2.1) (revision 2344) +++ wikilib.d/PmWiki.DocumentationIndex (.../pmwiki-2.2.2) (revision 2344) @@ -2,10 +2,10 @@ agent=Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.19) Gecko/20081216 Ubuntu/8.04 (hardy) Firefox/2.0.0.19 author=Petko charset=ISO-8859-1 -csum=+PageList Templates -host=81.65.14.164 +csum= +host=86.69.109.11 name=PmWiki.DocumentationIndex -rev=371 +rev=372 targets=PmWiki.Introduction,PmWiki.BasicEditing,PmWiki.CreatingNewPages,PmWiki.Links,PmWiki.Images,PmWiki.TextFormattingRules,PmWiki.MarkupMasterIndex,PmWiki.Uploads,PmWiki.Tables,PmWiki.TableDirectives,PmWiki.WikiStyles,PmWiki.WikiStyleExamples,PmWiki.AccessKeys,PmWiki.PageDirectives,PmWiki.IncludeOtherPages,PmWiki.InterMap,PmWiki.ConditionalMarkup,PmWiki.PageVariables,PmWiki.PageTextVariables,PmWiki.MarkupExpressions,PmWiki.Forms,PmWiki.SimultaneousEdits,PmWiki.WikiStructure,PmWiki.WikiGroup,PmWiki.GroupHeaders,PmWiki.WikiTrails,PmWiki.PageHistory,PmWiki.Passwords,PmWiki.Categories,PmWiki.PageLists,PmWiki.DeletingPages,PmWiki.Installation,PmWiki.InitialSetupTasks,PmWiki.Upgrades,PmWiki.BackupAndRestore,PmWiki.UploadsAdmin,PmWiki.Security,PmWiki.CustomInterMap,PmWiki.CustomMarkup,PmWiki.CustomWikiStyles,PmWiki.Internationalizations,PmWiki.LocalCustomizations,PmWiki.PerGroupCustomizations,PmWiki.Skins,PmWiki.SkinTemplates,PmWiki.SitePreferences,PmWiki.WebFeeds,PmWiki.WikiFarms,PmWiki.FAQ,PmWiki.Troubleshooting,PmWiki.AuthUser,PmWiki.Blocklist,PmWiki.Notify,PmWiki.PasswordsAdmin,PmWiki.RefCount,PmWiki.UrlApprovals,PmWiki.Variables,PmWiki.Functions,PmWiki.PageFileFormat,PmWiki.Audiences,PmWiki.Contributors,PmWiki.MailingLists,PmWiki.PmWikiPhilosophy,PmWiki.DesignNotes,PmWiki.ReleaseNotes,PmWiki.ChangeLog,PmWiki.Glossary,PmWiki.BasicVariables,PmWiki.EditVariables,PmWiki.FilePermissions,PmWiki.FmtPageName,PmWiki.I18nVariables,PmWiki.LayoutVariables,PmWiki.LinkVariables,PmWiki.OtherVariables,PmWiki.PagelistVariables,PmWiki.PageListTemplates,PmWiki.PathVariables,PmWiki.Requirements,PmWiki.SpecialCharacters,PmWiki.UploadVariables,PmWiki.WikiAdministrator,PmWiki.WikiPage,PmWiki.WikiWikiWeb,PmWiki.WikiWord -text=(:Title: Documentation Index:)(:Summary: PmWiki documentation index:)%0a%0a>>rframe font-size:smaller%3c%3c%0a!! [[#contents]] Table of Contents%0a* [[#using | Beginner Topics for Creating/Editing Pages]]%0a* [[#intermed |Intermediate Editing Topics]]%0a* [[#struct | Wiki Structures: Organizing and Protecting Pages]]%0a* [[#admin | PmWiki Site Administration]]%0a** [[#install|Install]]%0a** [[#customise|Customise]]%0a** [[#troubleshoot|Troubleshoot]]%0a** [[#security|Security]]%0a* [[#development|Development]]%0a* [[#misc |About PmWiki]]%0a>>%3c%3c%0a%0aThe pages below describe various aspects of [[#using|using]], [[#admin|administering]] and [[#trouble|troubleshooting]] a PmWiki installation, as well as aspects of the [[#misc|PmWiki community]].%0a%0aAs you know, documentation is ''always'' incomplete. %0aFeel free to help yourself and others by contributing to it. %0aJust edit the pages on %25newwin%25[[PmWiki:DocumentationIndex|pmwiki.org]]. %0aYou might want to follow or contribute to the [[PmWiki:DocumentationGuidelines | documentation guidelines]].%0a----%0a[[#trailstart]]%0a* [[Introduction]] %25item comment%25%0a%0a!! [[#using]] Beginner Topics for Creating and Editing Pages%0a%0a* [[Basic editing]] - {BasicEditing$:Summary}%0a* [[Creating new pages]] - {CreatingNewPages$:Summary}%0a* [[Links]] - {Links$:Summary}%0a* [[Images]] - {Images$:Summary}%0a* [[Text formatting rules]] - {TextFormattingRules$:Summary}%0a%0a!! [[#intermed]] Intermediate Editing Topics%0a* [[Markup master index]] - {MarkupMasterIndex$:Summary}%0a%0a* [[Uploads]] - {Uploads$:Summary}%0a* [[Tables]] - {Tables$:Summary}%0a* [[Table directives]] - {TableDirectives$:Summary}%0a* [[Wiki styles]] - {WikiStyles$:Summary}%0a** [[Wiki style examples]] - {WikiStyleExamples$:Summary}%0a%0a* [[Access keys]] - {AccessKeys$:Summary}%0a* [[Page directives]] - {PageDirectives$:Summary}%0a* [[Include other pages]] - {IncludeOtherPages$:Summary}%0a* [[InterMap]] links - {InterMap$:Summary}%0a* [[Conditional markup]] - {ConditionalMarkup$:Summary}%0a* [[Page variables]] - {PageVariables$:Summary}%0a* [[Page text variables]] - {PageTextVariables$:Summary}%0a* [[Markup expressions]] - {MarkupExpressions$:Summary}%0a* [[Forms]] - {Forms$:Summary}%0a%0a* [[Simultaneous edits]] - {SimultaneousEdits$:Summary}%0a%0a!! [[#struct]] Organizing and Protecting Pages%0a* [[Wiki structure]] - {WikiStructure$:Summary}%0a* [[Wiki group]]s - {WikiGroup$:Summary}%0a* [[Group headers]] - {GroupHeaders$:Summary}%0a* [[Wiki trails]] - {WikiTrails$:Summary}%0a* [[Page history]] - {PageHistory$:Summary}%0a%0a* [[Passwords]] - {Passwords$:Summary}%0a* [[Categories]] - {Categories$:Summary}%0a* [[Page lists]] - {PageLists$:Summary}%0a* %25%25 [[PageDirectives#attachlist|Attach lists]] - Get a list of files uploaded and attached to a group using [=(:attachlist:)=] [-({PageDirectives$:Summary})-]%0a* [[Deleting pages]] - {DeletingPages$:Summary}%0a%0a!! [[#admin]] PmWiki Site Administration%0a!!! [[#install]]Installation and maintenance%0a* [[Installation]] - {Installation$:Summary}%0a* [[Initial setup tasks]] - {InitialSetupTasks$:Summary}%0a* [[Upgrades]] - {Upgrades$:Summary}%0a* [[Backup and Restore]] - {BackupAndRestore$:Summary}%0a* [[Uploads admin]]istration - {UploadsAdmin$:Summary}%0a* [[Security]] - {PmWiki/Security$:Summary}%0a%0a!!! [[#customise]] Customisation%0a* [[Custom inter map]] - {CustomInterMap$:Summary}%0a* [[Custom markup]] - {CustomMarkup$:Summary}%0a* [[Custom wiki styles]] - {CustomWikiStyles$:Summary}%0a* [[Internationalizations]] - {Internationalizations$:Summary}%0a* [[Local customizations]] - {LocalCustomizations$:Summary}%0a* [[PerGroup customizations | Per-group customizations]] - {PerGroupCustomizations$:Summary}%0a* [[Skins]] - {Skins$:Summary}%0a* [[Skin templates]] - {SkinTemplates$:Summary}%0a* [[Site Preferences]] - {SitePreferences$:Summary}%0a* [[Web feeds]] - {WebFeeds$:Summary}%0a* [[Wiki Farms]] - {WikiFarms$:Summary}%0a%0a!!! [[#troubleshoot]] Troubleshooting%0a* [[FAQ | Frequently answered questions]]%0a* [[(PmWiki:)AQ | Answers to some other questions]]%0a* [[(PmWiki:)FAQ Candidate]] - more answered questions%0a* [[(PmWiki:)Questions]]%0a* [[(PmWiki:)How to get assistance]]%0a* [[Troubleshooting]] - {Troubleshooting$:Summary}%0a* [[(PmWiki:)Available actions]] - documentation for developers%0a%0a!!! [[#security]] Security%0a* [[AuthUser]] - {AuthUser$:Summary}%0a* [[Blocklist]] - {Blocklist$:Summary} %0a* [[Notify]] - {Notify$:Summary}%0a* [[Passwords admin]]istration - {PasswordsAdmin$:Summary}%0a* [[Ref count]] - {RefCount$:Summary}%0a* [[Url approvals]] - {UrlApprovals$:Summary}%0a%0a!! [[#development]] Development%0a* [[Variables]] - {Variables$:Summary}%0a* [[Functions]] - {Functions$:Summary}%0a* [[Page file format]] - {PageFileFormat$:Summary}%0a%0a!! [[#misc]] About PmWiki%0a* [[Audiences]] - {Audiences$:Summary}%0a* [[Contributors]] - {Contributors$:Summary}%0a* [[Mailing lists]] - {MailingLists$:Summary}%0a* [[PmWiki philosophy]] - {PmWikiPhilosophy$:Summary}%0a* [[Design notes]] - {DesignNotes$:Summary}%0a* [[Release notes]] - {PmWiki/ReleaseNotes$:Summary}%0a* [[Change log]] - {PmWiki/ChangeLog$:Summary}%0a%0a* [[(PmWiki:)References]] - {References$:Summary}%0a* [[Glossary]] - {PmWiki/Glossary$:Summary}%0a%0a* [[Introduction]] %25item comment%25 loop trail%0a[[#trailend]]%0a%0a>>comment%3c%3c%0aNote: The following pages are listed here so that they can include a #faq section and have the questions appear on the FAQ page. %0a%0aThe problem is that these pages become part of the trail %0a%0a* [[Access Keys]]%0a* [[Basic Variables]]%0a* [[Edit Variables]]%0a* [[File Permissions]]%0a* [[Fmt Page Name]]%0a* [[I18n Variables]]%0a* [[Layout Variables]]%0a* [[Link Variables]]%0a* [[Other Variables]]%0a* [[Pagelist Variables]]%0a* [[PageList Templates]]%0a* [[Path Variables]]%0a* [[Requirements]]%0a* [[Skin Templates]]%0a* [[Special Characters]]%0a* [[Upload Variables]]%0a* [[Wiki Administrator]]%0a* [[Wiki Page]]%0a* [[Wiki Wiki Web]]%0a* [[Wiki Word]]%0a -time=1238265660 +text=(:Title: Documentation Index:)(:Summary: PmWiki documentation index:)%0a%0a>>rframe font-size:smaller%3c%3c%0a!! [[#contents]] Table of Contents%0a* [[#using | Beginner Topics for Creating/Editing Pages]]%0a* [[#intermed |Intermediate Editing Topics]]%0a* [[#struct | Wiki Structures: Organizing and Protecting Pages]]%0a* [[#admin | PmWiki Site Administration]]%0a** [[#install|Install]]%0a** [[#customise|Customise]]%0a** [[#troubleshoot|Troubleshoot]]%0a** [[#security|Security]]%0a* [[#development|Development]]%0a* [[#misc |About PmWiki]]%0a>>%3c%3c%0a%0aThe pages below describe various aspects of [[#using|using]], [[#admin|administering]] and [[#trouble|troubleshooting]] a PmWiki installation, as well as aspects of the [[#misc|PmWiki community]].%0a%0aAs you know, documentation is ''always'' incomplete. %0aFeel free to help yourself and others by contributing to it. %0aJust edit the pages on %25newwin%25[[PmWiki:DocumentationIndex|pmwiki.org]]. %0aYou might want to follow or contribute to the [[PmWiki:DocumentationGuidelines | documentation guidelines]].%0a----%0a[[#trailstart]]%0a* [[Introduction]] %25item comment%25%0a%0a!! [[#using]] Beginner Topics for Creating and Editing Pages%0a%0a* [[Basic editing]] - {BasicEditing$:Summary}%0a* [[Creating new pages]] - {CreatingNewPages$:Summary}%0a* [[Links]] - {Links$:Summary}%0a* [[Images]] - {Images$:Summary}%0a* [[Text formatting rules]] - {TextFormattingRules$:Summary}%0a%0a!! [[#intermed]] Intermediate Editing Topics%0a* [[Markup master index]] - {MarkupMasterIndex$:Summary}%0a%0a* [[Uploads]] - {Uploads$:Summary}%0a* [[Tables]] - {Tables$:Summary}%0a* [[Table directives]] - {TableDirectives$:Summary}%0a* [[Wiki styles]] - {WikiStyles$:Summary}%0a** [[Wiki style examples]] - {WikiStyleExamples$:Summary}%0a%0a* [[Access keys]] - {AccessKeys$:Summary}%0a* [[Page directives]] - {PageDirectives$:Summary}%0a* [[Include other pages]] - {IncludeOtherPages$:Summary}%0a* [[InterMap]] links - {InterMap$:Summary}%0a* [[Conditional markup]] - {ConditionalMarkup$:Summary}%0a* [[Page variables]] - {PageVariables$:Summary}%0a* [[Page text variables]] - {PageTextVariables$:Summary}%0a* [[Markup expressions]] - {MarkupExpressions$:Summary}%0a* [[Forms]] - {Forms$:Summary}%0a%0a* [[Simultaneous edits]] - {SimultaneousEdits$:Summary}%0a%0a!! [[#struct]] Organizing and Protecting Pages%0a* [[Wiki structure]] - {WikiStructure$:Summary}%0a* [[Wiki group]]s - {WikiGroup$:Summary}%0a* [[Group headers]] - {GroupHeaders$:Summary}%0a* [[Wiki trails]] - {WikiTrails$:Summary}%0a* [[Page history]] - {PageHistory$:Summary}%0a%0a* [[Passwords]] - {Passwords$:Summary}%0a* [[Categories]] - {Categories$:Summary}%0a* [[Page lists]] - {PageLists$:Summary}%0a* %25%25 [[PageDirectives#attachlist|Attach lists]] - Get a list of files uploaded and attached to a group using [=(:attachlist:)=] [-({PageDirectives$:Summary})-]%0a* [[Deleting pages]] - {DeletingPages$:Summary}%0a%0a!! [[#admin]] PmWiki Site Administration%0a!!! [[#install]]Installation and maintenance%0a* [[Installation]] - {Installation$:Summary}%0a* [[Initial setup tasks]] - {InitialSetupTasks$:Summary}%0a* [[Upgrades]] - {Upgrades$:Summary}%0a* [[Backup and Restore]] - {BackupAndRestore$:Summary}%0a* [[Uploads admin]]istration - {UploadsAdmin$:Summary}%0a* [[Security]] - {PmWiki/Security$:Summary}%0a%0a!!! [[#customise]] Customisation%0a* [[Custom inter map]] - {CustomInterMap$:Summary}%0a* [[Custom markup]] - {CustomMarkup$:Summary}%0a* [[Custom wiki styles]] - {CustomWikiStyles$:Summary}%0a* [[Internationalizations]] - {Internationalizations$:Summary}%0a* [[Local customizations]] - {LocalCustomizations$:Summary}%0a* [[PerGroup customizations | Per-group customizations]] - {PerGroupCustomizations$:Summary}%0a* [[Skins]] - {Skins$:Summary}%0a* [[Skin templates]] - {SkinTemplates$:Summary}%0a* [[Site Preferences]] - {SitePreferences$:Summary}%0a* [[Web feeds]] - {WebFeeds$:Summary}%0a* [[Wiki Farms]] - {WikiFarms$:Summary}%0a%0a!!! [[#troubleshoot]] Troubleshooting%0a* [[FAQ | Frequently answered questions]]%0a* [[(PmWiki:)AQ | Answers to some other questions]]%0a* [[(PmWiki:)FAQ Candidate]] - more answered questions%0a* [[(PmWiki:)Questions]]%0a* [[(PmWiki:)How to get assistance]]%0a* [[Troubleshooting]] - {Troubleshooting$:Summary}%0a* [[(PmWiki:)Available actions]] - documentation for developers%0a%0a!!! [[#security]] Security%0a* [[AuthUser]] - {AuthUser$:Summary}%0a* [[Blocklist]] - {Blocklist$:Summary} %0a* [[Notify]] - {Notify$:Summary}%0a* [[Passwords admin]]istration - {PasswordsAdmin$:Summary}%0a* [[Ref count]] - {RefCount$:Summary}%0a* [[Url approvals]] - {UrlApprovals$:Summary}%0a%0a!! [[#development]] Development%0a* [[Variables]] - {Variables$:Summary}%0a* [[Functions]] - {Functions$:Summary}%0a* [[Page file format]] - {PageFileFormat$:Summary}%0a%0a!! [[#misc]] About PmWiki%0a* [[Audiences]] - {Audiences$:Summary}%0a* [[Contributors]] - {Contributors$:Summary}%0a* [[Mailing lists]] - {MailingLists$:Summary}%0a* [[PmWiki philosophy]] - {PmWikiPhilosophy$:Summary}%0a* [[Design notes]] - {DesignNotes$:Summary}%0a* [[Release notes]] - {PmWiki/ReleaseNotes$:Summary}%0a* [[Change log]] - {PmWiki/ChangeLog$:Summary}%0a%0a* [[(PmWiki:)References]] - References to PmWiki media coverage%0a* [[Glossary]] - {PmWiki/Glossary$:Summary}%0a%0a* [[Introduction]] %25item comment%25 loop trail%0a[[#trailend]]%0a%0a>>comment%3c%3c%0aNote: The following pages are listed here so that they can include a #faq section and have the questions appear on the FAQ page. %0a%0aThe problem is that these pages become part of the trail %0a%0a* [[Access Keys]]%0a* [[Basic Variables]]%0a* [[Edit Variables]]%0a* [[File Permissions]]%0a* [[Fmt Page Name]]%0a* [[I18n Variables]]%0a* [[Layout Variables]]%0a* [[Link Variables]]%0a* [[Other Variables]]%0a* [[Pagelist Variables]]%0a* [[PageList Templates]]%0a* [[Path Variables]]%0a* [[Requirements]]%0a* [[Skin Templates]]%0a* [[Special Characters]]%0a* [[Upload Variables]]%0a* [[Wiki Administrator]]%0a* [[Wiki Page]]%0a* [[Wiki Wiki Web]]%0a* [[Wiki Word]]%0a +time=1245617563 Index: wikilib.d/PmWiki.MarkupExpressions =================================================================== --- wikilib.d/PmWiki.MarkupExpressions (.../pmwiki-2.2.1) (revision 2344) +++ wikilib.d/PmWiki.MarkupExpressions (.../pmwiki-2.2.2) (revision 2344) @@ -1,12 +1,12 @@ -version=pmwiki-2.2.0 ordered=1 urlencoded=1 -agent=Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/1.0.154.48 Safari/525.19 -author=simon +version=pmwiki-2.2.1 ordered=1 urlencoded=1 +agent=Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/1.0.154.65 Safari/525.19 +author=Simon charset=ISO-8859-1 -csum=expand documentation of substr +csum=always quote the string to be processed ctime=1176718061 host=202.37.32.2 name=PmWiki.MarkupExpressions -rev=53 +rev=55 targets=PmWiki.PageVariables,PmWiki.PageTextVariables,PmWiki.ConditionalMarkup -text=(:Summary:String and formatting operations:)%0a(:Audience: authors (advanced) :)%0a%0aThe [@{(...)}@] "expression markup" allows for a variety of string and formatting operations to be performed from within markup. Operations defined by this recipe include ''[[#substr|substr]]'', ''[[#ftime|ftime]]'', ''[[#strlen|strlen]]'', ''[[#rand|rand]]'', ''[[#to|toupper / tolower]]'', ''[[#ucfirst|ucfirst]]'', ''[[#ucwords|ucwords]]'', ''[[#pagename|pagename]]'' and ''[[#asspaced|asspaced]]''.%0a%0a[[#substr]]%0a!! ''substr''%0a%0aThe "substr" expression extracts portions of a string. The first argument is the string to be processed, the second argument is the initial position of the substring, and the third argument is the number of characters to extract. Note that the initial position argument is zero-based (i.e., the first character is referenced via a "0").%0a%0a(:markup class="horiz":)%0a {(substr "PmWiki" 2 3)}%0a {(substr "PmWiki" 2)}%0a {(substr "PmWiki" 0 1)}%0a {(substr "PmWiki" 0 -3)}%0a(:markupend:)%0a%0aTo obtain the last n characters of a string use [@{(substr "string" -n)}@]%0a[[%3c%3c]]%0aTo truncate the last n characters of a string use [@(substr "string" 0 -n)}@]%0a%0a[[#ftime]]%0a!! ''ftime''%0a%0a"Ftime" expressions are used for date and time formatting. The generic form is%0a%0a->[@{(ftime "fmt" "when")}@]%0a->[@{(ftime fmt="fmt" when="when")}@]%0a%0awhere ''fmt'' is a formatting string and ''when'' is the time to be formatted. The arguments can be in either order and may use the optional "fmt=" and "when=" labels.%0a%0aExamples:%0a(:markup class="horiz":)%0a {(ftime)}%0a {(ftime fmt="%25F %25H:%25M")}%0a {(ftime %25Y)}%0a {(ftime fmt=%25T)}%0a {(ftime when=tomorrow)}%0a {(ftime fmt="%25Y-%25m-%25d" yesterday)}%0a {(ftime week %25F)}%0a {(ftime fmt=%25D month)}%0a {(ftime fmt="%25a%25e %25b" when="next week")}%0a(:markupend:)%0a%0aThe ''fmt'' parameter is whatever is given by "fmt=", the first parameter containing a '%25', or else the site's default. The formatting codes are described at %25newwin%25 http://php.net/strftime. In addition to those, '%25F' produces ISO-8601 dates, and '%25s' produces Unix timestamps.%0aSome common formatting strings:%0a%0a [= %25F =] # ISO-8601 dates "{(ftime %25F)}"%0a [= %25s =] # Unix timestamp "{(ftime %25s)}"%0a [= %25H:%25M:%25S =] # time as hh:mm:ss "{(ftime %25H:%25M:%25S)}"%0a [= %25m/%25d/%25Y =] # date as mm/dd/yyyy "{(ftime %25m/%25d/%25Y)}"%0a [= "%25A, %25B %25d, %25Y" =] # in words "{(ftime "%25A, %25B %25d, %25Y")}"%0a%0aThe ''when'' parameter understands many different date formats. The when parameter is whatever is given by "when=", or whatever parameter remains after determining the format parameter. Some examples:%0a%0a 2007-04-11 # ISO-8601 dates%0a 20070411 # dates without hyphens, slashes, or dots%0a 2007-03 # months%0a @1176304315 # Unix timestamps (seconds since 1-Jan-1970 00:00 UTC)%0a now # the current time%0a today # today @ 00:00:00%0a yesterday # yesterday @ 00:00:00%0a "next Monday" # relative dates%0a "last Thursday" # relative dates%0a "-3 days" # three days ago%0a "+2 weeks" # two weeks from now%0a%0a'''Note:''' If you want to convert a Unix timestamp you '''must''' prefix with the @. Thus, [@"{(ftime "%25A, %25B %25d, %25Y" @1231116927)}"@].%0a%0aThe ''when'' parameter uses PHP's %25newwin%25[[(http://www.php.net/)strtotime]] function to convert date strings according to the GNU [[http://www.gnu.org/software/tar/manual/html_node/Date-input-formats.html|date input formats]]; as of this writing it only understands English phrases in date specifications.%0a%0aThe variable $FTimeFmt can be used to override the default date format used by the "ftime" function. The default $FTimeFmt is $TimeFmt.%0a%0a[[#strlen]]%0a!! ''strlen''%0a%0aThe "strlen" expression returns the length of a string. The first argument is the string to be measured.%0a%0a(:markup class="horiz":)%0a {(strlen "{$:Summary}")}%0a(:markupend:)%0a%0a[[#rand]]%0a!! ''rand''%0a%0aThe "rand" expression returns a random integer. The first argument is the minimum number to be returned and the second argument is the maximum number to be returned. If called without the optional min, max arguments rand() returns a pseudo-random integer between 0 and RAND_MAX. If you want a random number between 5 and 15 (inclusive), for example, use rand (5, 15).%0a%0a(:markup class="horiz":)%0a {(rand)}%0a(:markupend:)%0a%0a[[#to]]%0a!! ''toupper'' / ''tolower''%0a%0aThe "toupper" and "tolower" expressions convert a string into uppercase or lowercase. The first argument is the string to be processed.%0a%0a(:markup class="horiz":)%0a {(toupper "{$:Summary}")}%0a {(tolower "{$:Summary}")}%0a(:markupend:)%0a%0a[[#ucfirst]]%0a!!''ucfirst''%0a%0aThe "ucfirst" expression converts the first character of a string to uppercase. The first argument is the string to be processed.%0a%0a(:markup class="horiz":)%0a {(ucfirst "{$:Summary}")}%0a(:markupend:)%0a%0a[[#ucwords]]%0a!! ''ucwords''%0a%0aThe "ucwords" expression converts the first character of each word in a string to uppercase. The first argument is the string to be processed.%0a%0a(:markup class="horiz":)%0a {(ucwords "{$:Summary}")}%0a(:markupend:)%0a%0a[[#pagename]]%0a!! ''pagename''%0a%0aThe "pagename" expression builds a pagename from a string. The first argument is the string to be processed.%0a%0a(:markup class="horiz":)%0a {(pagename "{$:Summary}")}%0a(:markupend:)%0a%0a[[#asspaced]]%0a!! ''asspaced''%0a%0aThe "asspaced" expression formats wikiwords. The first argument is the string to be processed.%0a%0a(:markup class="horiz":)%0a {(asspaced "{$FullName}")}%0a(:markupend:)%0a%0a[[#nesting]]%0a!! Nesting expressions%0a%0aMarkup expressions can be nested:%0a%0a(:markup class="horiz":)%0a {(tolower (substr "Hello World" 2))}%0a(:markupend:)%0a%0a[[#notes]] %0a!! Notes%0a%0a* Some of the string-processing markups may not work properly on UTF-8 characters or escaped sequences.%0a* The ftime markup does not work with some [[http://mcs.vuw.ac.nz/technical/software/SGML/doc/iso8601/ISO8601.html | ISO 8601]] dates (because a time of 24:00 [[http://gnu.org/software/tar/manual/html_node/tar_114.html | is invalid]])such as: %0a(:markup class=horiz:)%0a {(ftime fmt="%25m/%25d/%25Y @ %25H:%25M:%25S" when="20070626T2400")}%0a {(ftime fmt="%25H:%25M:%25S" when="20070626T2400")}%0a(:markupend:)%0a* is it possible to display the time in another [[http://gnu.org/software/tar/manual/html_node/tar_122.html#SEC122 | time zone]], eg%0a(:markup class=horiz:)%0aNowTime: {(ftime fmt="%25F %25H:%25M")}%0a {(ftime when='TZ=:Europe/London" ')}%0a {(ftime when='TZ=Europe/London" 0 days')}%0a {(ftime when="TZ='Pacific/Auckland' 2004-10-31 08:30")}%0a {(ftime when='TZ="Pacific/Auckland" {$:NowTime}')}%0a(:markupend:)%0a%0a!! See also%0a* [[Page variables]], [[Page text variables]]%0a* [[Conditional markup]]%0a* Cookbook:MarkupExprPlus%0a -time=1236138648 +text=(:Summary:String and formatting operations:)%0a(:Audience: authors (advanced) :)%0a%0aThe [@{(...)}@] "expression markup" allows for a variety of string and formatting operations to be performed from within markup. Operations defined by this recipe include ''[[#substr|substr]]'', ''[[#ftime|ftime]]'', ''[[#strlen|strlen]]'', ''[[#rand|rand]]'', ''[[#to|toupper / tolower]]'', ''[[#ucfirst|ucfirst]]'', ''[[#ucwords|ucwords]]'', ''[[#pagename|pagename]]'' and ''[[#asspaced|asspaced]]''.%0a%0a[[#substr]]%0a!! ''substr''%0a%0aThe "substr" expression extracts portions of a string. The arguments are%0a# the string to be processed. Always quote the string to be processed.%0a# the initial position of the substring. Note that the initial position argument is zero-based (i.e., the first character is referenced via a "0").%0a# the number of characters to extract%0a(:markup class="horiz":)%0a {(substr "PmWiki" 2 3)}%0a {(substr "PmWiki" 2)}%0a {(substr "PmWiki" 0 1)}%0a {(substr "PmWiki" 0 -3)}%0a {(substr "PmWiki" -3)}%0a(:markupend:)%0a%0aTo obtain the last n characters of a string use [@{(substr "string" -n)}@]%0a[[%3c%3c]]%0aTo truncate the last n characters of a string use [@(substr "string" 0 -n)}@]%0a%0a[[#ftime]]%0a!! ''ftime''%0a%0a"Ftime" expressions are used for date and time formatting. The generic form is%0a%0a->[@{(ftime "fmt" "when")}@]%0a->[@{(ftime fmt="fmt" when="when")}@]%0a%0awhere ''fmt'' is a formatting string and ''when'' is the time to be formatted. The arguments can be in either order and may use the optional "fmt=" and "when=" labels.%0a%0aExamples:%0a(:markup class="horiz":)%0a {(ftime)}%0a {(ftime fmt="%25F %25H:%25M")}%0a {(ftime %25Y)}%0a {(ftime fmt=%25T)}%0a {(ftime when=tomorrow)}%0a {(ftime fmt="%25Y-%25m-%25d" yesterday)}%0a {(ftime week %25F)}%0a {(ftime fmt=%25D month)}%0a {(ftime fmt="%25a%25e %25b" when="next week")}%0a(:markupend:)%0a%0aThe ''fmt'' parameter is whatever is given by "fmt=", the first parameter containing a '%25', or else the site's default. The formatting codes are described at %25newwin%25 http://php.net/strftime. In addition to those, '%25F' produces ISO-8601 dates, and '%25s' produces Unix timestamps.%0aSome common formatting strings:%0a%0a [= %25F =] # ISO-8601 dates "{(ftime %25F)}"%0a [= %25s =] # Unix timestamp "{(ftime %25s)}"%0a [= %25H:%25M:%25S =] # time as hh:mm:ss "{(ftime %25H:%25M:%25S)}"%0a [= %25m/%25d/%25Y =] # date as mm/dd/yyyy "{(ftime %25m/%25d/%25Y)}"%0a [= "%25A, %25B %25d, %25Y" =] # in words "{(ftime "%25A, %25B %25d, %25Y")}"%0a%0aThe ''when'' parameter understands many different date formats. The when parameter is whatever is given by "when=", or whatever parameter remains after determining the format parameter. Some examples:%0a%0a 2007-04-11 # ISO-8601 dates%0a 20070411 # dates without hyphens, slashes, or dots%0a 2007-03 # months%0a @1176304315 # Unix timestamps (seconds since 1-Jan-1970 00:00 UTC)%0a now # the current time%0a today # today @ 00:00:00%0a yesterday # yesterday @ 00:00:00%0a "next Monday" # relative dates%0a "last Thursday" # relative dates%0a "-3 days" # three days ago%0a "+2 weeks" # two weeks from now%0a%0a'''Note:''' If you want to convert a Unix timestamp you '''must''' prefix with the @. Thus, [@"{(ftime "%25A, %25B %25d, %25Y" @1231116927)}"@].%0a%0aThe ''when'' parameter uses PHP's %25newwin%25[[(http://www.php.net/)strtotime]] function to convert date strings according to the GNU [[http://www.gnu.org/software/tar/manual/html_node/Date-input-formats.html|date input formats]]; as of this writing it only understands English phrases in date specifications.%0a%0aThe variable $FTimeFmt can be used to override the default date format used by the "ftime" function. The default $FTimeFmt is $TimeFmt.%0a%0a[[#strlen]]%0a!! ''strlen''%0a%0aThe "strlen" expression returns the length of a string. The first argument is the string to be measured.%0a%0a(:markup class="horiz":)%0a {(strlen "{$:Summary}")}%0a(:markupend:)%0a%0a[[#rand]]%0a!! ''rand''%0a%0aThe "rand" expression returns a random integer. The first argument is the minimum number to be returned and the second argument is the maximum number to be returned. If called without the optional min, max arguments rand() returns a pseudo-random integer between 0 and RAND_MAX. If you want a random number between 5 and 15 (inclusive), for example, use rand (5, 15).%0a%0a(:markup class="horiz":)%0a {(rand)}%0a(:markupend:)%0a%0a[[#to]]%0a!! ''toupper'' / ''tolower''%0a%0aThe "toupper" and "tolower" expressions convert a string into uppercase or lowercase. The first argument is the string to be processed.%0a%0a(:markup class="horiz":)%0a {(toupper "{$:Summary}")}%0a {(tolower "{$:Summary}")}%0a(:markupend:)%0a%0a[[#ucfirst]]%0a!!''ucfirst''%0a%0aThe "ucfirst" expression converts the first character of a string to uppercase. The first argument is the string to be processed.%0a%0a(:markup class="horiz":)%0a {(ucfirst "{$:Summary}")}%0a(:markupend:)%0a%0a[[#ucwords]]%0a!! ''ucwords''%0a%0aThe "ucwords" expression converts the first character of each word in a string to uppercase. The first argument is the string to be processed.%0a%0a(:markup class="horiz":)%0a {(ucwords "{$:Summary}")}%0a(:markupend:)%0a%0a[[#pagename]]%0a!! ''pagename''%0a%0aThe "pagename" expression builds a pagename from a string. The first argument is the string to be processed.%0a%0a(:markup class="horiz":)%0a {(pagename "{$:Summary}")}%0a(:markupend:)%0a%0a[[#asspaced]]%0a!! ''asspaced''%0a%0aThe "asspaced" expression formats wikiwords. The first argument is the string to be processed.%0a%0a(:markup class="horiz":)%0a {(asspaced "{$FullName}")}%0a(:markupend:)%0a%0a[[#nesting]]%0a!! Nesting expressions%0a%0aMarkup expressions can be nested:%0a%0a(:markup class="horiz":)%0a {(tolower (substr "Hello World" 2))}%0a(:markupend:)%0a%0a[[#notes]] %0a!! Notes%0a%0a* Some of the string-processing markups may not work properly on UTF-8 characters or escaped sequences.%0a* The ftime markup does not work with some [[http://mcs.vuw.ac.nz/technical/software/SGML/doc/iso8601/ISO8601.html | ISO 8601]] dates (because a time of 24:00 [[http://gnu.org/software/tar/manual/html_node/tar_114.html | is invalid]])such as: %0a(:markup class=horiz:)%0a {(ftime fmt="%25m/%25d/%25Y @ %25H:%25M:%25S" when="20070626T2400")}%0a {(ftime fmt="%25H:%25M:%25S" when="20070626T2400")}%0a(:markupend:)%0a* is it possible to display the time in another [[http://gnu.org/software/tar/manual/html_node/tar_122.html#SEC122 | time zone]], eg%0a(:markup class=horiz:)%0aNowTime: {(ftime fmt="%25F %25H:%25M")}%0a {(ftime when='TZ=:Europe/London" ')}%0a {(ftime when='TZ=Europe/London" 0 days')}%0a {(ftime when="TZ='Pacific/Auckland' 2004-10-31 08:30")}%0a {(ftime when='TZ="Pacific/Auckland" {$:NowTime}')}%0a(:markupend:)%0a%0a!! See also%0a* [[Page variables]], [[Page text variables]]%0a* [[Conditional markup]]%0a* Cookbook:MarkupExprPlus%0a +time=1242697012 Index: wikilib.d/PmWiki.MarkupMasterIndex =================================================================== --- wikilib.d/PmWiki.MarkupMasterIndex (.../pmwiki-2.2.1) (revision 2344) +++ wikilib.d/PmWiki.MarkupMasterIndex (.../pmwiki-2.2.2) (revision 2344) @@ -2,11 +2,11 @@ agent=Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.19) Gecko/20081216 Ubuntu/8.04 (hardy) Firefox/2.0.0.19 author=Petko charset=ISO-8859-1 -csum=fix link +csum= host=81.65.14.164 name=PmWiki.MarkupMasterIndex -rev=229 +rev=235 targets=PmWiki.Links,PmWiki.WikiWord,PmWiki.WikiGroup,PmWiki.Categories,PmWiki.InterMap,PmWiki.Uploads,PmWiki.Images,PmWiki.TextFormattingRules,PmWiki.WikiStyles,PmWiki.PageDirectives,PmWiki.Tables,PmWiki.TableDirectives,PmWiki.GroupHeaders,PmWiki.PageTextVariables,PmWiki.IncludeOtherPages,PmWiki.ConditionalMarkup,PmWiki.PageLists,PmWiki.Forms,PmWiki.WikiTrails,PmWiki.PageVariables,PmWiki.MarkupExpressions -text=(:title Markup Master Index:)%0a(:Summary:Tabulation of all PmWiki markup:)%0a>>rframe font-size:smaller noprint%3c%3c%0a'''Table of contents'''%0a* [[#LinkMarkups|Links]]%0a** [[#ExternalLinks|To external urls]]%0a** [[#InternalLinks|To internal pages and more]]%0a** [[#WikiPageLinks|To wiki pages]]%0a** [[#SpecialGroupLinks|To Special Groups]]%0a** [[#IntermapLinks|To Intermap Destinations]]%0a** [[#UploadLinks|To uploaded files]]%0a** [[#EmailLinks|To email addresses]]%0a* [[#Images|Images]]%0a** [[#ImagesAsImages|as images]]%0a** [[#ImagesAsLinks|as links]]%0a* [[#StartOfLine|Start-of-line markup]]%0a** [[#Lists|Lists]]%0a** [[#Headings|Headings]]%0a** [[#BlockMarkups|Paragraph blocks]]%0a** [[#DivisionBlocks|Division blocks]]%0a* [[#Text|Text]]%0a** [[#InlineMarkups|Character format]]%0a** [[#PostingMarkups|Posting markup]]%0a* [[#Tables|Tables]]%0a** [[#PlainTables|Plain tables]]%0a** [[#TablesAndDivs|Structured tables]]%0a* [[#Directives|Directives]]%0a** [[#PageDirectives|Page directives]]%0a** [[#Display|Display]]%0a** [[#Metadata|Metadata]]%0a** [[#IncludeOtherPages|Include other pages]]%0a** [[#ConditionalMarkup|Conditional markup]]%0a** [[#PageLists|Page lists]]%0a** [[#OtherDirectives|Other directives]]%0a* [[#Forms|Forms]]%0a** [[#Forms|Forms]]%0a** [[#EditForms|Edit Forms]]%0a* [[#WikiTrails|WikiTrails]]%0a* [[#PageVariables|Page variables]]%0a* [[#Expressions|Expressions]]%0a>>%3c%3c%0aEverything you wanted to know about wiki markup but were afraid to ask.%0a%0a!! [[#LinkMarkups]] Links%0a%0aSee [[Links]]%0a!!![[#ExternalLinks]]External links%0a-%3c [@http://example.com@]%0a-%3c [@ [[http://example.com]] @]%0a-%3c [@ [[http://example.com | link text]] @]%0a-%3c [@ [[link text -> http://example.com]] @]%0a%0a%0a[[#InternalLinks]]%0a!!! Page links%0a-%3c [@ [[PageName]] @]%0a-%3c [@ [[page name]] @]%0a-%3c [@ [[page (name)]] @]%0a-%3c [@ [[PageName | link text]] @]%0a-%3c [@ [[PageName | + ]] @] ''(titled link)''%0a-%3c [@ [[PageName | # ]] @] ''(anonymous numerical reference link)''%0a-%3c [@ [[link text -> PageName]] @]%0a-%3c [@ [[#anchor]] @] ''(to create an anchor)''%0a-%3c [@ [[#anchor | link text]] @] ''(to refer to an anchor)''%0a-%3c [@ [[PageName#anchor | link text]] @] ''(to refer to an anchor in another page)''%0a%0a[[#WikiPageLinks]]%0a!!! Wiki page links%0aSee [[Wiki word]] and [[Wiki group]]%0a-%3c [@WikiWord@]%0a-%3c [@`NonWikiWord@]%0a-%3c [@Group/PageName@]%0a-%3c [@Group.PageName@]%0a-%3c [@ [[GroupName/]] @]%0a-%3c [@ [[GroupName.]] @]%0a%0a[[#SpecialGroupLinks]]%0a!!! Special group links%0aSee [[Links]] and [[Categories]] %0a-%3c [@ [[~Author Name]] @]%0a-%3c [@ [[!Category Name]] @]%0a%0a[[#IntermapLinks]]%0a!!! Intermap links%0aSee [[Inter map]]%0a-%3c [@ [[Path:/path/local_document.html]] @]%0a-%3c [@ [[Wikipedia:WikiWikiWeb]] @]%0a%0a[[#UploadLinks]]%0a!!! Upload links%0aSee [[Uploads]]%0a-%3c [@ [[Attach:file with spaces.pdf]] @]%0a-%3c [@ [[Attach:Groupname/file with spaces.pdf]] @]%0a%0a[[#EmailLinks]]%0a!!! Email links%0a-%3c [@ [[mailto:someone@example.com]] @]%0a-%3c [@ [[mailto:someone@example.com|display text]] @]%0a-%3c [@ [[display text -> mailto:someone@example.com]] @]%0a%0a!! [[#Images]] Images%0a%0aSee [[Images]] and [[Uploads]]%0a!!! [[#ImagesAsImages]] Images as Images%0a-%3c [@http://example.com/image.gif@]%0a-%3c [@http://example.com/image.gif"alt text"@]%0a-%3c [@Attach:image.gif"My image"@]%0a-%3c [@Attach:Groupname/image.gif"image in another group"@]%0a-%3c [@Attach:Groupname.Pagename/image.gif"image on another page"@]%0a-%3c [@%25lfloat%25 Attach:image.gif@]%0a-%3c [@%25rfloat%25 Attach:image.gif@]%0a-%3c [@%25center%25 Attach:image.gif@]%0a-%3c [@%25rframe%25 Attach:image.gif | Caption@]%0a-%3c [@%25lframe%25 Attach:image.gif | Caption@]%0a-%3c [@%25width=200px%25 Attach:image.gif@]%0a-%3c [@%25thumb%25 Attach:image.gif@]%0a%0a%0a!!! [[#ImagesAsLinks]] Images as links%0a%0a-%3c [@ [[Attach:image.gif]] @]%0a-%3c [@ [[(Attach:)image.gif]] @]%0a-%3c [@ [[PageName | Attach:image.gif"alt text"]] @]%0a-%3c [@ [[http://example.com/ | Attach:image.gif"alt text"]] @]%0a-%3c [@%25rframe thumb%25 [[Attach:image.gif | Attach:image.gif"alt text"]] | Caption @]%0a%0a%0a!! [[#StartOfLine]] Start-of-line markup%0a%0aSee [[Text formatting rules]]%0a%0a!!! [[#Lists]] [[PmWiki/TextFormattingRules#BulletedLists| Lists]]%0a%0aSee [[(PmWiki:)List Styles]], [[Wiki styles]] and [[Cookbook:Outline lists]]%0a-%3c [@* unordered list@]%0a-%3c [@** deeper list@]%0a-%3c [@# ordered list@]%0a-%3c [@# %25item value=#%25@] arbitrary start number%0a-%3c [@# %25decimal%25, %25roman%25, %25ROMAN%25, %25alpha%25, %25ALPHA%25 @]%0a-%3c [@:term:definition@]%0aAlso%0a-%3c [@Q:@] start a question paragraph%0a-%3c [@A:@] start an answer paragraph%0a%0a%0a!!! [[#Headings]] Headings%0a%0a-%3c [@!! Heading@]%0a-%3c [@!!! Deeper heading@]%0a%0a%0a!!! [[#BlockMarkups]] Paragraph blocks%0a%0a-%3c [@-> indented text@]%0a-%3c [@-%3c hanging indent@]%0a-%3c [@%3cspace> preformatted text@]%0a-%3c @@[=[@...@]=]@@ preformatted block%0a-%3c [@----@] (horizontal rule)%0a-%3c [@blank line@] is vertical space%0a-%3c [@\@] at end of line joins next line%0a-%3c [@\\@] at end of line produces a line break%0a-%3c [@\\\@] at the end of a line produces a blank line, even within a list item%0a-%3c [@ [[%3c%3c]] @] produces a line break that clears floating content%0a%0a%0a!!! [[#DivisionBlocks]] Division blocks%0a%0aSee [[Wiki styles]] and [[Page directives]]%0a-%3c [@>>wikistyle%3c%3c@]%0a-> [@ (:div attr:) @]%0a-> [@ (:divend:) @]%0a-%3c [@>>%3c%3c@]%0a%0a%0a!! [[#Text]] Text markup%0a%0aSee [[Text formatting rules]]%0a!!! [[#InlineMarkups]] Character format%0a%0a-%3c [@''emphasized''@] %0a-%3c [@'''strong'''@]%0a-%3c [@'''''strong emphasis'''''@]%0a-%3c [@'~italic~'@] [-''(if enabled in config.php)''-]%0a-%3c [@'*bold*'@] [-''(if enabled in config.php)''-]%0a-%3c [@@@monospaced@@@]%0a-%3c [@[-small-], [--smaller--]@]%0a-%3c [@[+big+], [++bigger++]@]%0a-%3c [@'-small-', '+big+'@]%0a-%3c [@'^superscript^', '_subscript_'@]%0a-%3c [@{+inserted+} (underscore)@]%0a-%3c [@{-deleted-} (strikethrough)@]%0a-%3c @@[=[@escaped code@]=]@@%0a-%3c [@[=escaped text=]@]%0a%0a%0a!!! [[#PostingMarkups]] Posting markup%0a%0a-%3c @@~~@@@@~@@ (author's signature)%0a-%3c @@~~@@@@~~@@ (author's signature and date)%0a-%3c @@[=(:encrypt=] ''phrase''[=:)=]@@ -- replaced with encrypted form of ''phrase''%0a%0a%0a!! [[#Tables]] Tables%0a%0a!!! [[#PlainTables]] Plain rows and columns of text%0a%0aSee [[Tables]]%0a-%3c [@||table attributes@]%0a-%3c [@||!table caption!||@]%0a-%3c [@||left aligned || centered || right aligned||@]%0a-%3c [@||!column heading||@]%0a-%3c [@||spanned columns ||||||@]%0a%0a!!! [[#TablesAndDivs]] Structured tables%0a%0aSee [[Table directives ]]%0a-%3c [@ (:table attr:) @]%0a-%3c [@ (:cellnr attr:) @]%0a-%3c [@ (:cell attr:) @]%0a-%3c [@ (:tableend:) @]%0a%0a!! [[#Directives]] Directives%0a%0a!!! [[#PageDirectives]] Page directives%0a%0aSee [[Page directives]]%0a-%3c [@ (:redirect PageName:) @]%0a%0a-%3c [@ (:(no)spacewikiwords:) @]%0a-%3c [@ (:(no)linkwikiwords:) @]%0a-%3c [@ (:(no)linebreaks:) @]%0a-%3c [@ (:nl:) @] insert newline in the *markup* only if one isn't present. The purpose of [@ (:nl:) @] is to be able to write things like:%0a--> [@ (:include Page1:)(:nl:)(:include Page2:) @]%0a-> which guarantees that the first line of Page2 is treated as a separate line from the last line of Page1, but without inadvertently generating a blank line between them.%0a%0a!!! [[#Display]] Display%0a%0aSee [[Page directives]] [[Group headers]]%0a-%3c [@ (:noheader:), (:nofooter:) @]%0a-%3c [@ (:notitle:) @]%0a-%3c [@ (:noleft:), (:noright:) @]%0a-%3c [@ (:nogroupheader:), (:nogroupfooter:) @]%0a-%3c [@ (:noaction:) @]%0a%0a%0a!!! [[#Metadata]] Metadata%0a%0aSee [[Page directives]], [[(PmWiki:)Comment markup]], [[Page text variables]]%0a-%3c [@ (:title text:) @]%0a-%3c [@ (:keywords word, ...:) @]%0a-%3c [@ (:description text:) @]%0a-%3c [@ (:comment text:) @]%0a-%3c [@{Group/PageName$:Var}@] [-includes from [@ (:name:text:) @]-]%0a%0a%0a!!! [[#IncludeOtherPages]] Include%0a%0aSee [[Include other pages]], [[Page text variables]]%0a-%3c [@ (:include PageName:) @]%0a-%3c [@ (:include PageName #start#end lines=n paras=n:) @]%0a-%3c [@ (:include Page1 Page2 Page3:) @]%0a-%3c [@{Group/PageName$:Var}@] [-includes from [@ (:name:text:) @]-]%0a%0a!!! [[#ConditionalMarkup]] Conditional markup%0a%0aSee [[Conditional markup]]%0a-%3c [@ (:if (!)@] ''cond param''[@:)...(:ifend:)@]%0a-%3c [@ (:if (!)@] ''cond param''[@:)...(:else:)...(:ifend:)@]%0a-%3c [@ (:if (!)@] ''cond param''[@:)...(:elseif (!)@] ''cond param''[@:)...(:ifend:) @]%0a%0a%0a!!! [[#PageLists]] Pagelists%0a%0aSee [[Page lists]]%0a-%3c [@ (:searchbox group=Group size=size label=label target=Group.Page fmt=def list=ghi order=jkl:) @]%0a-%3c [@ (:searchresults incl -excl group=abc fmt=def list=ghi order=jkl:) @]%0a-%3c [@ (:pagelist incl -excl group=abc fmt=def list=ghi order=jkl:) @]%0a%0a%0a!!! [[#OtherDirectives]] Other directives%0a%0aSee [[Page directives]]%0a-%3c [@ (:@][[PageDirectives#attachlist|attachlist]][@:) @]%0a-%3c [@ (:@][[PageDirectives#markup]][@:) @] [@ [=...=] @]%0a-%3c [@ (:markup:)...(:markupend:) @]%0a-%3c [@ (:markup class=horiz:)...(:markupend:) @]%0a-%3c [@ (:markup caption='...':)...(:markupend:) @]%0a%0a%0a!! [[#Forms]] Forms%0a%0aSee [[PmWiki/Forms]]%0a-%3c [@ (:input form method=get action=url enctype=multipart/form-data:) @]%0a-%3c [@ (:input end:) @]%0a-%3c [@ (:input text name=first value="Bob" size=20:) @]%0a-%3c [@ (:input submit name=post value="Go" accesskey=g:) @]%0a-%3c [@ (:input reset:) @]%0a-%3c [@ (:input hidden name=action value=edit:) @]%0a-%3c [@ (:input radio name=xyz value="abc" checked=1:) @]%0a-%3c [@ (:input checkbox name=xyz value="abc" checked=1:) @]%0a-%3c [@ (:input password name=authpw:) @]%0a-%3c [@ (:input file name=upload:) @]%0a-%3c [@ (:input image name=xyz src="http:..." alt="Alt Text":) @]%0a-%3c [@ (:input select name=xyz value="val1" label="Value 1":) @]%0a-%3c [@ (:input select name=xyz value="val2" label="Value 2":) @]%0a-%3c [@ (:input default name=xyz value="abc":) @]%0a%0a%0a!!! [[#EditForms]] Edit forms%0a%0aSee [[PmWiki/Forms#pageeditcontrols]]%0a-%3c [@ (:messages:) @]%0a-%3c [@ (:input e_form:) @]%0a-%3c [@ (:e_guibuttons:) @]%0a-%3c [@ (:e_preview:) @]%0a-%3c [@ (:input e_textarea rows=24 cols=60:) @]%0a-%3c [@ (:input e_author value={$Author} size=40:) @]%0a-%3c [@ (:input e_changesummary value="Summary" size=60:) @]%0a-%3c [@ (:input e_savebutton value=$[Save]:) @]%0a-%3c [@ (:input e_saveeditbutton value=$[Save and edit]:) @]%0a-%3c [@ (:input e_previewbutton value=$[Preview]:) @]%0a-%3c [@ (:input e_resetbutton value=$[Reset]:) @]%0a%0a%0a!! [[#WikiTrails]] Wiki trails%0a%0aSee [[Wiki trails]]%0a-%3c [@%3c%3c|TrailPage|>>@]%0a-%3c [@%3c|TrailPage|>@]%0a-%3c [@^|TrailPage|^@]%0a%0a%0a!! [[#PageVariables]] Page variables%0a%0aSee [[Page variables]], [[Page text variables]], [[PmWiki/PageLists#pagetextvariables|Page lists]]%0a-%3c [@ {@]''[@$variable@]''[@} @]%0a-%3c [@ {@]''[@pagename$variable@]''[@} @]%0a-%3c [@ (:name:description:) @] [-sets a [[page text variable(s)]]-]%0a%0a%0a!! [[#Expressions]] Expressions%0a%0aSee [[Markup expressions]]%0a-%3c [@ {(@]''[@function args@]''[@)} @]%0a%0a%0a -time=1238271447 +text=(:title Markup Master Index:)%0a(:Summary:Tabulation of all PmWiki markup:)%0a>>rframe font-size:smaller noprint%3c%3c%0a'''Table of contents'''%0a* [[#LinkMarkups|Links]]%0a** [[#ExternalLinks|To external urls]]%0a** [[#InternalLinks|To internal pages and more]]%0a** [[#WikiPageLinks|To wiki pages]]%0a** [[#SpecialGroupLinks|To Special Groups]]%0a** [[#IntermapLinks|To Intermap Destinations]]%0a** [[#UploadLinks|To uploaded files]]%0a** [[#EmailLinks|To email addresses]]%0a* [[#Images|Images]]%0a** [[#ImagesAsImages|as images]]%0a** [[#ImagesAsLinks|as links]]%0a* [[#StartOfLine|Start-of-line markup]]%0a** [[#Lists|Lists]]%0a** [[#Headings|Headings]]%0a** [[#BlockMarkups|Paragraph blocks]]%0a** [[#DivisionBlocks|Division blocks]]%0a* [[#Text|Text]]%0a** [[#InlineMarkups|Character format]]%0a** [[#PostingMarkups|Posting markup]]%0a* [[#Tables|Tables]]%0a** [[#PlainTables|Plain tables]]%0a** [[#TablesAndDivs|Structured tables]]%0a* [[#Directives|Directives]]%0a** [[#PageDirectives|Page directives]]%0a** [[#Display|Display]]%0a** [[#Metadata|Metadata]]%0a** [[#IncludeOtherPages|Include other pages]]%0a** [[#ConditionalMarkup|Conditional markup]]%0a** [[#PageLists|Page lists]]%0a** [[#OtherDirectives|Other directives]]%0a* [[#Forms|Forms]]%0a** [[#Forms|Forms]]%0a** [[#EditForms|Edit Forms]]%0a* [[#WikiTrails|WikiTrails]]%0a* [[#PageVariables|Page variables]]%0a* [[#Expressions|Expressions]]%0a>>%3c%3c%0aThis page contains the most frequently used wiki markup, briefly. Follow the links in each section to learn more.%0a%0a!! [[#LinkMarkups]] Links%0a%0aSee [[Links]]%0a!!![[#ExternalLinks]]External links%0a-%3c [@http://example.com@]%0a-%3c [@ [[http://example.com]] @]%0a-%3c [@ [[http://example.com | link text]] @]%0a-%3c [@ [[link text -> http://example.com]] @]%0a%0a%0a[[#InternalLinks]]%0a!!! Page links%0a-%3c [@ [[PageName]] @]%0a-%3c [@ [[page name]] @]%0a-%3c [@ [[page (name)]] @]%0a-%3c [@ [[PageName | link text]] @]%0a-%3c [@ [[PageName | + ]] @] ''(titled link)''%0a-%3c [@ [[PageName | # ]] @] ''(anonymous numerical reference link)''%0a-%3c [@ [[link text -> PageName]] @]%0a-%3c [@ [[#anchor]] @] ''(to create an anchor)''%0a-%3c [@ [[#anchor | link text]] @] ''(to refer to an anchor)''%0a-%3c [@ [[PageName#anchor | link text]] @] ''(to refer to an anchor in another page)''%0a%0a[[#WikiPageLinks]]%0a!!! Wiki page links%0aSee [[Wiki word]] and [[Wiki group]]%0a-%3c [@WikiWord@]%0a-%3c [@`NonWikiWord@]%0a-%3c [@Group/PageName@]%0a-%3c [@Group.PageName@]%0a-%3c [@ [[GroupName/]] @]%0a-%3c [@ [[GroupName.]] @]%0a%0a[[#SpecialGroupLinks]]%0a!!! Special group links%0aSee [[Links]] and [[Categories]] %0a-%3c [@ [[~Author Name]] @]%0a-%3c [@ [[!Category Name]] @]%0a%0a[[#IntermapLinks]]%0a!!! Intermap links%0aSee [[Inter map]]%0a-%3c [@ [[Path:/path/local_document.html]] @]%0a-%3c [@ [[Wikipedia:WikiWikiWeb]] @]%0a%0a[[#UploadLinks]]%0a!!! Upload links%0aSee [[Uploads]]%0a-%3c [@ [[Attach:file with spaces.pdf]] @]%0a-%3c [@ [[Attach:Groupname/file with spaces.pdf]] @]%0a%0a[[#EmailLinks]]%0a!!! Email links%0a-%3c [@ [[mailto:someone@example.com]] @]%0a-%3c [@ [[mailto:someone@example.com | display text]] @]%0a-%3c [@ [[display text -> mailto:someone@example.com]] @]%0a%0a!! [[#Images]] Images%0a%0aSee [[Images]] and [[Uploads]]%0a!!! [[#ImagesAsImages]] Images as Images%0a-%3c [@http://example.com/image.gif@]%0a-%3c [@http://example.com/image.gif"alt text"@]%0a-%3c [@Attach:image.gif"My image"@]%0a-%3c [@Attach:Groupname/image.gif"image in another group"@]%0a-%3c [@Attach:Groupname.Pagename/image.gif"image on another page"@]%0a-%3c [@%25lfloat%25 Attach:image.gif@]%0a-%3c [@%25rfloat%25 Attach:image.gif@]%0a-%3c [@%25center%25 Attach:image.gif@]%0a-%3c [@%25rframe%25 Attach:image.gif | Caption@]%0a-%3c [@%25lframe%25 Attach:image.gif | Caption@]%0a-%3c [@%25width=200px%25 Attach:image.gif@]%0a-%3c [@%25thumb%25 Attach:image.gif@]%0a%0a%0a!!! [[#ImagesAsLinks]] Images as links%0a%0a-%3c [@ [[Attach:image.gif]] @]%0a-%3c [@ [[(Attach:)image.gif]] @]%0a-%3c [@ [[PageName | Attach:image.gif"alt text"]] @]%0a-%3c [@ [[http://example.com/ | Attach:image.gif"alt text"]] @]%0a-%3c [@%25rframe thumb%25 [[Attach:image.gif | Attach:image.gif"alt text"]] | Caption @]%0a%0a%0a!! [[#StartOfLine]] Start-of-line markup%0a%0aSee [[Text formatting rules]]%0a%0a!!! [[#Lists]] [[PmWiki/TextFormattingRules#BulletedLists| Lists]]%0a%0aSee [[(PmWiki:)List Styles]], [[Wiki styles]] and [[Cookbook:Outline lists]]%0a-%3c [@* unordered list@]%0a-%3c [@** deeper list@]%0a-%3c [@# ordered list@]%0a-%3c [@# %25item value=#%25@] arbitrary start number%0a-%3c [@# %25decimal%25, %25roman%25, %25ROMAN%25, %25alpha%25, %25ALPHA%25 @]%0a-%3c [@:term:definition@]%0aAlso%0a-%3c [@Q:@] start a question paragraph%0a-%3c [@A:@] start an answer paragraph%0a%0a%0a!!! [[#Headings]] Headings%0a%0a-%3c [@!! Heading@]%0a-%3c [@!!! Deeper heading@]%0a%0a%0a!!! [[#BlockMarkups]] Paragraph blocks%0a%0a-%3c [@-> indented text@]%0a-%3c [@-%3c hanging indent@]%0a-%3c [@%3cspace> preformatted text@]%0a-%3c @@[=[@...@]=]@@ preformatted block%0a-%3c [@----@] (horizontal rule)%0a-%3c [@blank line@] is vertical space%0a-%3c [@\@] at end of line joins next line%0a-%3c [@\\@] at end of line produces a line break%0a-%3c [@\\\@] at the end of a line produces a blank line, even within a list item%0a-%3c [@ [[%3c%3c]] @] produces a line break that clears floating content%0a%0a%0a!!! [[#DivisionBlocks]] Division blocks%0a%0aSee [[Wiki styles]] and [[Page directives]]%0a-%3c [@>>wikistyle%3c%3c@]%0a-> [@ (:div attr:) @]%0a-> [@ (:divend:) @]%0a-%3c [@>>%3c%3c@]%0a%0a%0a!! [[#Text]] Text markup%0a%0aSee [[Text formatting rules]]%0a!!! [[#InlineMarkups]] Character format%0a%0a-%3c [@''emphasized''@] %0a-%3c [@'''strong'''@]%0a-%3c [@'''''strong emphasis'''''@]%0a-%3c [@'~italic~'@] [-''(if enabled in config.php)''-]%0a-%3c [@'*bold*'@] [-''(if enabled in config.php)''-]%0a-%3c [@@@monospaced@@@]%0a-%3c [@[-small-], [--smaller--]@]%0a-%3c [@[+big+], [++bigger++]@]%0a-%3c [@'-small-', '+big+'@]%0a-%3c [@'^superscript^', '_subscript_'@]%0a-%3c [@{+inserted+} (underscore)@]%0a-%3c [@{-deleted-} (strikethrough)@]%0a-%3c @@[=[@escaped code@]=]@@%0a-%3c [@[=escaped text=]@]%0a%0a%0a!!! [[#PostingMarkups]] Posting markup%0a%0a-%3c @@~~@@@@~@@ (author's signature)%0a-%3c @@~~@@@@~~@@ (author's signature and date)%0a-%3c @@[=(:encrypt=] ''phrase''[=:)=]@@ -- replaced with encrypted form of ''phrase''%0a%0a%0a!! [[#Tables]] Tables%0a%0a!!! [[#PlainTables]] Plain rows and columns of text%0a%0aSee [[Tables]]%0a-%3c [@||table attributes@]%0a-%3c [@||!table caption!||@]%0a-%3c [@||left aligned || centered || right aligned||@]%0a-%3c [@||!column heading||@]%0a-%3c [@||spanned columns ||||||@]%0a%0a!!! [[#TablesAndDivs]] Structured tables%0a%0aSee [[Table directives ]]%0a-%3c [@ (:table attr:) @]%0a-%3c [@ (:cellnr attr:) @]%0a-%3c [@ (:cell attr:) @]%0a-%3c [@ (:tableend:) @]%0a%0a!! [[#Directives]] Directives%0a%0a!!! [[#PageDirectives]] Page directives%0a%0aSee [[Page directives]]%0a-%3c [@ (:redirect PageName:) @]%0a%0a-%3c [@ (:(no)spacewikiwords:) @]%0a-%3c [@ (:(no)linkwikiwords:) @]%0a-%3c [@ (:(no)linebreaks:) @]%0a-%3c [@ (:nl:) @] insert newline in the *markup* only if one isn't present. The purpose of [@ (:nl:) @] is to be able to write things like:%0a--> [@ (:include Page1:)(:nl:)(:include Page2:) @]%0a-> which guarantees that the first line of Page2 is treated as a separate line from the last line of Page1, but without inadvertently generating a blank line between them.%0a%0a!!! [[#Display]] Display%0a%0aSee [[Page directives]] [[Group headers]]%0a-%3c [@ (:noheader:), (:nofooter:) @]%0a-%3c [@ (:notitle:) @]%0a-%3c [@ (:noleft:), (:noright:) @]%0a-%3c [@ (:nogroupheader:), (:nogroupfooter:) @]%0a-%3c [@ (:noaction:) @]%0a%0a%0a!!! [[#Metadata]] Metadata%0a%0aSee [[Page directives]], [[(PmWiki:)Comment markup]], [[Page text variables]]%0a-%3c [@ (:title text:) @]%0a-%3c [@ (:keywords word, ...:) @]%0a-%3c [@ (:description text:) @]%0a-%3c [@ (:comment text:) @]%0a-%3c [@{Group/PageName$:Var}@] [-includes from [@ (:name:text:) @]-]%0a%0a%0a!!! [[#IncludeOtherPages]] Include%0a%0aSee [[Include other pages]], [[Page text variables]]%0a-%3c [@ (:include PageName:) @]%0a-%3c [@ (:include PageName #start#end lines=n paras=n:) @]%0a-%3c [@ (:include Page1 Page2 Page3:) @]%0a-%3c [@{Group/PageName$:Var}@] [-includes from [@ (:name:text:) @]-]%0a%0a!!! [[#ConditionalMarkup]] Conditional markup%0a%0aSee [[Conditional markup]]%0a-%3c [@ (:if (!)@] ''cond param''[@:)...(:ifend:)@]%0a-%3c [@ (:if (!)@] ''cond param''[@:)...(:else:)...(:ifend:)@]%0a-%3c [@ (:if (!)@] ''cond param''[@:)...(:elseif (!)@] ''cond param''[@:)...(:ifend:) @]%0a%0a%0a!!! [[#PageLists]] Pagelists%0a%0aSee [[Page lists]]%0a-%3c [@ (:searchbox label=label order=-time:) @]%0a-%3c [@ (:searchresults incl -excl group=abc fmt=def:) @]%0a-%3c [@ (:pagelist incl -excl group=abc fmt=def:) @]%0a%0a%0a!!! [[#OtherDirectives]] Other directives%0a%0aSee [[Page directives]]%0a-%3c [@ (:@][[PageDirectives#attachlist|attachlist]][@:) @]%0a-%3c [@ (:@][[PageDirectives#markup]][@:) @] [@ [=...=] @]%0a-%3c [@ (:markup:)...(:markupend:) @]%0a-%3c [@ (:markup class=horiz:)...(:markupend:) @]%0a-%3c [@ (:markup caption='...':)...(:markupend:) @]%0a%0a%0a!! [[#Forms]] Forms%0a%0aSee [[PmWiki/Forms]]%0a-%3c [@ (:input form method=get action=url enctype=multipart/form-data:) @]%0a-%3c [@ (:input end:) @]%0a-%3c [@ (:input text name=first value="Bob" size=20:) @]%0a-%3c [@ (:input submit name=post value="Go" accesskey=g:) @]%0a-%3c [@ (:input reset:) @]%0a-%3c [@ (:input hidden name=action value=edit:) @]%0a-%3c [@ (:input radio name=xyz value="abc" checked=1:) @]%0a-%3c [@ (:input checkbox name=xyz value="abc" checked=1:) @]%0a-%3c [@ (:input password name=authpw:) @]%0a-%3c [@ (:input file name=upload:) @]%0a-%3c [@ (:input image name=xyz src="http:..." alt="Alt Text":) @]%0a-%3c [@ (:input select name=xyz value="val1" label="Value 1":) @]%0a-%3c [@ (:input select name=xyz value="val2" label="Value 2":) @]%0a-%3c [@ (:input default name=xyz value="abc":) @]%0a%0a%0a!!! [[#EditForms]] Edit forms%0a%0aSee [[PmWiki/Forms#pageeditcontrols]]%0a-%3c [@ (:messages:) @]%0a-%3c [@ (:input e_form:) @]%0a-%3c [@ (:e_guibuttons:) @]%0a-%3c [@ (:e_preview:) @]%0a-%3c [@ (:input e_textarea rows=24 cols=60:) @]%0a-%3c [@ (:input e_author value={$Author} size=40:) @]%0a-%3c [@ (:input e_changesummary value="Summary" size=60:) @]%0a-%3c [@ (:input e_savebutton value=$[Save]:) @]%0a-%3c [@ (:input e_saveeditbutton value=$[Save and edit]:) @]%0a-%3c [@ (:input e_previewbutton value=$[Preview]:) @]%0a-%3c [@ (:input e_resetbutton value=$[Reset]:) @]%0a%0a%0a!! [[#WikiTrails]] Wiki trails%0a%0aSee [[Wiki trails]]%0a-%3c [@%3c%3c|[[TrailPage]]|>>@]%0a-%3c [@%3c|[[TrailPage]]|>@]%0a-%3c [@^|[[TrailPage]]|^@]%0a%0a%0a!! [[#PageVariables]] Page variables%0a%0aSee [[Page variables]], [[Page text variables]], [[PmWiki/PageLists#pagetextvariables|Page lists]]%0a-%3c [@ {@]''[@$variable@]''[@} @]%0a-%3c [@ {@]''[@pagename$variable@]''[@} @]%0a-%3c [@ (:name:description:) @] [-sets a [[page text variable(s)]]-]%0a%0a%0a!! [[#Expressions]] Expressions%0a%0aSee [[Markup expressions]]%0a-%3c [@ {(@]''[@function args@]''[@)} @]%0a%0a%0a +time=1242008374 title=Markup Master Index Index: wikilib.d/PmWiki.Search =================================================================== --- wikilib.d/PmWiki.Search (.../pmwiki-2.2.1) (revision 2344) +++ wikilib.d/PmWiki.Search (.../pmwiki-2.2.2) (revision 2344) @@ -1,14 +1,14 @@ version=pmwiki-2.2.1 ordered=1 urlencoded=1 -agent=Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.19) Gecko/20081216 Ubuntu/8.04 (hardy) Firefox/2.0.0.19 -author=Petko +agent=Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 +author=simon charset=ISO-8859-1 -csum=fix cond. +csum=remove link ctime=1150411168 description=A page for advanced and customized search options -host=81.65.14.164 +host=202.37.32.2 name=PmWiki.Search -rev=116 -targets=PmWiki.WikiTrails,PmWiki.PageLists,PmWiki.PageListDefaultTemplates,Site.PageListTemplates,Site.LocalTemplates,PmWiki.Search,Site.AllRecentChanges,Cookbook.Cookbook,PITS.PITS,Group.Name -text=(:description A page for advanced and customized search options:)%0a(:Summary:Targeting and customising search results:)%0a(:if !equal {$Action} "search":)%0a>>rframe width=300pcx font-size=smaller%3c%3c%0a-%3c '''This page uses [[#example|custom]] searches.'''%0aFor regular searches, view another page.%0a>>%3c%3c%0aPmWiki provides a basic search function. While it is not powered by a "search engine", it can be tweaked to produce results that are ''targeted'' and ''customized.'' %0a%0a!!!! Targeted searches%0aSearches can be targeted to restrict the search to certain pages. For example, a search can be restricted based on groups, where, for instance, "group=PmWiki" searches only the PmWiki group, and "group=-PmWiki" searches only pages that are not in the PmWiki group. In addition to groups, searches can be restricted based on page names ("name="), [[wiki trails]] ("trail="), backlinks ("link=") and other criteria (e.g. "list=normal") and capped at a maximum number ("count="). For documentation about each of these parameters, see [[page lists]]. %0a%0a!!!! Customized display%0aThe display of search results can be customized to control the format, content and order of the returned results. Format and content are selected by using "fmt=" to specify a pagelist template that determines layout, such as list styles, and page elements, such as title and description. The "order=" option allows results to be sorted according to different criteria, such as name and title. For documentation about each of these parameters, see [[page lists]]. For examples of pagelist template formats see [[PmWiki.PageListDefaultTemplates]], [[Site.Page List Templates]], (:if exists Site.LocalTemplates:)[[Site.Local Templates]],(:ifend:) and [[Cookbook:Pagelist Template Samples]].%0a%0a!!!! Anyone, anywhere%0a'''Readers''' can create targeted and customized search results simply by typing the relevant parameters , e.g. "group=PmWiki", into search boxes together with their search string. '''Authors''' can predefine such targeted and customized searches by incorporating the parameters into pages using the [@(:searchbox:)@] and [@(:searchresults:)@] directives (documented at [[PageLists]]).%0a%0a[@(:searchresults:)@] can be customized by editing page [@Site.Search@].%0a%0aSee also%0a* $PageSearchForm %0a* $SearchBoxOpt%0a* $SearchPatterns%0a%0a%0a[[#example]]%0a!!!!Try it: this page generates custom searches%0aAny search that is run from this page will automatically generate pre-defined sets of search results that: '''''target''''' different clusters of pages (documentation, cookbook and PITS, if available); use '''''customized''''' formats, content and ordering; and '''''reveal''''' the specific parameters used to generate each search result. Whether you use the search box below, or the regular search box that appears at the top of this page, any search that you run from this page will provide the customized results. %0a(:searchbox size=20:)%0a%0a%0a%0a(:ifend:)%0a(:if equal {$Action} "search":)%0a[[{$Name}|back]]\%0a%0a(:table border=0 width=100%25:)\%0a%0a(:cell width=30%25:)\%0a%0a!!!! [[Site/AllRecentChanges?q=PmWiki/+order%253Dname&action=search|All Documentation]]%0a(:searchresults group=PmWiki fmt=#onegroupdesc order=name:)%0a(:if expr exists Cookbook.Cookbook and equal {$Action} "search":)%0a(:cell width=35%25:)\%0a%0a!!!! [[Cookbook.Cookbook|All Cookbook Recipes]]%0a(:searchresults group=Cookbook fmt=#summary order=name:)%0a(:if expr exists PITS.PITS and equal {$Action} "search":)%0a(:cell width=35%25:)\%0a%0a!!!! [[PITS.PITS|PITS (Issue Tracking)]]%0a(:searchresults group=PITS fmt=#summary name=0* order=-name:)%0a(:if equal {$Action} "search":)%0a(:tableend:)%0a%0aNote: The strings that were used to target and format each search result are shown above in '''italics'' and can be entered directly into a regular search box.%0a%0a%0a(:title Search:)%0a(:if false:)%0a%0a[[#onegroupdesc]]%0a[[{=$Group}/{=$Name}]] %25font-size=smaller font-style=italic%25{=$Description}%25%25\\%0a[[#onegroupend]]%0a%0a[[#summary]]%0a[[{=$Group}/{=$Name}]] %25font-size=smaller font-style=italic%25{=$:Summary}%25%25\\%0a[[#summaryend]]%0a(:ifend:) -time=1238277415 +rev=117 +targets=PmWiki.WikiTrails,PmWiki.PageLists,Site.PageListTemplates,Site.LocalTemplates,PmWiki.Search,Site.AllRecentChanges,Cookbook.Cookbook,PITS.PITS,Group.Name +text=(:description A page for advanced and customized search options:)%0a(:Summary:Targeting and customising search results:)%0a(:if !equal {$Action} "search":)%0a>>rframe width=300pcx font-size=smaller%3c%3c%0a-%3c '''This page uses [[#example|custom]] searches.'''%0aFor regular searches, view another page.%0a>>%3c%3c%0aPmWiki provides a basic search function. While it is not powered by a "search engine", it can be tweaked to produce results that are ''targeted'' and ''customized.'' %0a%0a!!!! Targeted searches%0aSearches can be targeted to restrict the search to certain pages. For example, a search can be restricted based on groups, where, for instance, "group=PmWiki" searches only the PmWiki group, and "group=-PmWiki" searches only pages that are not in the PmWiki group. In addition to groups, searches can be restricted based on page names ("name="), [[wiki trails]] ("trail="), backlinks ("link=") and other criteria (e.g. "list=normal") and capped at a maximum number ("count="). For documentation about each of these parameters, see [[page lists]]. %0a%0a!!!! Customized display%0aThe display of search results can be customized to control the format, content and order of the returned results. Format and content are selected by using "fmt=" to specify a pagelist template that determines layout, such as list styles, and page elements, such as title and description. The "order=" option allows results to be sorted according to different criteria, such as name and title. For documentation about each of these parameters, see [[page lists]]. For examples of pagelist template formats see [[Site.Page List Templates]], (:if exists Site.LocalTemplates:)[[Site.Local Templates]],(:ifend:) and [[Cookbook:Pagelist Template Samples]].%0a%0a!!!! Anyone, anywhere%0a'''Readers''' can create targeted and customized search results simply by typing the relevant parameters , e.g. "group=PmWiki", into search boxes together with their search string. '''Authors''' can predefine such targeted and customized searches by incorporating the parameters into pages using the [@(:searchbox:)@] and [@(:searchresults:)@] directives (documented at [[PageLists]]).%0a%0a[@(:searchresults:)@] can be customized by editing page [@Site.Search@].%0a%0aSee also%0a* $PageSearchForm %0a* $SearchBoxOpt%0a* $SearchPatterns%0a%0a%0a[[#example]]%0a!!!!Try it: this page generates custom searches%0aAny search that is run from this page will automatically generate pre-defined sets of search results that: '''''target''''' different clusters of pages (documentation, cookbook and PITS, if available); use '''''customized''''' formats, content and ordering; and '''''reveal''''' the specific parameters used to generate each search result. Whether you use the search box below, or the regular search box that appears at the top of this page, any search that you run from this page will provide the customized results. %0a(:searchbox size=20:)%0a%0a%0a%0a(:ifend:)%0a(:if equal {$Action} "search":)%0a[[{$Name}|back]]\%0a%0a(:table border=0 width=100%25:)\%0a%0a(:cell width=30%25:)\%0a%0a!!!! [[Site/AllRecentChanges?q=PmWiki/+order%253Dname&action=search|All Documentation]]%0a(:searchresults group=PmWiki fmt=#onegroupdesc order=name:)%0a(:if expr exists Cookbook.Cookbook and equal {$Action} "search":)%0a(:cell width=35%25:)\%0a%0a!!!! [[Cookbook.Cookbook|All Cookbook Recipes]]%0a(:searchresults group=Cookbook fmt=#summary order=name:)%0a(:if expr exists PITS.PITS and equal {$Action} "search":)%0a(:cell width=35%25:)\%0a%0a!!!! [[PITS.PITS|PITS (Issue Tracking)]]%0a(:searchresults group=PITS fmt=#summary name=0* order=-name:)%0a(:if equal {$Action} "search":)%0a(:tableend:)%0a%0aNote: The strings that were used to target and format each search result are shown above in '''italics'' and can be entered directly into a regular search box.%0a%0a%0a(:title Search:)%0a(:if false:)%0a%0a[[#onegroupdesc]]%0a[[{=$Group}/{=$Name}]] %25font-size=smaller font-style=italic%25{=$Description}%25%25\\%0a[[#onegroupend]]%0a%0a[[#summary]]%0a[[{=$Group}/{=$Name}]] %25font-size=smaller font-style=italic%25{=$:Summary}%25%25\\%0a[[#summaryend]]%0a(:ifend:) +time=1238621785 title=Search Index: wikilib.d/PmWiki.Functions =================================================================== --- wikilib.d/PmWiki.Functions (.../pmwiki-2.2.1) (revision 2344) +++ wikilib.d/PmWiki.Functions (.../pmwiki-2.2.2) (revision 2344) @@ -5,7 +5,7 @@ csum=fix link host=81.65.14.164 name=PmWiki.Functions -rev=73 -targets=PmWiki.Variables,PmWiki.Internationalizations,PmWiki.FmtPageName,PmWiki.CustomMarkup,PmWiki.ConditionalMarkup,PmWiki.Drafts -text=(:Summary: How some of the functions in pmwiki.php work:)%0a(:Audience: admins (advanced) :)%0a%0aThis page describes some of the internal workings of PmWiki by explaining how some of the functions in pmwiki.php work. For a more brief list/overview on functions useful to for instance cookbook writers, see Cookbook:Functions. %0a%0a!![[#PSS]] [@PSS($string)@]%0a%0aThe PSS() function removes the backslashes that are%0aautomatically inserted in front of quotation marks by%0athe /e option of PHP's preg_replace function. PSS() is%0amost commonly used in replacement arguments to Markup(),%0awhen the pattern specifies /e and one or more of the %0aparenthesized subpatterns could contain a quote or backslash. %0a("PSS" stands for "PmWiki Strip Slashes".)%0a-->From PM: PmWiki expects PSS() to always occur inside of double-quoted strings and to contain single quoted strings internally. The reason for this is that we don't want the $1 or $2 to accidentally contain characters that would then be interpreted inside of the double-quoted string when the PSS is evaluated.%0a--->@@Markup('foo', 'inline', '/(something)/e', 'Foo(PSS("$1"))'); # wrong@@%0a--->@@Markup('foo', 'inline', '/(something)/e', "Foo(PSS('$1'))"); # right@@%0a%0a!!! Example%0aThis is a fictitious example where PSS() should be used.%0aLet us assume that you wish to define a directive [@(:example:)@]%0asuch that [@(:example "A horse":)@] results in the HTML%0a-> [@%3cdiv>"A horse"%3c/div>@].%0aHere is how the markup rule can be created:%0a-> [@%0aMarkup('example', 'directives',%0a '/\\(:example\\s(.*?):\\)/e',%0a "Keep('%3cdiv>'.PSS('$1').'%3c/div>')");%0a@]%0aWe need to use PSS() around the '$1' because the matched text%0acould contain quotation marks, and the /e will add backslashes%0ain front of them.%0a%0a!![[#stripmagic]] [@stripmagic($string)@]%0a%0aThis function should be used when processing the contents of [@$_POST@] or [@_GET@] variables when they could contain quotes or backslashes. It verifies [@get_magic_quotes()@], if true,%0astrips the automatically inserted escapes from the string.%0a%0a!![[#FmtPageName]] [@FmtPageName@]($fmt, $pagename)%0a%0a[[#FmtPageName-desc]]Returns [@$fmt@], with $variable and [=$[internationalisation]=] substitutions performed, under the assumption that the current page is [@pagename@]. See [[PmWiki.Variables]] for an (incomplete) list of available variables, [[PmWiki.Internationalizations]] for internationalisation. Security: not to be run on user-supplied data.%0a%0aThis is one of the major functions in PmWiki, see [[PmWiki.FmtPageName]] for%0alots of details.%0a%0a%0a!![[#Markup]] [@Markup@]($name, $when, $pattern, $replace)%0a%0a[[#Markup-desc]]Adds a new markup to the conversion table. Described in greater detail at PmWiki.CustomMarkup.%0a%0aThis function is used to insert translation rules into the PmWiki's%0atranslation engine. The arguments to [@Markup()@] are all strings, where:%0a%0a:[@$name@]: The string names the rule that is inserted. If a rule of the same name already exists, then this rule is ignored.%0a:[@$when@]: This string is used to control ''when'' a rule is to be applied relative to other rules. A specification of "[@%3cxyz@]" says to apply this rule prior to the rule named "xyz", while "[@>xyz@]" says to apply this rule after the rule "xyz". See [[(PmWiki:)CustomMarkup]] for more details on the order of rules.%0a:[@$pattern@]: This string is a [[regular expression -> http://www.php.net/preg_replace]] that is used by the translation engine to look for occurences of this rule in the markup source.%0a:[@$replace@]: This string will replace the matched text when a match occurs.%0a%0aAlso see: [[PmWiki.CustomMarkup]] and [[Cookbook:Functions#Markup]]%0a%0a!![[#MarkupToHTML]] [@MarkupToHTML@]($pagename, $str)%0a%0a[[#MarkupToHTML-desc]] Converts the string [@$str@] containing PmWiki markup into the corresponding HTML code, assuming the current page is [@$pagename@].%0a%0aAlso see: [[Cookbook:Functions#MarkupToHTML]]%0a%0a!![[#mkdirp]] [@mkdirp@]($dir)%0a%0aThe function [@mkdirp@]($dir) creates a directory, [@$dir@], if it doesn't%0aalready exist, including any parent directories that might be needed. For%0aeach directory created, it checks that the permissions on the directory are%0asufficient to allow PmWiki scripts to read and write files in that%0adirectory. This includes checking for restrictions imposed by PHP's%0asafe_mode setting. If [@mkdirp@]() is unable to successfully create a%0aread/write directory, [@mkdirp@]() aborts with an error message telling the%0aadministrator the steps to take to either create $dir manually or give%0aPmWiki sufficient permissions to be able to do it.%0a%0a!![[#MakeLink]] [@MakeLink@]($pagename, $target, $txt, $suffix, $fmt)%0a%0aThe function [@MakeLink@]($pagename, $target, $txt, $suffix, $fmt) returns a ???. Its arguments are as follows:%0a $pagename is the source page%0a $target is where the link should go%0a $txt is the value to use for '$LinkText' in the output %0a $suffix is any suffix string to be added to $txt%0a $fmt is a format string to use%0a%0aIf $txt is NULL or not specified, then it is automatically computed from $target.%0a%0aIf $fmt is NULL or not specified, then MakeLink uses the default%0aformat as specified by the type of link. For page links this%0ameans the $LinkPageExistsFmt and $LinkPageCreateFmt variables,%0afor intermap-style links it comes from either the $IMapLinkFmt%0aarray or from $UrlLinkFmt. Inside of the formatting strings,%0a$LinkUrl is replaced by the resolved url for the link, $LinkText%0ais replaced with the appropriate text, and $LinkAlt is replaced%0aby any "title" (alternate text) information associated with the%0alink.%0a%0aAlso see: [[PmWiki:MakeLink]] and [[Cookbook:Functions#MakeLink]]%0a%0a!![[#MakeUploadName]] [@MakeUploadName@]($pagename, $x)%0a%0a@@MakeUploadName()@@ simply takes a string @@$x@@ (representing an attachment's%0aname) and converts it to a valid name by removing any unwanted characters.%0aIt also requires the name to begin and end with an alphanumeric character,%0aand as of 2.0.beta28 it forces any file extensions to lowercase.%0aThis function is defined in @@scripts/upload.php@@ and only used when uploads%0aare enabled.%0a%0a!![[#SessionAuth]] [@SessionAuth@]($pagename, $auth=NULL)%0a%0a@@SessionAuth()@@ manages keeping authentication via cookie-sessions. Session contains%0aever password or vaidated id and associated groups from previous calls.It adds%0aelements passed by @@$auth@@ to session. It also writes every element%0asaved in session to @@$AuthPw@@(passwords) and @@$AuthList@@(ids and groups).%0a%0a!![[#IsAuthorized]] [@IsAuthorized@]($chal, $source, &$from)%0a@@IsAuthorized@@ takes a pageattributesstring (e. g. "id:user1 $1$Ff3w34HASH...") in @@$chal@@.%0a@@$source@@ is simply returned and used for building the authcascade (pageattributes - groupattributes - %0a@@$DefaultPassword@@). @@$from@@ will be returned if @@$chal@@ is empty, because it is not checked %0abefore calling @@IsAuthorized()@@, this is needed for the authcascade. @@IsAuthorized()@@ returns an array%0awith three values: @@$auth@@ @@1@@ - authenticated, @@0@@ - not authenticated, @@-1@@ - refused; @@$passwd@@; %0a@@$source@@ from the parameter list.%0a%0a!![[#CondAuth]] [@CondAuth@] ($pagename, 'auth level')%0a[@CondAuth@] implements the [[ConditionalMarkup]] for [@(:if auth level:)@]. For instance [@ CondAuth($pagename,'edit')@] is true if authorization level is 'edit'. Use inside local configuration files to build conditionals with a check of authorization level, similar to using [@(:if auth level:)@] on a wiki page.%0a%0aNote that CondAuth() should be called after all authorization levels and passwords have been defined. For example, if you use it with [[Drafts]], you should include the draft.php script before calling CondAuth():%0a[@%0a $EnableDrafts = 1;%0a $DefaultPasswords['publish'] = crypt('secret');%0a include_once("$FarmD/scripts/draft.php");%0a if (! CondAuth($pagename, 'edit')) { /* whatever */ }%0a@]%0aBest is to use CondAuth() near the bottom of your config.php script.%0a%0a!! [[#UpdatePage]] @@UpdatePage($pagename, $old (page object), $new (page object));@@%0a''[[PmWiki:UpdatePage|More Technical Notes]]''%0a%0a[@UpdatePage()@] allows cookbook recipes to mimic the behavior of editing wiki pages via the browser. Internally, PmWiki does several house keeping tasks which are accessible via this function (preserving history/diff information, updating page revision numbers, updating RecentChanges pages, sending email notifications, etc._%0a* "Page object" refers to an array pulled from [@ReadPage($pagename); @] Note that $new['text'] should contain all page data for the new version of the page. %0a* If a page doesn't exist, UpdatePage() will attempt to create it.%0a* Ignoring $old (e.g. [@UpdatePage($pagename, '', $new);@]) will erase all historical page data---a ''tabula rasa''.%0a -time=1238275768 +rev=82 +targets=PmWiki.CustomMarkup,PmWiki.Variables,PmWiki.Internationalizations,PmWiki.FmtPageName,PmWiki.ConditionalMarkup,PmWiki.Drafts +text=(:Summary: How some of the functions in pmwiki.php work:)%0a(:Audience: admins (advanced) :)%0a%0aThis page describes some of the internal workings of PmWiki by explaining how some of the functions in pmwiki.php work. For a more brief list/overview on functions useful to for instance cookbook writers, see Cookbook:Functions. %0a%0aTo use this functions you have to make sure that all relevant internal variables have been initialized correctly. See [[Custom Markup]] and [[(PmWiki:)Custom Actions]] for more information on how these functions are typically called via [@Markup()@] or [@$HandleActions[]@].%0a%0a%0a!![[#PSS]] [@PSS($string)@]%0a%0aThe PSS() function removes the backslashes that are%0aautomatically inserted in front of quotation marks by%0athe /e option of PHP's preg_replace function. PSS() is%0amost commonly used in replacement arguments to Markup(),%0awhen the pattern specifies /e and one or more of the %0aparenthesized subpatterns could contain a quote or backslash. %0a("PSS" stands for "PmWiki Strip Slashes".)%0a-->From PM: PmWiki expects PSS() to always occur inside of double-quoted strings and to contain single quoted strings internally. The reason for this is that we don't want the $1 or $2 to accidentally contain characters that would then be interpreted inside of the double-quoted string when the PSS is evaluated.%0a--->@@Markup('foo', 'inline', '/(something)/e', 'Foo(PSS("$1"))'); # wrong@@%0a--->@@Markup('foo', 'inline', '/(something)/e', "Foo(PSS('$1'))"); # right@@%0a%0a!!! Example%0aThis is a fictitious example where PSS() should be used.%0aLet us assume that you wish to define a directive [@(:example:)@]%0asuch that [@(:example "A horse":)@] results in the HTML%0a-> [@%3cdiv>"A horse"%3c/div>@].%0aHere is how the markup rule can be created:%0a-> [@%0aMarkup('example', 'directives',%0a '/\\(:example\\s(.*?):\\)/e',%0a "Keep('%3cdiv>'.PSS('$1').'%3c/div>')");%0a@]%0aWe need to use PSS() around the '$1' because the matched text%0acould contain quotation marks, and the /e will add backslashes%0ain front of them.%0a%0a!![[#stripmagic]] [@stripmagic($string)@]%0a%0aThis function should be used when processing the contents of [@$_POST@] or [@_GET@] variables when they could contain quotes or backslashes. It verifies [@get_magic_quotes()@], if true,%0astrips the automatically inserted escapes from the string.%0a%0a!![[#FmtPageName]] [@FmtPageName@]($fmt, $pagename)%0a%0a[[#FmtPageName-desc]]Returns [@$fmt@], with $variable and [=$[internationalisation]=] substitutions performed, under the assumption that the current page is [@pagename@]. See [[PmWiki.Variables]] for an (incomplete) list of available variables, [[PmWiki.Internationalizations]] for internationalisation. Security: not to be run on user-supplied data.%0a%0aThis is one of the major functions in PmWiki, see [[PmWiki.FmtPageName]] for%0alots of details.%0a%0a%0a!![[#Markup]] [@Markup@]($name, $when, $pattern, $replace)%0a%0a[[#Markup-desc]]Adds a new markup to the conversion table. Described in greater detail at PmWiki.CustomMarkup.%0a%0aThis function is used to insert translation rules into the PmWiki's%0atranslation engine. The arguments to [@Markup()@] are all strings, where:%0a%0a:[@$name@]: The string names the rule that is inserted. If a rule of the same name already exists, then this rule is ignored.%0a:[@$when@]: This string is used to control ''when'' a rule is to be applied relative to other rules. A specification of "[@%3cxyz@]" says to apply this rule prior to the rule named "xyz", while "[@>xyz@]" says to apply this rule after the rule "xyz". See [[(PmWiki:)CustomMarkup]] for more details on the order of rules.%0a:[@$pattern@]: This string is a [[regular expression -> http://www.php.net/preg_replace]] that is used by the translation engine to look for occurences of this rule in the markup source.%0a:[@$replace@]: This string will replace the matched text when a match occurs.%0a%0aAlso see: [[PmWiki.CustomMarkup]] and [[Cookbook:Functions#Markup]]%0a%0a!![[#MarkupToHTML]] [@MarkupToHTML@]($pagename, $str)%0a%0a[[#MarkupToHTML-desc]] Converts the string [@$str@] containing PmWiki markup into the corresponding HTML code, assuming the current page is [@$pagename@].%0a%0aAlso see: [[Cookbook:Functions#MarkupToHTML]]%0a%0a!![[#mkdirp]] [@mkdirp@]($dir)%0a%0aThe function [@mkdirp@]($dir) creates a directory, [@$dir@], if it doesn't%0aalready exist, including any parent directories that might be needed. For%0aeach directory created, it checks that the permissions on the directory are%0asufficient to allow PmWiki scripts to read and write files in that%0adirectory. This includes checking for restrictions imposed by PHP's%0asafe_mode setting. If [@mkdirp@]() is unable to successfully create a%0aread/write directory, [@mkdirp@]() aborts with an error message telling the%0aadministrator the steps to take to either create $dir manually or give%0aPmWiki sufficient permissions to be able to do it.%0a%0a!![[#MakeLink]] [@MakeLink@]($pagename, $target, $txt, $suffix, $fmt)%0a%0aThe function [@MakeLink@]($pagename, $target, $txt, $suffix, $fmt) returns a ???. Its arguments are as follows:%0a $pagename is the source page%0a $target is where the link should go%0a $txt is the value to use for '$LinkText' in the output %0a $suffix is any suffix string to be added to $txt%0a $fmt is a format string to use%0a%0aIf $txt is NULL or not specified, then it is automatically computed from $target.%0a%0aIf $fmt is NULL or not specified, then MakeLink uses the default%0aformat as specified by the type of link. For page links this%0ameans the $LinkPageExistsFmt and $LinkPageCreateFmt variables,%0afor intermap-style links it comes from either the $IMapLinkFmt%0aarray or from $UrlLinkFmt. Inside of the formatting strings,%0a$LinkUrl is replaced by the resolved url for the link, $LinkText%0ais replaced with the appropriate text, and $LinkAlt is replaced%0aby any "title" (alternate text) information associated with the%0alink.%0a%0aAlso see: [[PmWiki:MakeLink]] and [[Cookbook:Functions#MakeLink]]%0a%0a!![[#MakeUploadName]] [@MakeUploadName@]($pagename, $x)%0a%0a@@MakeUploadName()@@ simply takes a string @@$x@@ (representing an attachment's%0aname) and converts it to a valid name by removing any unwanted characters.%0aIt also requires the name to begin and end with an alphanumeric character,%0aand as of 2.0.beta28 it forces any file extensions to lowercase.%0aThis function is defined in @@scripts/upload.php@@ and only used when uploads%0aare enabled.%0a%0a!![[#SessionAuth]] [@SessionAuth@]($pagename, $auth=NULL)%0a%0a@@SessionAuth()@@ manages keeping authentication via cookie-sessions. Session contains%0aever password or vaidated id and associated groups from previous calls.It adds%0aelements passed by @@$auth@@ to session. It also writes every element%0asaved in session to @@$AuthPw@@(passwords) and @@$AuthList@@(ids and groups).%0a%0a!![[#IsAuthorized]] [@IsAuthorized@]($chal, $source, &$from)%0a@@IsAuthorized@@ takes a pageattributesstring (e. g. "id:user1 $1$Ff3w34HASH...") in @@$chal@@.%0a@@$source@@ is simply returned and used for building the authcascade (pageattributes - groupattributes - %0a@@$DefaultPassword@@). @@$from@@ will be returned if @@$chal@@ is empty, because it is not checked %0abefore calling @@IsAuthorized()@@, this is needed for the authcascade. @@IsAuthorized()@@ returns an array%0awith three values: @@$auth@@ @@1@@ - authenticated, @@0@@ - not authenticated, @@-1@@ - refused; @@$passwd@@; %0a@@$source@@ from the parameter list.%0a%0a!![[#CondAuth]] [@CondAuth@] ($pagename, 'auth level')%0a[@CondAuth@] implements the [[ConditionalMarkup]] for [@(:if auth level:)@]. For instance [@ CondAuth($pagename,'edit')@] is true if authorization level is 'edit'. Use inside local configuration files to build conditionals with a check of authorization level, similar to using [@(:if auth level:)@] on a wiki page.%0a%0aNote that CondAuth() should be called after all authorization levels and passwords have been defined. For example, if you use it with [[Drafts]], you should include the draft.php script before calling CondAuth():%0a[@%0a $EnableDrafts = 1;%0a $DefaultPasswords['publish'] = crypt('secret');%0a include_once("$FarmD/scripts/draft.php");%0a if (! CondAuth($pagename, 'edit')) { /* whatever */ }%0a@]%0aBest is to use CondAuth() near the bottom of your config.php script.%0a%0a!! [[#RetrieveAuthPage]] @@RetrieveAuthPage($pagename, $level, $authprompt=true, $since=0)@@%0a%0aUse e.g. [@$page = @RetrieveAuthPage('Main.MyPage', 'read')@] to obtain a page object that contains all the information of the correspondent file in separate keys, e.g. [@$page['text']@] will contain a string with the current wiki markup of Main.MyPage. Use this generally in preference to the alternative function [@ReadPage($pagename, $since=0)@] since it respects the authorisation of the user, i.e. it checks the authorisation level before loading the page, or it can be set to do so. [@ReadPage()@] reads a page regardless of permission.%0a%0a!! [[#UpdatePage]] @@UpdatePage($pagename, $old (page object), $new (page object));@@%0a''[[PmWiki:UpdatePage|More Technical Notes]]''%0a%0a[@UpdatePage()@] allows cookbook recipes to mimic the behavior of editing wiki pages via the browser. Internally, PmWiki does several house keeping tasks which are accessible via this function (preserving history/diff information, updating page revision numbers, updating RecentChanges pages, sending email notifications, etc._%0a* "Page object" refers to an array pulled from [@ReadPage($pagename); @] Note that $new['text'] should contain all page data for the new version of the page. %0a* If a page doesn't exist, UpdatePage() will attempt to create it.%0a* Ignoring $old (e.g. [@UpdatePage($pagename, '', $new);@]) will erase all historical page data---a ''tabula rasa''.%0a@@UpdatePage()@@ cannot be called directly from config.php because there are necessary initializations which occur later in pmwiki.php. It is not enough to just load stdconfig.php. If you want to use @@UpdatePage()@@ you will need to do it within a custom markup, a custom markup expression, or a custom action. +time=1238832539 Index: wikilib.d/Site.EditForm =================================================================== --- wikilib.d/Site.EditForm (.../pmwiki-2.2.1) (revision 2344) +++ wikilib.d/Site.EditForm (.../pmwiki-2.2.2) (revision 2344) @@ -1,11 +1,11 @@ -version=pmwiki-2.2.0 ordered=1 urlencoded=1 +version=pmwiki-2.2.1 ordered=1 urlencoded=1 agent=Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.19) Gecko/20081216 Ubuntu/8.04 (hardy) Firefox/2.0.0.19 author=Petko charset=ISO-8859-1 -csum=revert honeypot +csum=fix for dist host=81.65.14.164 name=Site.EditForm -rev=59 +rev=60 targets= -text=(:Summary:contains the edit page layout form:)%0a!! $[Editing {*$FullName}] %25block class=wikiaction%25%0a(:messages:)%0a(:div id='wikiedit':)%0a(:input e_form:)[[#top]](:e_guibuttons:)\\%0a(:input e_textarea:)\\%0a$[Summary]: (:input e_changesummary:)\\%0a$[Author]: (:input e_author:) (:input e_minorcheckbox:) $[This is a minor edit]\\%0a(:input e_savebutton:) (:input e_savedraftbutton:) (:input e_saveeditbutton:) (:input e_previewbutton:) (:input e_cancelbutton:)%0a(:input hidden code1 6472:)%0a%25comment%25Enter code: (:input text code2:)%0a(:input end:)%0a(:divend:)%0a(:include $[{$SiteGroup}/EditQuickReference]:)%0a(:if e_preview:)%0a!! $[Preview {*$FullName}]%0a'''$[Page is unsaved]'''%0a(:e_preview:)%0a----%0a'''$[End of preview -- remember to save]'''\\%0a[[#top | $[Top] ]]%0a(:ifend:)%0a -time=1237082149 +text=(:Summary:contains the edit page layout form:)%0a!! $[Editing {*$FullName}] %25block class=wikiaction%25%0a(:messages:)%0a(:div id='wikiedit':)%0a(:input e_form:)[[#top]](:e_guibuttons:)\\%0a(:input e_textarea:)\\%0a$[Summary]: (:input e_changesummary:)\\%0a$[Author]: (:input e_author:) (:input e_minorcheckbox:) $[This is a minor edit]\\%0a(:input e_savebutton:) (:input e_savedraftbutton:) (:input e_saveeditbutton:) (:input e_previewbutton:) (:input e_cancelbutton:)%0a(:input end:)%0a(:divend:)%0a(:include $[{$SiteGroup}/EditQuickReference]:)%0a(:if e_preview:)%0a!! $[Preview {*$FullName}]%0a'''$[Page is unsaved]'''%0a(:e_preview:)%0a----%0a'''$[End of preview -- remember to save]'''\\%0a[[#top | $[Top] ]]%0a(:ifend:)%0a +time=1238832950 Index: wikilib.d/PmWiki.ReleaseNotes =================================================================== --- wikilib.d/PmWiki.ReleaseNotes (.../pmwiki-2.2.1) (revision 2344) +++ wikilib.d/PmWiki.ReleaseNotes (.../pmwiki-2.2.2) (revision 2344) @@ -1,12 +1,12 @@ -version=pmwiki-2.2.0 ordered=1 urlencoded=1 -agent=Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.7) Gecko/2009030422 Ubuntu/8.04 (hardy) Firefox/3.0.7 -author=Pm +version=pmwiki-2.2.1 ordered=1 urlencoded=1 +agent=Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.19) Gecko/20081216 Ubuntu/8.04 (hardy) Firefox/2.0.0.19 +author=Petko charset=ISO-8859-1 csum= -host=72.181.176.220 +host=86.69.109.11 name=PmWiki.ReleaseNotes -rev=420 +rev=421 targets=Site.Site,SiteAdmin.SiteAdmin,PITS.00961,Profiles.Isidor,Site.PageActions,Site.EditForm,Site.PageNotFound,PmWiki.PageLists,PmWiki.WikiTrails,PmWiki.Blocklist,SiteAdmin.AuthList,PmWiki.SkinTemplates,PmWiki.AuthUser,Site.AuthUser,PmWiki.WikiFarms,PmWiki.MailPosts,PmWiki.Notify,PmWiki.LocalCustomizations,Site.PageListTemplates,Site.SideBar,PmWiki.PageVariables,PmWiki.WebFeeds,PmWiki.InterMap,PmWiki.WikiStyles,PmWiki.ConditionalMarkup,PmWiki.Categories,PmWiki.Images,PmWiki.ChangeLog,Site.Search,PmWiki.Tables -text=(:title Release Notes:)%0a(:Summary: PmWiki release notes:)%0a%0a!! Version 2.2.1 (2009-03-28)%0aThis release comes with an updated local documentation; wikiTrails now work cross-group; guiedit.php now produces valid HTML, and other small bugs were fixed. We also added $EnableRedirectQuiet, which allows redirects to take place without any mention of "redirected from page ....".%0a%0a!! Version 2.2.0 (2009-01-18)%0a%0aThis is a summary of changes from 2.1.x to 2.2.0.%0a%0a* Several pages that were formerly in the [[Site]].* group are now in a separate [[SiteAdmin]].* group, which is read-restricted by default. The affected pages include Site.AuthUser, Site.AuthList, Site.NotifyList, Site.Blocklist, and Site.ApprovedUrls . If upgrading from an earlier version of PmWiki, PmWiki will prompt to automatically copy these pages to their new location if needed. If a site wishes to continue using the old Site.* group for these pages, simply set%0a%0a-> $SiteAdminGroup = $SiteGroup;%0a%0a-> when carrying out this upgrade inspect your config files for lines such as%0a--> $BlocklistDownload['Site.Blocklist-PmWiki'] = array('format' => 'pmwiki');%0a->as you may wish to fix then, eg%0a--> $BlocklistDownload[$SiteAdminGroup . '.Blocklist-PmWiki'] = array('format' => 'pmwiki');%0a%0a* Important Change in Passwords in PmWiki 2.2 indicating that the group can be edited even if a site password is set will be done by @@"@nopass"@@ prior it was done by @@"nopass"@@%0a-> When migrating a wiki you will have to manually modify the permission or by a script replace in all the page concerned @@passwdread=nopass:@@ by @@passwdread=@nopass@@ (see [[PITS/00961]]) [[~isidor]]%0a%0a* PmWiki now ships with WikiWords entirely disabled by default. To re-enable them, set either $LinkWikiWords or $EnableWikiWords to 1. To get the 2.1 behavior where WikiWords are spaced and parsed but don't form links, use the following:%0a-> $EnableWikiWords = 1;%0a-> $LinkWikiWords = 0;%0a%0a* It's now easy to disable the rule that causes lines with leading spaces to be treated as preformatted text -- simply set $EnableWSPre=0; to disable this rule.%0a%0a--> '''Important:''' There is ongoing discussion that the leading whitespace rule may be disabled ''by default'' in a future versions of PmWiki. If you want to make sure that the rule will continue to work in future upgrades, set $EnableWSPre=1; in ''local/config.php''.%0a%0a* The $ROSPatterns variable has changed somewhat -- replacement strings are no longer automatically passed through FmtPageName() prior to substitution (i.e., it must now be done explicitly).%0a%0a* Page variables and page links inside of [@(:include:)@] pages are now treated as relative to the included page, instead of the currently browsed page. In short, the idea is that links and page variables should be evaluated with respect to the page in which they are written, as opposed to the page in which they appear. This seems to be more in line with what authors expect. There are a number of important ramifications of this change:%0a%0a[[#relativeurls]]%0a** We now have a new [@{*$var}@] form of page variable, which always refers to "the currently displayed page". Pages such as Site.PageActions and Site.EditForm that are designed to work on "the currently browsed page" should generally switch to using [@{*$FullName}@] instead of [@{$FullName}@].%0a%0a** The $EnableRelativePageLinks and $EnableRelativePageVars settings control the treatment of links and page variables in included pages. However, to minimize disruption to existing sites, $EnableRelativePageVars defaults to '''disabled'''. This will give existing sites an opportunity to convert any absolute [@{$var}@] references to be [@{*$var}@] instead.%0a%0a** Eventually $EnableRelativePageVars will be enabled by default, so we highly recommend setting [@$EnableRelativePageVars = 1;@] in ''local/config.php'' to see how a site will react to the new interpretation. Administrators should especially check any customized versions of the following:%0a---> [[Site.PageActions]]%0a---> [[Site.EditForm]]%0a---> [[Site.PageNotFound]]%0a---> SideBar pages with ?action= links for the current page%0a---> $GroupHeaderFmt, $GroupFooterFmt%0a---> [[Page lists]] that refer to the current group or page, etc in sidebars, headers, and footers%0a%0a** The [@(:include:)@] directive now has a [@basepage=@] option whereby an author can explicitly specify the page upon which relative links and page variables should be based. If no basepage= option is specified, the included page is assumed to be the base.%0a%0a* Sites that want to retain the pre-2.2 behavior of [@(:include:)@] and other items can set [@$Transition['version'] = 2001900;@] to automatically retain the 2.1.x defaults.%0a%0a* Text inserted via [@(:include:)@] can contain "immediate substitutions" of the form [@{$$option}@] -- these are substituted with the value of any options provided to the include directive.%0a%0a* PmWiki now recognizes when it is being accessed via "https:" and switches its internal links appropriately. This can be overridden by explicitly setting $ScriptUrl and $PubDirUrl.%0a%0a* A new $EnableLinkPageRelative option allows PmWiki to generate relative urls for page links instead of absolute urls.%0a%0a* Draft handling capabilities have been greatly improved. When $EnableDrafts is set, then the "Save" button is relabeled to "Publish" and a "Save draft" button appears. In addition, an $EnablePublishAttr configuration variable adds a new "publish" authorization level to distinguish editing from publishing. See [[PmWiki:Drafts]] for more details.%0a%0a[[#ptvstart]]%0a* There is a new [@{$:var}@] "page text variable" available that is able to grab text excerpts out of markup content. For example, [@{SomePage$:Xyz}@] will be replaced by a definition of "Xyz" in SomePage. Page text variables can be defined using definition markup, a line beginning with the variable name and a colon, or a special directive form (that doesn't display anything on output):%0a%0a-->[@%0a:Xyz: some value # definition list form%0aXyz: some value # colon form%0a(:Xyz: some value:) # directive form%0a@]%0a[[#ptvend]]%0a%0a* The [@(:pagelist:)@] command can now filter pages based on the contents of page variables and/or page text variables. For example, the following directive displays only those pages that have an "Xyz" page text variable with "some value":%0a%0a-->[@(:pagelist $:Xyz="some value":)@]%0a%0a Wildcards also work here, thus the following pagelist command lists pages where the page's title starts with the letter "a":%0a%0a-->[@(:pagelist $Title=A* :)@]%0a%0a* The if= option to [@(:pagelist)@] can be used to filter pages based on conditional markup:%0a%0a-->[@(:pagelist if="auth upload {=$FullName}":)@] pages with upload permission%0a-->[@(:pagelist if="date today.. {=$Name}":)@] pages with names that are dates later than today%0a%0a* Spaces no longer separate wildcard patterns -- use commas. (Most people have been doing this already.)%0a%0a* Because page variables are now "relative", the [@{$PageCount}, {$GroupCount}, {$GroupPageCount}@] variables used in pagelist templates are now [@{$$PageCount}, {$$GroupCount}, {$$GroupPageCount}@].%0a%0a* One can now use [@{$$option}@] in a pagelist template to obtain the value of any 'option=' provided to the [@(:pagelist:)@] command.%0a%0a* The [@(:pagelist:)@] directive no longer accepts parameters from urls or forms by default. In order to have it accept such parameters (which was the default in 2.1 and earlier), add a [@request=1@] option to the [@(:pagelist:)@] directive.%0a%0a* The [@count=@] option to pagelists now accepts negative values to count from the end of the list. Thus [@count=5@] returns the the first five pages in the list, and [@count=-5@] returns the last five pages in the list. In addition, ranges of pages may be specified, as in [@count=10..19@] or [@count=-10..-5@].%0a%0a* Pagelist templates may have special [@(:template first ...:)@] and [@(:template last ...:)@] sections to specify output for the first or last page in the list or a group. There's also a [@(:template defaults ...:)@] to allow a template to specify default options.%0a%0a* PmWiki comes with an ability to cache the results of certain [@(:pagelist:)@] directives, to speed up processing on subsequent visits to the page. To enable this feature, set $PageListCacheDir to the name of a writable directory (e.g., ''work.d/'').%0a%0a* [[#elseifelse]]The [@(:if ...:)@] conditional markup now also understands [@(:elseif ...:)@] and [@(:else:)@]. In addition, markup can nest conditionals by placing digits after if/elseif/else, as in [@(:if1 ...)@], [@(:elseif1 ...:)@], [@(:else1:)@], etc.%0a%0a* The [@(:if date ...:)@] conditional markup can now perform date comparisons for dates other than the current date and time.%0a%0a* [[WikiTrails]] can now specify #anchor identifiers to use only sections of pages as a trail.%0a%0a* A new [@(:if ontrail ...:)@] condition allows testing if a page is listed on a trail.%0a%0a* The extensions .odt, .ods, and .odp (from OpenOffice.org) are now recognized as valid attachment types by default.%0a%0a* A new [[blocklist]] capability has been added to the core distribution. It allows blocking of posts based on IP address, phrase, or regular expression, and can also make use of publicly available standard blocklists. See [[PmWiki.Blocklist]] for details.%0a%0a* There is a new [[SiteAdmin.AuthList]] page that can display a summary of all password and permissions settings for pages on a site. This page is restricted to administrators by default.%0a%0a* There are new [@{$PasswdRead}@], [@{$PasswdEdit}@], etc. variables that display the current password settings for a page (assuming the browser has attr permissions or whatever permissions are set in $PasswdVarAuth).%0a%0a* Forms creation via the [@(:input:)@] markup has been internally refactored somewhat (and may still undergo some changes prior to 2.2.0 release). The new [@(:input select ...:)@] markup can be used to create select boxes, and [@(:input default ...:)@] can be used to set default control values, including for radio buttons and checkboxes.%0a%0a* The [@(:input textarea:)@] markup now can take values from other sources, including page text variables from other pages.%0a%0a* Specifying [@focus=1@] on an [@(:input:)@] control causes that control to receive the input focus when a page is loaded. If a page has multiple controls requesting the focus, then the first control with the lowest value of [@focus=@] "wins".%0a%0a* PmWiki now provides a ''scripts/creole.php'' module to enable Creole standard markup. To enable this, add [@include_once('scripts/creole.php')@] to a local customization file.%0a%0a* PmWiki adds a new [@{(...)}@] ''markup expression'' capability, which allows various simple string and data processing (e.g., formatting of dates and times). This is extensible so that recipe authors and system administrators can easily add custom expression operators.%0a%0a* It's now possible to configure PmWiki to automatically create Category pages whenever a page is saved with category links and the corresponding category doesn't already exist. Pages are created only if the author has appropriate write permissions into the group. To enable this behavior, add the following to ''local/config.php'':%0a%0a-->[@$AutoCreate['/^Category\\./'] = array('ctime' => $Now);@]%0a%0a* Sites with wikiwords enabled can now set $WikiWordCount['WikiWord'] to -1 to indicate that 'WikiWord' should not be spaced according to $SpaceWikiWords.%0a%0a* WikiWords that follow # or & are no longer treated as WikiWords.%0a%0a* Links to non-existent group home pages (e.g., [@[[Group.]]@] and [@[[Group/]]@]) will now go to the first valid entry of $PagePathFmt, instead of being hardcoded to "Group.Group". For example, to set PmWiki to default group home pages to [@$DefaultName@], use%0a%0a-->[@$PagePathFmt = array('{$Group}.$1', '$1.{$DefaultName}', '$1.$1');@]%0a%0a* PmWiki now provides a $CurrentTimeISO and $TimeISOFmt variables, for specifying dates in ISO format.%0a%0a* [[(Cookbook:)Cookbook]] authors can use the internal PmWiki function UpdatePage (temporarily documented at [[(Cookbook:)DebuggingForCookbookAuthors]]) to change page text while preserving history/diff information, updating page revision numbers, updating RecentChanges pages, sending email notifications, etc.%0a%0a* [[Skin templates]] are now required to have %3c!--HTMLHeader--> and %3c!--HTMLFooter--> directives. Setting $EnableSkinDiag causes PmWiki to return an error if this isn't the case for a loaded skin. Skins that explicitly do not want HTMLHeader or HTMLFooter sections can use %3c!--NoHTMLHeader--> and %3c!--NoHTMLFooter--> to suppress the warning.%0a%0a* Added a new "pre" wikistyle for preformatted text blocks.%0a%0a* The xlpage-utf-8.php script now understands how to space UTF-8 wikiwords. %0a%0a* Searches on utf-8 site are now case-insensitive for utf-8 characters.%0a%0a* Many Abort() calls now provide a link to pages on pmwiki.org that can explain the problem in more detail and provide troubleshooting assistance.%0a%0a* PmWiki no longer reports "?cannot acquire lockfile" if the visitor is simply browsing pages or performing other read-only actions.%0a%0a* The $EnableReadOnly configuration variable can be set to signal PmWiki that it is to run in "read-only" mode (e.g., for distribution on read-only media). Attempts to perform actions that write to the disk are either ignored or raise an error via Abort().%0a%0a* Including authuser.php no longer automatically calls ResolvePageName().%0a%0a* Authentication using Active Directory is now simplified. In Site.AuthUser or the $AuthUser variable, set "ldap://name.of.ad.server/" with no additional path information (see PmWiki.AuthUser for more details).%0a%0a* Pages are now saved with a "charset=" attribute to identify the character set in effect when the page was saved.%0a%0a* The phpdiff.php algorithm has been optimized to be smarter about finding smaller diffs.%0a%0a* Removed the (deprecated) "#wikileft h1" and "#wikileft h5" styles from the pmwiki default skin.%0a%0a* The mailposts.php and compat1x.php scripts have been removed from the distribution.%0a%0a!! Version 2.1.27 (2006-12-11)%0a%0aThis version backports from 2.2.0-beta a bugfix for $TableRowIndexMax and also support for the [@{*$Variable}@] markup.%0a%0a!! Version 2.1.26 (2006-09-11)%0a%0aThis version fixes a bug in feeds.php that would cause feed entries to be mixed up.%0a%0a!! Version 2.1.25 (2006-09-08)%0a%0aThis release fixes a bug in authuser.php introduced by the 2.1.24 release.%0a%0aThe skin template code has also been extended to allow [@%3c!--XMLHeader-->@] and [@%3c!--XMLFooter-->@] as aliases for [@%3c!--HTMLHeader-->@] and [@%3c!--HTMLFooter-->@].%0a%0a!! Version 2.1.24 (2006-09-06)%0a%0aThis release makes some improvements and fixes to the [[AuthUser]]%0acapability.%0a%0aA bug in authuser.php that had trouble dealing with non-array values in $AuthUser has been fixed.%0a%0aIt is now possible to specify group memberships from ''local/config.php'' (remember that such entries must come ''before'' including the ''authuser.php'' script):%0a%0a # alice and bob's passwords%0a $AuthUser['alice'] = crypt('alicepassword');%0a $AuthUser['bob'] = crypt('bobpassword');%0a%0a # members of the @writers and @admins groups%0a $AuthUser['@writers'] = array('alice', 'bob');%0a $AuthUser['@admins'] = array('alice', 'dave');%0a%0a # carol is a member of @editors and @writers%0a $AuthUser['carol'] = array('@editors', '@writers');%0a%0aAuthUser can now read from Apache-formatted .htgroup files. The location of the .htgroup file can be done either in ''local/config.php'' or [[Site.AuthUser]]%0a%0a # local/config.php:%0a $AuthUser['htgroup'] = '/path/to/.htgroup';%0a%0a # Site.AuthUser%0a htgroup: /path/to/.htgroup%0a%0a%0a!! Versions 2.1.21, 2.1.22, 2.1.23 (2006-09-05, 2006-09-06)%0a%0aThis release closes a potential security vulnerability for sites %0athat are running with 'register_globals' set to on. Details of%0athe vulnerability will be forthcoming on the mailing list%0aand site.%0a%0aSites that are running with PHP 'register_globals' and 'allow_url_fopen'%0aset to 'On' should upgrade to this release at the earliest%0aopportunity. If upgrading isn't an option, contact Pm for%0aa patch to older versions.%0a%0aThere is now a tool available to analyze PmWiki sites for security%0aand other configuration settings, see [[PmWiki:SiteAnalyzer]].%0a%0aVersion 2.1.23 also corrects a bug that prevented PmWiki from being%0aable to read pagefiles created by versions of PmWiki before 0.5.6.%0a%0a!! Version 2.1.20 (2006-09-04)%0a%0aMore minor bugfixes:%0a* Corrected a bug with WikiWord references appearing in the [@(:attachlist:)@] markup.%0a* Restore ability to remove/override PmWiki's default CSS settings.%0a%0a!! Version 2.1.19 (2006-08-30)%0a%0aThis release provides a number of very minor bugfixes and%0aenhancements:%0a%0a* Fixed a bug in the pageindex code that was causing it to not regenerate as quickly as it should.%0a* Fixed image/object/embed handling in wikistyles to better support the [[Cookbook:Flash]] recipe.%0a* Fixed a bug with wikistyles and input form tags.%0a%0aThe next release(s) may have a number of substantial code%0aenhancements and changes, so this release simply closes out%0aa few items before introducing those changes.%0a%0a%0a!! Version 2.1.18 (2006-08-28)%0a%0aThis release closes a potential cross-site scripting vulnerability%0athat could allow authors to inject Javascript code through the%0avarious table markups.%0a%0aThe release also adds a new [@(:input image:)@] markup to generate%0aimage input tags in forms.%0a%0aFinally, this release corrects a problem with [@?action=print@]%0afailing to properly set the [@{$Action}@] page variable.%0a%0a!! Version 2.1.17 (2006-08-26)%0a%0aThis release fixes a long-standing bug with $EnableIMSCaching%0a(PITS:00573), whereby login/logout operations wouldn't invalidate %0abrowser caches, causing some people to see versions of a page prior%0ato the login/logout taking place. %0a%0aThe new IMS caching code maintains a "imstime" cookie in the %0avisitor's browser that keeps track of the time of last login, %0alogout, author name change, or site modification. This cookie%0ais then used to determine the proper response to browser requests%0acontaining If-Modified-Since headers. (Previously only the%0atime of the last site modification was available.) %0a%0aBrowsers which do not accept cookies will effectively act as%0athough IMS caching is disabled.%0a%0a%0a!! Version 2.1.16 (2006-08-26) [[#v2116]]%0a%0aThis release makes some improvements to skin handling -- primarily%0athis improves the capability of relocating skin files to other%0alocations, and to provide the ability for recipes to insert items%0aat the ''end'' of HTML output.%0a%0aThis release introduces a [@%3c!--HTMLFooter-->@] directive into%0a[[skin templates]], which allows recipes and local%0acustomizations to insert output near the end of a document %0ausing a $HTMLFooterFmt array from PHP.%0a%0aAlso, the [@%3c!--HeaderText-->@] directive, which inserts the%0acontents of $HTMLHeaderFmt into the output, has now been%0arenamed to [@%3c!--HTMLHeader-->@]. PmWiki will continue to%0arecognize [@%3c!--HeaderText-->@] to preserve compatibility with%0aexisting skins, but [@%3c!--HTMLHeader-->@] is preferred.%0a%0aA new $SkinLibDirs array has been introduced which allows%0athe source locations and urls for skins to be specified from%0aa customization file. By default $SkinLibDirs is set as%0a%0a $SkinLibDirs = array("./pub/skins/\$Skin" => "$PubDirUrl/skins/\$Skin",%0a "$FarmD/pub/skins/\$Skin" => "$FarmPubDirUrl/skins/\$Skin");%0a%0aThe keys (on the left) indicate the places to look for a "skin .tmpl %0afile" in the filesystem, while the values (on the right) indicate the%0aurl location of the "skin css file". Modifying the value of %0a$SkinLibDirs allows a skin .tmpl file to be located anywhere on the %0afilesystem.%0a%0aAs far as I can see, none of the changes introduced by this%0arelease should have any sort of negative impact on existing%0asites, so it should be safe to upgrade. (If I'm wrong, please%0alet me know.)%0a%0a%0a!! Version 2.1.15 (2006-08-25)%0a%0aThis release includes a number of feature enhancements and code cleanups%0aas reported or requested by administrators.%0a%0aFirst, AuthUser's LDAP authentication system now allows the use of%0aa [@?filter@] parameter, consistent with urls used for mod_auth_ldap%0aauthorization in Apache. See the newly updated LDAP section of the%0a[[AuthUser]] documentation for more details.%0a%0aA chicken-and-egg problem with the [@@_site_*@] authorization groups%0ahas been resolved. It's now possible to have a page's read authorization%0arefer to things such as [@_site_edit@].%0a%0aAlso, the RetrieveAuthPage() function -- used for retrieving pages only%0aif the visitor is authorized to do so -- now recognizes a special%0alevel parameter of 'ALWAYS', which means to always authorize access%0aregardless of the browser or visitors current permissions. This%0amay be useful for allowing certain operations to take place from%0awithin trusted scripts without having to grant full authorization%0ato the browser.%0a%0aHardcoded instances of the ''local/'' directory now use a%0acustomizable $LocalDir variable. This variable controls where%0aPmWiki looks for ''local/config.php'' and per-group customization %0afiles. It may be useful for some [[Wiki Farm(s)]] contexts. Note that%0athis does not change or affect the location of %0a''$FarmD/local/farmconfig.php''.%0a%0aSome minor internal changes have been made to %0a''scripts/wikistyles.php'' to better accommodate the %0awikipublisher recipe. It's probably better if we don't try%0ato explain them. :-)%0a%0a%0a!! Version 2.1.13, 2.1.14 (2006-08-15, 2006-08-16)%0a%0aThis release fixes a bug in handling numeric passwords, and also%0aallows ldaps:// authentication sources.%0a%0a!! Version 2.1.12 (2006-08-07)%0a%0aThis version introduces the ability to nest divs and tables.%0aThe standard [@(:table:)@] and [@(:div:)@] markups are still%0aavailable, except that a [@(:div:)@] may contain a [@(:table:)@]%0aand vice-versa. %0a%0aAs in previous versions of PmWiki, the [@(:div:)@] markup%0aautomatically closes any previous [@(:div:)@]. However, there%0aare now [@(:div1:)@], [@(:div2:)@], etc. markups (and the%0acorresponding [@(:div1end:)@], [@(:div2end:)@], ...) which can be%0aused to uniquely distinguish divs for nesting purposes.%0a%0aTo restore PmWiki's previous "non-nested" div behavior, set%0a$Transition['nodivnest'] = 1; in a local customization file.%0a%0aOther changes in this release:%0a* Add a [@(:noaction:)@] directive to suppress display of page actions.%0a* Allow anchor tags to contain colons, hyphens, and dots.%0a* Add "white-space" as an allowed wikistyle.%0a* Other minor bug fixes and typographical corrections.%0a%0a%0a!! Version 2.1.11 (2006-06-09)%0a%0aThis is a minor update that prevents [@%25define=%25@] wikistyles%0afrom generating empty paragraphs in the HTML output. Prior to%0athis release, markup lines containing only wikistyle definitions%0awould often generate empty paragraphs (%3cp>%3c/p>), this release%0achanges things so that a markup line beginning with [@%25define=@]%0aand containing only wikistyle definitions will not initiate%0aa new paragraph.%0a%0a%0a!! Version 2.1.10 (2006-06-03)%0a%0aVersion 2.1.4 introduced an [@{$Action}@] page variable that would%0acontain the current [@?action=@] value. Unfortunately, this page%0avariable conflicted with a pre-existing [@$Action@] global variable%0athat was being used by skins to display a human-friendly form of%0athe current action. Since there's not really a clean way to resolve%0athis, I've decided to keep [@{$Action}@] as a page variable%0awith the current action value (as introduced in 2.1.4), and change %0athe global for skins to be $ActionTitle. This will require updating%0askins to use $ActionTitle instead of $Action. I apologize for the%0aconflict.%0a%0aThis release adds a Site.LocalTemplates page for the [@fmt=#xyz@]%0aoption in pagelist and search results. The list of pages to be%0asearched can be customized via the $FPLTemplatePageFmt variable.%0aThe [@fmt=#xyz@] option will now also search the current page for%0aa matching template before searching Site.LocalTemplates%0aand Site.PageListTemplates.%0a%0aThe 'pmwiki' skin now places a %3cspan> around the "Recent Changes"%0alink in the header to make it somewhat easier to style.%0a%0a!! Version 2.1.9 (2006-06-02)%0a%0aThis release fixes a long-standing and difficult-to-find bug with%0athe handling of [@[[~Author]]@] links.%0a%0a!! Version 2.1.8 (2006-06-01)%0a%0aThis release simply changes the $NotifyListFmt variable to be%0a$NotifyListPageFmt (more descriptive), and adds a $NotifyList%0aarray that can be used to specify notification entries from%0aa configuration file.%0a%0a!! Version 2.1.7 (2006-05-31)%0a%0aThis release introduces a variety of improvements and bugfixes.%0a%0a'''Vspace paragraphs are now divs:'''%0aVersion 2.1.7 changes the way that PmWiki handles vertical%0aspace in output (the infamous [@%3cp class='vspace>%3c/p>@] sequence).%0aInstead of using paragraphs, PmWiki now generates %0a[@%3cdiv class='vspace'>%3c/div>@] for vertical space sequences.%0aIn addition, PmWiki is able to collapse the vspace %3cdiv> with%0aany subsequent paragraph tags, such that a sequence like%0a%0a %3cdiv class='vspace>%3c/div>%3cp>...paragraph text...%3c/p>%0a%0ais automatically converted to%0a%0a %3cp class='vspace'>...paragraph text...%3c/p>%0a%0aThis allows for better control over paragraph spacing. It is%0aexpected that this change in vspace handling will not have%0aany detrimental effects on existing sites. Sites that have%0aset custom values for $HTMLVSpace will continue to use the%0acustom value. A site that wants to restore PmWiki's earlier%0ahandling of vspace can do so by adding the following to%0a''local/config.php'':%0a%0a $HTMLVSpace = "%3cp class='vspace'>%3c/p>";%0a%0a'''Improved email notifications of changes:''' Version 2.1.7%0aincorporates a ''notify.php'' script that provides improved%0acapabilities for sending email notifications in response to%0apage changes. This script is intended to replace the previous%0a[[MailPosts]] capability, which is now deprecated (but will%0acontinue to be supported in PmWiki 2.1.x). Details and %0ainstructions for using notify.php are in the [[PmWiki.Notify]] page.%0a%0a'''Added 'group home page' syntax:''' A group name followed%0aby only a dot or slash is automatically treated as a reference%0ato the group's home page, whatever it happens to be. This simplifies%0asome pagelist templates as well as a number of other items. %0aIn particular, group links in pagelist output now points to the%0acorrect locations (instead of being a page in the current group).%0a%0aSeveral bugs and vulnerabilities have been fixed:%0a* The default width of edit forms is now more appropriate for Internet Explorer.%0a* Authentication failure messages from LDAP are now suppressed.%0a* Some cross-site scripting vulnerabilities in uploads and page links have been corrected (courtesy Moritz Naumann, http://moritz-naumann.com).%0a* A problem with invalid pagenames resulting in redirect loops has been corrected.%0a%0a!! Version 2.1.6 (2006-05-22)%0a%0aThe primary improvement in this release is the addition of %0aa pagename argument to the [@(:if auth:)@] conditional markup.%0aThus one can display markup based on a visitor's authorization%0ato a page other than the current one. For example, to test%0afor edit privileges to `Main.WikiSandbox, one would use%0a[@(:if auth edit Main.WikiSandbox:)@]. As before, if the%0apagename is omitted the directive tests authorization to%0athe current page.%0a%0aThis release also restores the ability to have hyphens in%0aInterMap link names.%0a%0aLastly, the release closes a potential cross-site scripting%0avulnerability in the WikiTrail markup, and provides some small%0aperformance improvements.%0a%0a!! Version 2.1.4, 2.1.5 (2006-03-29)%0a%0aThis release fixes a few more bugs:%0a* Pagelist-based feeds using ?action=rss work again.%0a* Multi-term searches with special characters is fixed.%0a%0aThe release also adds a couple of items:%0a* There is now an [@{$Action}@] page variable.%0a* Usernames and passwords submitted to authuser.php can contain quotes.%0a* The [@(:attachlist:)@] command now uses a natural case sort.%0a%0a!! Version 2.1.3 (2006-03-17)%0a%0aThis release fixes a bug that prevents the [@lines=@] option from%0aworking on sites running PHP 5.1.1 or later. It also re-fixes%0aa bug involving empty passwords and LDAP authentication.%0a%0a!! Version 2.1.2 (2006-03-16)%0a%0aThis release fixes a bug with handling "nopass" passwords. It also%0amakes some speed improvements to large web feeds, and fixes a couple%0aof minor HTML tag mismatches.%0a%0a!! Version 2.1.1 (2006-03-13)%0a%0aThis release primarily fixes a bug with passwords containing%0amultiple authorization groups, and in the process slightly liberalized%0athe formatting of "@group" and "id:name" handling. This release also %0aadds a new mechanism for managing and displaying FAQ pages.%0a%0a!! Version 2.1.0 (2006-03-12)%0a%0aThis set of release notes is fairly lengthy, as it chronicles all of the changes since 2.0.13 (four months of development). A lot remains the same, but some changes warrant extra care when upgrading from a 2.0.x version to 2.1.0 (thus the major revision number change). As always, questions and issues can be mailed to the pmwiki-users mailing list.%0a%0aHere's the list:%0a%0a* WikiWords are now disabled by default. To enable them, set "$LinkWikiWords = 1;" in a [[local customization(s)]] file. As of 2.1.beta2, you can now leave WikiWords enabled but have links to non-existent pages display without decoration -- to do this, place the following lines in ''pub/css/local.css'':%0a%0a span.wikiword a.createlink { display:none; }%0a span.wikiword a.createlinktext %0a { border-bottom:none; text-decoration:none; color:inherit; }%0a%0a* The [@(:pagelist:)@] code has been substantially revised. Pagelist formatting can now be specified using markup, and several defaults are available from [[Site.PageListTemplates]]. Also, several built-in pagelist formatting functions (FPLSimple, FPLByGroup, FPLGroup) are now removed in favor of the template code. The FPLByGroup function can be restored by setting $Transition['fplbygroup']=1; . '''Remark:''' Check to see if your page [[Site.PageListTemplates]] is not passwordprotected for viewing, otherwise the resulting pagelist will not be shown. %0a%0a* [@(:pagelist:)@] now also understands wildcards in @@group=@@ and @@name=@@ arguments, as well as excluding specific names and groups.%0a%0a* [@(:pagelist:)@] now has an "order=random" option.%0a%0a* [@(:searchbox:)@] now accepts "group=", "link=", "list=", etc. options to be passed along to the search results. It also accepts a "target=" option that identifies the page on which to send the search query.%0a%0a* [@?action=search@] will display the contents of the current page if it contains a [@(:@][@searchresults:)@] directive, otherwise it uses the content of the page identified by $PageSearchForm (default is the search page for the current language translation). %0a%0a* PmWiki no longer maintains a ".linkindex" file -- it now has a ".pageindex" file that contains not only a table of links, but also words used in each page (to speed up term searches). The maintenance of the .pageindex file can be disabled by setting $PageIndexFile=''; %0a %0a* The $EnablePageListProtect variable now defaults to true, so that read-only pages appear in pagelists only if the visitor has read authorization. Note that this can also slow down some [@(:pagelist:)@] and search commands, so if the site doesn't have any read-only pages or if you aren't worried with cloaking read-only pages from searchlists, it might be worth setting $EnablePageListProtect=0; .%0a%0a* Whitespace indentation rules now exist and are enabled by default. Any line that begins with whitespace and aligns with a previous list item is considered to be "within" that list item. Text folds and wraps as normal, and the [@(:linebreaks:)@] directive is honored. To turn off whitespace indentation, use [@DisableMarkup('^ws');@].%0a%0a* A single blank line after a [@!!Heading@] is silently ignored.%0a%0a* The [@(:redirect:)@] directive is now a true markup, and can be embedded inside conditional markups or includes. It also allows redirecting to an anchor in a page, such as [@(:redirect PageName#anchor:)@]. A new [@from=@] option allows the redirect to take place only from pages that match the given wildcard specification. The [@status=@] option allows a 301, 302, 303, or 307 HTTP status code to be returned.%0a%0a* The built-in authorization function has gone through some substantial internal changes, however these changes should be fully backward compatible so that it doesn't impact any existing sites. (If it ''does'' cause a problem, please let me know so I can investigate why!) The password prompts are now specified by an admin-customizable Site.AuthForm page. In addition, the authorization function no longer creates PHP sessions for visitors that aren't being authenticated.%0a%0a* The authuser.php has likewise been substantially updated. The new version should have complete backwards compatibility with previous authuser.php settings, but this version also offers the ability to configure authentication resources and authorization groups through the [[Site.AuthUser]] page. Note that by default the Site.AuthUser page can only be edited using the admin password.%0a%0a* The $EnableSessionPasswords variable can be used to control whether passwords are held in PHP sessions. (This does not affect user authentication via [[AuthUser]], however.)%0a%0a* The $Author variable now defaults to $AuthId if not otherwise set by a script or cookie.%0a%0a* The [[Site.SideBar]] page now defaults its edit password to the sitewide edit password (in $DefaultPasswords['edit']).%0a%0a* PmWiki now supports a "draft edit" mode, enabled by $EnableDrafts = 1. This creates a "Save as draft" button that will save a page under a "-Draft" suffix, for intermediate edits.%0a%0a* There is now an ?action=login action available.%0a%0a* A potential security vulnerability for sites running PHP 5 with register_globals enabled has been fixed.%0a%0a* The [@[[PageName |+]]@] markup is now available by default; this creates a link to `PageName and uses that page's title as the link text.%0a%0a* What used to be "markup variables" are now "[[page variables]]". These are always specified using the @@{$''variable''}@@ syntax, and can be used in markup and in $...Fmt strings. In addition, one can request a value for a specific page by placing the pagename in front of the variable, as in @@{''pagename''$''variable''}@@.%0a%0a* The ''scripts/rss.php'' script is now ''scripts/feeds.php'', and is a complete redesign for [[web feed(s)]] generation. The new version supports UTF-8 and other encodings, can generate Atom 1.0 ([@?action=atom@]), Dublin Core Metadata ([@?action=dc@]) output, and enclosures for podcasting. It also allows feeds to be generated from trails, groups, categories, and backlinks, and provides options (same as pagelists) for sorting and filtering the contents of the feed. Most sites can simply switch to using [@include_once("scripts/feeds.php");@] instead of the previous ''rss.php'' include. The ''rss.php'' file has been removed from the distribution (but still works with PmWiki 2.1 for those sites that wish to continue using it).%0a%0a* [[PmWiki/InterMap]] entries can now come from a `Site.InterMap page as well as the ''local/localmap.txt'' and ''local/farmmap.txt'' files. The format of these files has changed slightly, in that the InterMap name should now have a colon after it (previously the colon was omitted).%0a%0a* We can now provide better control of robot (webcrawler) interactions with a site to reduce server load and bandwidth. The $RobotPattern variable is used to detect robots based on the user-agent string, and any actions not listed in the $RobotActions array will return a 403 Forbidden response to robots. In addition, setting $EnableRobotCloakActions will eliminate any forbidden ?action= values from page links returned to robots, which will reduce bandwidth loads from robots even further (PITS:00563).%0a%0a* Non-existent page handling has been improved; whenever a browser hits a non-existent page, PmWiki returns the contents of Site.PageNotFound and a 404 ("Not Found") status code.%0a%0a* Page links that have "?action=" in their query arguments are now treated as "existing page" links even if the page does not exist.%0a%0a* The PmWiki default skin now adds rel='nofollow' to various action links.%0a%0a* Some of the CSS styles in the PmWiki default skin have been changed for better presentation.%0a%0a* The gui edit buttons have transparent (instead of white) borders so they integrate better into skins.%0a%0a* The $EnableIMSCaching variable is now much smarter, it can detect changes in local customization files as well as pages.%0a%0a* [[PmWiki/WikiStyles]] can now make percentage specifications by using "pct" to mean "%25".%0a%0a* Class attributes in [[WikiStyle(s)]] shortcuts are now cumulative, so that [@%25class1 class2%25@] results in [@class='class1 class2'@] instead of just [@class='class2'@] in the output.%0a%0a* A problem with the [@(:include PageName#from#:)@] markup not working has been fixed (PITS:00560).%0a%0a* Viewing a GroupHeader or GroupFooter page no longer displays the contents twice.%0a%0a* It's now easier to share pages among multiple sites (e.g., [[WikiFarms]]), see Cookbook:SharedPages (PITS:00459).%0a%0a* A problem with nested apostrophe markups has been fixed (PITS:00590).%0a%0a* PmWiki is now smarter about not surrounding block HTML tags with %3cp>...%3c/p> tags.%0a%0a* If an [@[[#anchor]]@] is used more than once in a page, only the first generates an actual anchor (to preserve XHTML validity).%0a%0a* There are now [@(:if equal ...:)@] and [@(:if exists pagename:)@] [[conditional markup]]s.%0a%0a* Compound conditional markup expressions are now possible -- e.g. [@(:if [ group PmWiki && ! name PmWiki ] :)@] .%0a%0a* Added an $InputValues array that can supply default values for certain form controls (PITS:00566).%0a%0a* The default setting of $UploadUrlFmt is now based on $PubDirUrl instead of $ScriptUrl.%0a%0a* The $text global variable has been removed (use $_GET['text'], $_POST['text'], or $_REQUEST['text']).%0a%0a* A possible problem with url-encoding of attachments with non-ASCII characters has been addressed (PITS:00588).%0a%0a* Page actions in non-existent pages no longer display with non-existent link decorations.%0a%0a* A README.txt file has been added, and several documentation files are now available through the docs/ directory.%0a %0a* PmWiki is no longer available through CVS on sourceforge.net. It is now available via SVN on pmwiki.org, at svn://pmwiki.org/pmwiki/tags/latest . For more details, see PmWiki:Subversion.%0a%0a* The $NewlineXXX variable (deprecated in 2.0.0) has been removed.%0a%0a* There is experimental support for server-side caching of pages that take a long time to render; this is currently an unsupported feature and may be removed in future releases.%0a%0a%0a!! Version 2.0.13 (2005-11-10)%0a%0aThis is a release containing minor bugfixes and improvements%0ain preparation for the 2.1.beta series.%0a%0a%25red%25Wiki administrators should note that after this release PmWiki will default to having WikiWords disabled.\\%0a%0aTo make sure WikiWords are enabled, use [@$LinkWikiWords = 1;@] in%0athe ''local/config.php'' file.%0a%0a%0a!! Version 2.0.12 (19-Oct-2005)%0a%0aThis release cleans up problems with page validation for page links%0acontaining query fragments and ampersands, changes PmWiki to use a%0aPHP "return" statement instead of "exit", and fixes a warning in%0ascripts/transition.php.%0a%0a!! Version 2.0.11 (17-Oct-2005)%0a%0aThis release fixes a couple of important bugs and adds some new%0afeatures to PmWiki.%0a%0aMost importantly, this release fixes bug with ?action=attr%0aaffecting the page history.%0a%0aFor sites using LDAP authentication with authuser.php, PmWiki%0anow provides $AuthLDAPBindDN and $AuthLDAPBindPassword variables%0ato specify the binding to be used for searching. It also works%0aaround a PHP oddity that causes users to appear authenticated%0awhen an empty password is provided. Authuser.php also now%0ahandles straight md5 password encryptions (commonly used by%0a`MySQL databases).%0a%0aThe core now includes the [@(:linebreaks:)@] markup%0a(from Cookbook:LineBreaks), which causes text on separate%0alines in the markup to appear as separate lines in the output%0a(i.e., no auto-joining of one line to the previous one).%0a%0aThere have been some internal changes designed to provide%0abetter support for leading-whitespace rules (more details on%0athis in a future release).%0a%0aThe core now provides an [@(:if date:)@] markup to display%0atext only if the current day is within a range of supplied%0adates.%0a%0a!! Version 2.0.10 (29-Sep-2005)\\%0aVersion 2.0.9 (28-Sep-2005)%0a%0aThis release fixes an oversight in xlpage-utf-8.php that failed to uppercase ASCII letters when mb_strtoupper isn't present.%0a%0a!! Version 2.0.8 (27-Sep-2005)%0a%0aThis release simply adds the capability to use quotes to enter%0apass phrases (passwords containing spaces) using ?action=attr,%0aand fixes a bug with displaying the name instead of the title in%0athe default print skin.%0a%0a!! Version 2.0.7 (26-Sep-2005)%0a%0aThis version changes the xlpage-utf-8.php case conversion slightly%0ato use a more direct conversion table, and completed the table%0afor more characters in the utf-8 set.%0a%0aThis release also fixes the $VersionNum variable that was supposed to%0aappear in 2.0.6.%0a%0aAn accesskey shortcut (ak_textedit) is being added to the edit form%0atext area.%0a%0aLastly, this release adds a timelimit to the generation of .linkindex,%0ato avoid long page times when generating the .linkindex.%0a%0a%0a!! Version 2.0.6 (16-Sep-2005)%0a%0aIn this release, we provide quite a few more updates for sites that%0awant or need to use utf-8 encoding, fix a large number of utf-8 %0arelated bugs, introduce better handling of author cookies, and%0abetter support for keeping track of version releases.%0a%0aThe biggest change is to the xlpage-utf-8.php recipe, which has%0abeen substantially rewritten from the previous version. This new%0aversion of xlpage-utf-8.php no longer depends on the %0a[[http://www.php.net/mb_strtoupper | mb_strtoupper()]]%0afunction, which seems to be not available in many PHP installations.%0aThe new version of xlpage-utf-8.php uses mb_strtoupper() if it's%0aavailable, but if not available then it manually performs case %0aconversions from a Unicode table that is directly encoded in the%0ascript. At present this table only understands case conversions%0afor Western European (Latin-1 or ISO-8859-1) and Cyrillic characters,%0awe'll want to expand the table to support other language character%0asets as needed. Just contact me on the listserv if a particular%0acharacter isn't yet supported.%0a%0aIn addition to the above, author names and cookies in utf-8 environments%0anow work again, and link suffixes containing non-ASCII characters work%0aagain also.%0a%0aThe GUI button handling in IE has been greatly improved; text selection%0ain IE now works as you would expect it to work when a gui button is%0apressed. Possibly still no hope for Mac Safari browsers, unfortunately...%0a%0aA $CookiePrefix variable has been introduced; a wiki administrator%0acan set $CookiePrefix to prevent PmWiki's cookies from interfering with%0acookies set from other applications under the same domain name.%0a%0aSome XHTML validation issues surrounding the use of %3cscript> tags %0ahave been fixed.%0a%0aAnd lastly, for script and recipe authors, there is now a $VersionNum%0anumeric value that makes it easier to determine if the currently running%0aversion of PmWiki is older or newer than a known release. $VersionNum%0ais composed from the release number by padding the major and minor%0arelease numbers with zeroes to three digits, thus $VersionNum for this%0arelease (2.0.6) is 2000006, while a release like "2.1.24" will have%0a$VersionNum set to 2001024.%0a%0aAs mentioned on the pmwiki-users mailing list, we are also now maintaining%0aPITS entries for enhancements and changes to consider making in the %0acore distribution. The list can be found at %0ahttp://www.pmwiki.org/PITS/CoreCandidate, all are welcome to add %0acomments and vote on the items under consideration.%0a%0a%0a!! Version 2.0.5 (9-Sep-2005)%0a%0aThis version adds an [@?action=logout@] and cleans up a few things %0afor internationalization (i18n) support. %0a%0aWe've also formally deprecated and eliminated the $Newline variable %0afrom the core code -- sites that absolutely need pages stored in%0athe 1.x format can set $NewlineXXX. (Note that this version %0acontinues to be able to read pages from all previous PmWiki%0aformats.)%0a%0a!! Version 2.0.4 (8-Sep-2005)%0a%0aOne week after the release of 2.0.0 we're now up to 2.0.4, most%0achanges have been minor bug fixes and improvements. This release%0aprovides a few improvements here and there.%0a%0aThe biggest change is the addition of a link indexing system for%0aimproving the speed of [[Categories]] and backlinks (using the %0a[@(:pagelist link=...:)@] markup. The system uses a ''.linkindex'' %0afile to keep track of all page links within the site, generating and%0aupdating the file as needed and using the file to avoid scanning pages%0athat are known to not link to the target. The ''.linkindex''%0afile can be removed at anytime to cause it to be regenerated from%0ascratch. Link indexing can be disabled by setting $EnableLinkIndex=0;%0ain ''local/config.php''.%0a%0aThe "change summary" associated with each edit is now limited to%0aa maximum of 100 characters. A local customization can increase%0athe size of the summary.%0a%0aThe tilde sequences used to generate signatures are now precise;%0aonly a sequence of exactly three or four tildes result in a signature.%0aLonger sequences of tildes such as ~~~~~~~~ are left alone and not%0aconverted to signatures. (Generating a sequence of three or four%0atildes still requires creative use of escapes, as in [@[=~~=]~@] and%0a[@[=~~=]~~@].)%0a%0aA number of previously hard-coded prompts are now internationalized.%0a%0aMany PHP E_NOTICE messages (displayed when error_reporting() is%0aset to its maximum value) are now eliminated.%0a%0a%0a!! Version 2.0.3 (6-Sep-2005)%0a%0aThis is a minor update; it enhances the core to display change%0asummaries in the page history, and makes additional attributes%0aavailable to input forms in forms.php.%0a%0aThis release also fixes a bug in the setting of the $sub parameter%0afor LDAP authentication, improves the setting of default values%0ain scripts/urlapprove.php, and fixes the search pages and skin%0ato use $SiteGroup instead of the hard-coded "Site" variable.%0a%0aLastly, this update changes the [@(:searchbox:)@] markup to%0abe a bit smarter about form generation when $EnablePathInfo%0ais set.%0a%0a!! Version 2.0.2 (3-Sep-2005)\\%0aVersion 2.0.1 (2-Sep-2005)%0a%0aThese versions correct some minor bugs in the loading and saving%0aof pages, the MailPosts feature, and documentation.%0a%0a!! [+ Version 2.0.0 (1-Sep-2005) +]%0a%0aAt long last, I'm very pleased to announce the official release of%0aPmWiki 2.0.0, now available at http://www.pmwiki.org/pub/pmwiki .%0a%0aPmWiki 2.0 has been in development for well over a year, with more%0athan eighty development and beta releases. In addition, the%0acookbook for 2.0 continues to expand, and currently has over 200%0arecipes and more on the way.%0a%0a'''Not available at press time:''' For those who may be concerned%0athat their "must-have feature" didn't make it into the 2.0.0 release,%0adon't be. The 2.0.0 release isn't the end of development, but%0ajust the stable basis for the next set of features and improvements.%0aEven if some features (e.g., discuss/comments pages, table of%0acontents, authorization groups, faster backlinks/categories)%0aaren't in the 2.0.0 release, I'm comfortable that we're at a point%0awhere these features can be added as 2.0.x releases with minimal%0aimpact to existing 2.0 sites. And if not, then we'll start on 2.1. :-)%0a%0a'''Upgrading to 2.0.0:''' Many sites have been keeping relatively%0aup-to-date with the latest 2.0 beta releases; for most of these%0asites upgrading to 2.0.0 is a minor upgrade (but see the notes below).%0aFor sites running beta versions of PmWiki older than 2.0.beta44,%0athe upgrade may require a bit of extra work -- check the ReleaseNotes%0afor more details. For sites running 1.x or 0.6 versions of PmWiki,%0asee http://www.pmwiki.org/wiki/PmWiki/UpgradingFromPmWiki1 for%0atips on successfully migrating the site to PmWiki 2.0.0.%0a%0aPmWiki 2.0.0 does have some changes over the previous (beta55)%0arelease:%0a%0a* Lots of changes and improvements to the documentation. Some documentation pages still need work, but the documentation is now sufficiently far along that I'm comfortable with making the release.%0a%0a* The release comes with a new default skin, matching the one currently available at http://www.pmwiki.org. For those sites that wish to retain the old skin, it is available from http://www.pmwiki.org/wiki/Cookbook/PmWikiV1Skin .%0a%0a* The storage format for pages in wiki.d/ has changed somewhat. PmWiki 2.0.0 can seamlessly read and interact with pages stored in previous formats, but any external scripts that may attempt to read wiki.d/ files directly will need to be adjusted to understand the new format. In particular, the $Newline variable has been deprecated in this release and is no longer used. (Sites that need file-level compatibility with previous versions can set a value for $Newline and PmWiki 2.0 will use that, however.)%0a%0a* Deleted pages now have a ",del-1234567890" suffix instead of just the timestamp.%0a%0a* The Site.SideBar is now unprotected by default. Other pages in the Site group continue to be protected against edits and require the admin password to unlock.%0a%0a* Several relatively small improvements and bug fixes -- see the ChangeLog for details.%0a%0a'''What's next:''' Next I plan to work on getting internationalizations updated to 2.0.0 -- many i18n items "broke" in beta44 and need to be cleaned up. In conjunction with this will be page improvements and cleanups on pmwiki.org, as well as addressing outstanding PITS entries. After that will come more feature enhancements, including comments pages, section edits, and improved indexing/search capabilities.%0a%0a----%0a%0a'''Thank you:''' My sincere and humble thanks to everyone who has contributed so much of their time, ideas, opinions, writing, and code to PmWiki. I notice that the PmWiki:Contributors page is way out of date, so if you've helped at all with PmWiki core development, don't be shy or modest -- feel free to add yourself to the list and be associated with an outstanding group.%0a%0aAnd, as always, comments, suggestions, questions, and bug reports can be reported to the mailing list or the PmWiki Issue Tracking System.%0a%0aThanks again,%0a%0aPm%0a%0a----%0a%0a!!!Version 2.0.beta55 (25-Aug-2005)%0aI was really hoping that the next release would be 2.0.0, but it %0adidn't work out that way. Really all that needs to be done now is %0ato finish cleaning up the documentation.%0a%0aThis release has a number of important changes and bugfixes. First,%0athe 'value=' wikistyle is working again, having been broken in an%0aearlier release. WikiStyles now also accept dots and parens in values,%0aso that things like "1.5em" and "rgb(255,255,255)" work. There's a%0anew "[@%25cframe%25@]" wikistyle, which centers content in a 200-pixel frame%0a(this can be adjusted with a "width=" parameter in the wikistyle).%0a%0aThe [@(:include:)@] directive now allows a list of pages to be searched%0afor inclusion; the first existing page is selected. Thus the markup%0a%0a [@(:include Page1 Page2 Page3:)@]%0a%0aincludes the contents of the first available of Page1, Page2, or Page3.%0a%0aThe [=[@...@]=] markup is now the "preformatted text" markup. It can be%0aused instead of the space [@[=...=]@] markup to generate blocks of%0apreformatted and escaped text. It's also fairly smart about handling%0aextra newlines inside the [=[@...@]=], so that there isn't a lot of%0aunwanted vertical space displayed in the output.%0a%0aAnd speaking of unwanted vertical space, PmWiki's handling of "blank lines"%0ain the markup text has been changed somewhat. In previous versions%0aof PmWiki, some directives %0a(e.g., [@(:comment:), (:keyword:), (:noleft:), (:if:)@]) often %0aresulted in blank lines in the markup text, which then%0agenerated vertical space on the output. In this release, only those%0alines that are blank in the original source markup (before processing)%0aend up generating vertical space in the output. This ends up being%0amuch more natural for authors and allows cleaner markup sequences.%0a%0aThis change may have some ramifications for selected recipe authors.%0aIf a custom markup rule produces other wiki markup to be processed by%0aPmWiki, and the output wiki markup contains blank lines that is intended%0ato generate vertical space in the page output, then the custom markup rule%0aneeds to either generate '%3c:vspace>' tags for the blank lines or call%0athe PVS() function to convert blank lines into vertical space tags.%0a(For more details or assistance, query the mailing list.)%0a%0aSome may have noticed that pmwiki.org now has a new skin; some version of%0athis skin is expected to become the standard skin in the next release. %0aThe current 2.0.beta skin will be made available for download in the %0aCookbook for sites that want to continue using it.%0a%0a!!!Version 2.0.beta54 (1-Aug-2005)\\%0aVersion 2.0.beta53 (30-Jul-2005)%0a%0aThis release restores ?action=search, to be able to perform searches%0ain the context of a group or current page. It also modifies the%0a[@(:searchbox:)@] directive to allow a "group=" option to limit%0asearches to certain groups.%0a%0a!!!Version 2.0.beta52 (29-Jul-2005)%0a%0aThis release provides a number of minor bugfixes and introduces improvements%0ato image handling. Most of the improvements for images are described%0aon the [[PmWiki.Images]] page. Other changes are in the [[ChangeLog]].%0a%0a!!!Version 2.0.beta51 (22-Jul-2005)%0a%0aThis release corrects a problem introduced by the "Save and Edit"%0acapabilities introduced in 2.0.beta44 -- posts made with "Save and Edit"%0acould bypass blocklists, urlapprovals, and simultaneous edits.%0a%0aFor administrators and recipe writers who have been working with%0aposting capabilities, posting is now controlled by an $EnablePost%0avariable. Setting $EnablePost to zero suppresses the actual post --%0apreviously this was generally performed with [@unset($_POST['post'])@].%0aIf appropriate, a message for why the post was suppressed can%0ausually be placed in the $MessagesFmt array.%0a%0a!!!Version 2.0.beta50 (20-Jul-2005)%0a%0aThis release makes two major improvements to the authorization%0asemantics in PmWiki:%0a%0a1. The $HandleAuth array can be used to set the authorization%0alevel required for executing a corresponding action. For example,%0asetting $HandleAuth['diff'] to 'edit' means that edit authorizations%0aare required to view the page history ([@?action=diff@]). Similarly,%0asetting $HandleAuth['source'] to 'admin' means that only the%0aadmin would be able to use [@?action=source@].%0a%0a2. Passwords can now "cascade" -- that is, if a page sets a 'read'%0apassword but not an 'edit' password, then the read password%0ais also used as the edit password. Similarly, if a page sets%0aan 'edit' password but not an 'attr' password, then the edit%0apassword is also used as the attr password.%0a%0aThis prevents situations where authors set an edit password%0aon a page but don't set a corresponding attr password.%0a%0aThis does not change PmWiki's other passwording characteristics --%0ai.e., page passwords still override group passwords, and group%0apasswords still override site passwords. Password cascading%0ais only used where there's no page, group, or site password set %0afor a given authorization level.%0a%0a!!!Version 2.0.beta49 (19-Jul-2005)%0a%0aThis release adds a Content-Disposition: header for sites that have%0adirect downloads disabled (automatically fills in a browser's filename%0afor such downloads). It also fixes some issues with \\ markup at the%0aends of lines.%0a%0a!!!Version 2.0.beta48 (13-Jul-2005)\\%0aVersion 2.0.beta47 (12-Jul-2005)\\%0aVersion 2.0.beta46 (11-Jul-2005)\\%0aVersion 2.0.beta45 (10-Jul-2005)\\%0aVersion 2.0.beta44 (10-Jul-2005)%0a%0aThis release has a number of major changes, and is hopefully the%0alast such "major" release before 2.0.0. %0a%0aIncluded with this release is a special ''transition.php'' script%0athat reconfigures PmWiki as needed to cause it to work as it did%0ain previous releases. In the release notes below any changes%0athat are handled by the transition script are marked by [ ].%0aThis transition script is automatically loaded by default so the%0asite admin doesn't need to do anything to use it.%0a%0aEventually the transition script will also provide diagnostic%0aoptions to inform site admins of places where they may be relying%0aon outdated or deprecated features, and how they can change their%0asettings to be up-to-date.%0a%0aPmWiki now sets CSS stylings so that all images within a page are%0adisplayed without a border (HTML's default is a 1-pixel border).%0aTo restore the behavior of previous versions, add the following to%0a''local/config.php'':%0a%0a $HTMLStylesFmt['img'] = ' img { border:1px solid; } ';%0a $ImgTagFmt="%3cimg src='\$LinkUrl' style='border:0px;' alt='\$LinkAlt' />";%0a%0aWith this release we are officially initiating use of the "Site"%0agroup discussed on the pmwiki-users mailing list. The Site group %0ais intended to hold a variety of utility and configuration pages %0aused by PmWiki, and many of PmWiki's pages have moved from the %0a"Main" group into this new location. More on this in a bit.%0a%0aThe major internal change is that this release provides support%0afor input forms. Notably, the "Edit Page" form layout can now%0abe specified using wiki markup in the Site.EditForm page. ( [ ] However,%0aPmWiki still honors the $PageEditFmt variable for those sites or%0askins that may have customized edit forms.)%0a%0aThe edit form now includes a "change summary" line where authors%0acan summarize the edits. The edit form can also contain %0aa "Save and edit" button to save changes but continue editing, and%0aa "Cancel" button for abandoning changes.%0a%0aThe $EditMessageFmt variable for displaying messages to authors%0ais now the $MessagesFmt array, which can be displayed using the%0a[=(:messages:)=] markup. [ ] The transition script takes care%0aof moving messages between $EditMessageFmt and $MessagesFmt as%0aneed to preserve correct operation.%0a%0aA number of traditional locations for pages have now been moved%0ainto the Site group, many of which are handled by the transition%0ascript:%0a%0a* The new location for the `AllRecentChanges page is Site.AllRecentChanges. [ ] However, if `Main.AllRecentChanges exists then it will continue to be updated also. Administrators may wish to move `Main.AllRecentChanges to Site.AllRecentChanges and/or remove `Main.AllRecentChanges entirely.%0a%0a* The search results page is now [[Site.Search]] instead of `Main.SearchWiki. `Main.SearchWiki will be removed entirely in a future release. [ ] The transition script takes care of mapping some instances of `Main.SearchWiki in links to Site.Search.%0a%0a* Approved urls are now stored in `Site.ApprovedUrls . [ ] However, if `Main.ApprovedUrls exists it is used and updated as appropriate.%0a%0a* `Main.SideBar is now `Site.SideBar. Unfortunately, it's very difficult to manage this particular change among all possible skin combinations, so it's up to the admin to correctly move existing sidebar pages into the appropriate group, or to update the skin template accordingly.%0a%0a* `PmWiki.EditQuickReference and `PmWiki.UploadQuickReference are now stored in the Site group.%0a%0a* `PmWiki.WikiHelp is being deprecated and will be removed from a future release.%0a%0aThe $PagePreviewFmt variable no longer exists in standard PmWiki (it's now handled by Site.EditForm). [ ] However, to preserve backwards compatibility it is loaded by the transition script in certain situations.%0a%0aThe $PageName substitution (deprecated in 2.0.devel14) is now gone.%0aUse $FullName instead.%0a%0aThe GUI buttons can now have accesskeys associated with them.%0a%0aGUI buttons are now displayed via a [@(:e_guibuttons:)@] directive in Site.EditForm, instead of being attached to $EditMessagesFmt.%0a%0aThis release now provides the ability for user and browser-specific%0apreferences and customizations, including accesskeys and form element%0asizes. More details about this will be forthcoming in documentation.%0a%0aThe release adds standard [@(:noleft:)@] and [@(:noright:)@] directives for suppressing the display of the left and right sidebars (depending on skin template).%0a%0a%0a!!!Version 2.0.beta43 (8-Jul-2005)%0a%0aThis release adds the long awaited [@(:div:)@] markup. The format of%0athe markup is%0a [=%0a (:div:)%0a ...%0a (:divend:)%0a =]%0aAttributes (e.g., [@id='name'@] and [@class='class'@] can be supplied %0ato the [@(:div:)@] directive. [@(:div:)@] lives in the same markup%0alayer as advanced tables [@(:table:)@], so divs and tables do not%0anest, and any div or advanced table directive ends any previous%0a[@(:div:)@]. (We may change this in a future release; for now we'll go%0awith the non-nesting version.)%0a%0aThe release also adds a div shortcut, any line beginning with >>%3c%3c%0amarks a new div section. In addition, wikistyle specifications%0acan go between the >> and %3c%3c, thus [@>>bgcolor=#ffffdd%3c%3c@] will create%0aa division with a light yellow background. Similarly, one can%0ado things like [@>>id=foo%3c%3c@], [@>>class=bar%3c%3c@], and even make%0ause of author-defined wikistyles such as >>center%3c%3c or >>Don%3c%3c.%0a%0aLastly, the wikistyle code now supports [@%25id=name%25@], which%0aallows an HTML [@id='name'@] attribute to be added to the%0aaffected text.%0a%0a!!!Version 2.0.beta42 (7-Jul-2005)%0a%0aThis minor release adds the [@(:if attachments:)@] conditional markup, to include/exclude markup based on the (non)existence of attachments to the current page.%0a%0a!!!Version 2.0.beta41 (7-Jul-2005)%0a%0aThis is a minor release with some small bugfixes to uploads, adding the ability to set the item number for ordered lists with [@%25item value=nn%25@], and enabling nested Keep()s for module writers.%0a%0a!!!Version 2.0.beta40 (22-Jun-2005)%0a%0aThis very minor release simply updates the authuser.php script to %0asupport Apache `MD5 encryption in .htpasswd files.%0a%0a!!!Version 2.0.beta39 (20-Jun-2005)%0a%0aThis release primarily fixes some bugs with wikistyles and their interactions with block structures such as tables and headings. In addition, the release fixes some nagging errors with opening directories in PITS and other recipes.%0a%0aThis release also adds definition lists to the available syntaxes for building WikiTrails.%0a%0aFinally, this release adds ''scripts/authuser.php'', which is a preliminary script for user-authentication based on .htpasswd (and similarly formatted) files.%0a%0a!!!Version 2.0.beta38 (14-Jun-2005)%0a%0aThis version performs a minor bug fix to the `ListPages() function for those sites that are storing pages in per-group subdirectories.%0a%0a!!!Version 2.0.beta37 (26-May-2005)%0a%0aThis version performs some minor bug fixes and improvements:%0a* Changed the location in which $SearchIncl, $SearchExcl, and $SearchGroup are set %0a* Fixed bug in setting of $SearchExcl %0a* Added filesize check after new page is written to disk but before replacing existing page%0a* Added $LinkUrl and $LinkAlt to urlapprove.php %0a%0a!!!Version 2.0.beta36 (30-Apr-2005)%0a%0aThis release fixes a rather large bug with excluded terms in the %0apagelist code, and a very minor bug with generating cells if there%0aare spaces after the final '||' in a simple table.%0a%0a!!!Version 2.0.beta35 (24-Apr-2005)%0a%0aThis release fixes some bugs in the new pagelist code.%0a%0a!!!Version 2.0.beta34 (23-Apr-2005)%0a!!!Version 2.0.beta33 (22-Apr-2005)%0a%0aThis version introduce a major redesign of working and speed of scripts/pagelist.php, which defines [@(:pagelist:)@] and [@(:@][@searchresults:)@] markups. This version now have a parameter [@link=@] to display pages with links to target page (i.e. "backlinks"). There is also "order=" and "count=" parameters which can be used for sorting listed pages and limit display length.%0a%0aHowever, the changes also mean that it's possible that any%0alocal customizations or cookbook recipes that depended on the%0aprevious pagelist code will no longer work, so be careful%0awhen upgrading.%0a%0aThis release also optimizes the rendering of page links and%0afixes a performance bug in the `FmtPageName() function. These%0achanges have been observed to improve page rendering times by%0aup to 40%25.%0a%0aWhat remains before the 2.0 official release: redesign of the%0aedit page form, addition of a "comments" feature, and fixing%0aPmWiki documentation. %0a%0aLastly, the trailing ?> sequences have been removed from all%0ascripts to simplify installations on VMS and other environments%0athat have trouble with newlines after the closing ?>.%0a%0a%0a!!!Version 2.0.beta32 (17-Apr-2005)%0a%0aVersion beta32 adds the $RCLinesMax variable, which limits the maximum%0anumber of lines that are saved in `RecentChanges files. The default%0ais set to zero, meaning "no limit".%0a%0a!!!Version 2.0.beta31 (15-Apr-2005)%0a%0aThis release adds the ability to store and serve attachments (uploads)%0afrom directories that is not directly accessible to the webserver. %0aThe "download" action ([@?action=download@]) tells PmWiki to retrieve%0aan attachment associated with the current page. This can be used for%0aprotecting attachments via a page's passwords, or for working around%0awebservers that cannot access files in the PmWiki-created ''uploads/''%0adirectories.%0a%0aSetting $EnableDirectDownload=0; tells PmWiki to generate links to %0a[@?action=download@] to retrieve attachments instead of accessing%0athe attachments directly through the webserver. Note that this%0asetting by itself may not be enough to protect uploads; one may need%0aalso need to to configure the webserver or ''uploads/'' directory%0ato block direct requests to the webserver for attachment files.%0a%0aThis release also adds $EnableFixedUrlRedirect. When PmWiki receives%0aa url with a "partial pagename" (such as the name of a WikiGroup),%0ait first determines the correct "full name" for the page. Normally%0aPmWiki then issues a "redirect" to the browser requesting the browser%0ato reload the page with its full, "official" url, but setting%0a$EnableFixedUrlRedirect to zero will suppress the reload so that the%0adetermined page is sent immediately (and keeps the same url used to%0aaccess the page).%0a%0a%0a!!!Version 2.0.beta30 (14-Apr-2005)%0a%0aThis release works around some problems with PHP sessions resulting in%0adeadlocked web processes. The changes to the authorization code in%0a2.0.beta29 greatly increased the likelihood of such deadlocks, so%0aall sites running 2.0.beta29 are encouraged to upgrade to this one.%0a%0aThis release also changes the wikiword-handling functions so that%0awikiwords are no longer spaced if $LinkWikiWords is disabled.%0a%0aFinally, this release adds $PageTextStartFmt and%0a$PageTextEndFmt to allow local customization of the container%0asurrounding %3c!--`PageText--> in skin templates.%0a%0a%0a!!!Version 2.0.beta29 (11-Apr-2005)%0aThis release incorporates some significant changes in the authorization%0aand page storage code, so production-level sites might want to wait for%0aany new bugs to found and fixed before upgrading. Or, go ahead and%0aupgrade but be prepared to revert back to beta28 or earlier if you%0astart to notice problems.%0a%0aHowever, I do need lots of testers for the new code in this release,%0aof which there's a fair bit. Thus, I'd greatly appreciate any%0ahelp people can provide with testing the new system and suggesting%0aimprovements. I'm particularly looking for suggestions about how%0athe interfaces can be made easier to understand.%0a%0aThe Page Attributes form (reached via ?action=attr and used to set%0apasswords) has been improved so that it's now possible to see which%0apasswords have been set, and if those passwords are coming from the%0agroup or site defaults. For an example, see%0ahttp://www.pmwiki.org/wiki/Test/AttrExample?action=attr . These%0aprompts are not yet internationalized -- I want to get the english%0ainterface finalized first and then we'll make the i18n strings for it.%0a%0aMultiple passwords (separated by spaces) can now be set on pages and groups,%0athus entering "one two" for an edit password will means that either "one" or%0a"two" will be accepted. Because of this, passwords cannot contain%0aspaces (I hope this won't be a major loss -- let me know if it will).%0a%0aThe password request field now appears within a normal skin layout%0a(i.e., with header, sidebar, footer); previously requests for%0apasswords were undecorated forms that appeared alone in the browser%0awindow.%0a%0aThere is an [=(:if auth ...:)=] conditional markup available for%0aprocessing depending on the current authorizations in effect. For%0aexample, one can create a bullet list with%0a [=%0a (:if auth read:)* [[View page -> {$Name}?action=browse]]%0a (:if auth edit:)* [[Edit page -> {$Name}?action=edit]]%0a (:if auth upload:)* [[Attachments -> {$Name}?action=upload]]%0a (:if auth attr:)* [[Page Attributes -> {$Name}?action=attr]]%0a (:if auth admin:)* You're logged in as admin%0a (:ifend:)%0a =]%0aand only those items corresponding to the user's current authorizations%0awill appear. This should be very useful in creating action buttons.%0a%0aAssuming there's already some mechanism in place for identifying%0aand authenticating someone, pages can specify a password field of%0a"id:xyz", which means to allow only user "xyz" the specified%0aaccess. For example, specifying an edit password of "id:alice"%0ameans that only user "alice" (and the admin) is allowed to edit the%0apage. Multiple ids can be specified as either "id:alice,bob,carol"%0aor "id:alice id:bob id:carol". The special value "id:*" is used%0ato mean any authenticated user, and users can be excluded via the%0aminus sign, as in "id:-eve,*".%0a%0aUser-based authentication can completely coexist and mix freely with%0apassword-based authentication, thus an edit password of%0a"id:alice glorp" will allow Alice and anyone who knows the%0apassword "glorp" to edit the page.%0a%0a2.0.beta29 supports only REMOTE_USER authentication; future releases%0awill add other authentication mechanism.%0a%0a!!!Version 2.0.beta28 (27-Mar-2005)%0a%0aThis release makes some substantial improvements to the attachments/uploads feature in PmWiki. The specific enhancements include:%0a%0a* 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. %0a%0a* Attachments automatically have the file extension (if any) converted to lowercase.%0a%0a* 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:)@].%0a%0a%0a!!!Version 2.0.beta27 (26-Mar-2005)%0a%0aThis release makes a number of minor changes and bugfixes. The more significant changes are listed below.%0a%0a* The localmap.txt and farmmap.txt files can now contain $-variable substitutions (same as any variables available through `FmtPageName).%0a%0a* Most built-in directives are now case insensitive.%0a%0a* The (:markup:) directive now has a (:markup:) ... (:markupend:) version. The previous [=(:markup:)=] [@[=...=]@] syntax is still supported, but may change in future releases.%0a%0a* A bug was fixed with preformatted text eating the leading whitespace character.%0a%0a* Added the missing [@{$FullName}@] markup.%0a%0a* Fixed a bug in the handling of $MetaRobots.%0a%0a!!!Version 2.0.beta26 (5-Mar-2005)%0a%0aThis 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.%0a%0a!!!Version 2.0.beta25 (2-Mar-2005)%0a!!!Version 2.0.beta24 (1-Mar-2005)%0a%0aThis 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.%0a%0aThis 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.%0a%0aList and heading markups have been changed to consume any single space character that follows the list or heading marker.%0a%0aA $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.%0a%0a%0a!!!Version 2.0.beta23 (24-Feb-2005)%0a%0aThis release adds a couple of improvements.%0a%0aFirst, 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.%0a%0aThis 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.%0a%0a!!!Version 2.0.beta22 (23-Feb-2005)%0a%0aThis release makes some feature enhancements and some bugfixes.%0a%0aThe 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.%0a%0aThe password prompt form has been customized so that the cursor is%0aautomatically placed in the form when the page is loaded.%0a%0aThe ?action=source action has been fixed for pages with characters%0aoutside of ASCII.%0a%0aThe graphical button bar can now be used for buttons with arbitrary%0aHTML elements (e.g., "save" and "preview" buttons).%0a%0aOther changes are noted in the ChangeLog.%0a%0a!!!Version 2.0.beta21 (13-Feb-2005)%0a%0aThis 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.%0a%0aMany 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%0a%0a umask(0);%0a%0ato 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!)%0a%0aThis release also changes the %3ctitle> tag generated by ?action=rss%0ato properly honor the [@(:title:)@] setting on various pages.%0a%0aFinally, the release fixes some minor bugs in the HTML generation for [[tables]], corrects some bugs with settings for $AuthorPage and $AuthorLink, and makes some cookbook-related additions to the v1 conversion script.%0a%0aFor more details, see the [[ChangeLog]].%0a%0a!!!Version 2.0.beta20 (30-Jan-2005)%0a%0aThis version has a number of relatively minor changes.%0a%0aFirst, 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.%0a%0aThe 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@].%0a%0aSites that want to keep PmWiki 2's prior behavior can do so with the following:%0a [=%0a $PageNameChars = '-[:alnum:]';%0a $MakePageNamePatterns = array(%0a "/[^$PageNameChars] /" => ' ',%0a "/(\\b\\w)/e" => "strtoupper('$1')",%0a "/ /" => '');%0a =]%0a%0aThe localmap.txt InterMap file can now contain comments (denoted by leading '#' in the file).%0a%0aHeadings (!! markup) can now have block wikistyles.%0a%0aMore information is available in the PmWiki.ChangeLog.%0a%0a%0a!!!Version 2.0.beta19 (17-Jan-2005)%0a%0aPmWiki 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.%0a%0a!!!Version 2.0.beta18 (17-Jan-2005)%0a%0aThis release makes improvements to the gui buttons, fixes some bugs, and minor other improvements and changes.%0a%0aAlternate text is now valid inside of WikiTrails; i.e., one can use [@%3c%3c|[[TrailPage | alternate text]]|>>@] to change the text of the link to the trailpage.%0a%0aThe GUI button module has a number of changes. %0a* 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. %0a* The "Heading 3" button has now been changed into separate "Heading" and optional "Subheading" buttons.%0a* The "Attach:" (paperclip) button appears in the bar only if uploads are enabled for that page.%0a* 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).%0a%0aThis release also eliminates the %3cp>...%3c/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.%0a%0a$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'] = ''; @].%0a%0aFinally, this release fixes a call to setlocale() which was supposed to only return the current locale but instead was causing the locale to change.%0a%0a%0a!!!Version 2.0.beta17 (12-Jan-2005)%0a%0aThis 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.%0a%0a!!!Version 2.0.beta16 (11-Jan-2005)%0a!!!Version 2.0.beta15 (10-Jan-2005)%0a%0aThe 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.%0a%0a $EnableGUIButtons = 1;%0a%0aIf your site customizes the $PageEditFmt variable, then note that the buttons are placed at the end of the $EditMessageFmt and that the %3ctextarea> needs to have [@id='edit'@] in order for the buttons to work.%0a%0aThe 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.%0a%0aThis 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.%0a%0aFinally, a number of WikiStyles bugs have been fixed.%0a%0a%0a!!!Version 2.0.beta14 (28-Dec-2004)%0a%0aThis 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. :-) %0a%0a* PmWiki's %3cimg ...> tags now use style='border:0px;' instead of border='0'.%0a%0a* `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.%0a%0a* $PageEditFmt now includes id='text' to make for easier styling/referencing.%0a%0a* `MarkupToHTML()'s "posteval" code has been changed considerably.%0a%0a* `PageExists() now caches results of checking for page existence.%0a%0a* Page urls are now automatically url-encoded as needed.%0a%0a* Many of PmWiki's internal regex patterns have been optimized to (hopefully) improve matching speed.%0a%0a* Comparisons to substr() have been replaced with more efficient comparison functions.%0a%0a%0a!!!Version 2.0.beta13 (22-Dec-2004)%0a%0aThis 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 %25-in-urls (which is what 2.0.beta7 was supposed to fix).%0a%0aIn general, all sites using the 2.0.betaXX series are recommended to upgrade to this latest release.%0a%0a%0a!!!Version 2.0.beta12 (21-Dec-2004)%0a%0aThis release adds a number of %3cdiv> tags and identifiers around the%0avarious forms that PmWiki produces (e.g., uploads, search results,%0aattribute pages, etc.). This makes such forms easier to style in CSS.%0a%0aIn addition, this release adds some functionality to the urlapprove.php%0ascript to limit the number of unapproved urls that can be saved in%0aa page (helps to combat wikispam).%0a%0aFinally the release adds the [@(:description:)@] markup for generating %3cmeta name='description' ... /> tags in the output. [@(:description:)@] may also get used for other features later on (e.g., excerpts in search results, etc.).%0a%0a!!!Version 2.0.beta11 (19-Dec-2004)%0a%0aThis release primarily cleans up a number of items in the handling of uploads:%0a# A new $LinkUpload variable has been defined for $...Fmt strings -- it contains the URL of the upload page for the current attachment%0a# [@(:attachlist:)@] automatically adds "replace-attachment" links (denoted by triangles) to the items in the list%0a# After performing an upload, the "upload name" field is automatically cleared%0a# Fixed error message when upload exceeds maximum allowed by PHP%0a%0aThis 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).%0a%0a!!!Version 2.0.beta10 (14-Dec-2004)%0a%0aThis release makes some substantial improvements in the installation%0aprocedure. First, the installation steps have been simplified, and PmWiki%0aprovides accurate instructions when it encounters a PHP "safe_mode"%0aenvironment. %0a%0aThe release also provides better handling of the '.flock' file -- if%0aPmWiki discovers it cannot open an existing .flock file for writing,%0ait removes the file and tries again rather than complaining about it.%0aThis makes the system more robust when page directories are going%0athrough backup restore.%0a%0a%0a!!!Version 2.0.beta9 (14-Dec-2004)%0a%0aThis 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.%0a%0a!!!Version 2.0.beta8 (13-Dec-2004)%0a%0aThis release makes a number of reasonably significant changes. First and%0aforemost, it changes the [@?pagename=@] uri syntax to be [@?n=@], and%0ainstallation now defaults to $EnablePathInfo = 0; to make better%0acompatibility.%0a%0aSites which wish to continue using the [@.../Main/HomePage@] form of uri%0ainstead of [@?n=Main.HomePage@] should set $EnablePathInfo = 1 in%0aconfig.php. %0a%0aThis release also fixes a probable bug in the handling of author%0anames which was causing spaces to be incorrectly removed.%0a%0a2.0.beta8 includes features for advanced CSS styling of [[tables]]%0avia the $TableRowAttrFmt and $TableCellAttrFmt variables, more description %0awill be forthcoming in a Cookbook recipe. %0a%0aAlso, this release includes vastly improved support for UTF-8 sites,%0aincluding the ability to have UTF-8 characters in pagenames and%0a[@[[utf-8 links]]@]. We're still working out the details to be%0aable to support UTF-8 wikiwords -- PHP's functions don't provide%0agood support for this. See scripts/xlpage-utf-8.php for more%0ainformation on UTF-8.%0a%0aFinally, the Q: and A: markups are back, and a few other minor%0abug fixes and documentation improvements have been included.%0a%0a%0a!!!Version 2.0.beta7 (8-Dec-2004)%0a%0aThis release has a number of improvements and changes to it. First,%0athis release provides a ''scripts/xlpage-utf-8.php'' file, which adapts%0aPmWiki to be able to work somewhat with utf-8 characters in pagenames.%0aSince PHP's preg_* functions seem to be unable to detect UTF-8 alphanumeric%0acharacters, the trade-off at the moment is that WikiWord links are limited%0ato the ASCII character set. We're working on ways to get around this%0arestriction, however.%0a%0aThe xlpage-utf-8.php script can be automatically loaded by any `XLPage %0atranslation that specifies 'xlpage-i18n' => 'utf-8'.%0a%0aThis release also:%0a%0a* fixes up the .htaccess files that are placed in local/ and wiki.d/%0a* changes the default textarea size for the pmwiki skin, %0a* restores the link/citation markup ([@[[target |#]]@])%0a* fixes the default value of $DefaultPageTextFmt (note this may change again)%0a* automatically converts instances of $Newline in posted text%0a%0a%0a!!!Version 2.0.beta6 (5-Dec-2004)%0a%0aThis 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.%0a%0aThe ''sample-config.php'' file has been updated with more comments and suggestions for customizations.%0a%0aFinally, this release increases the default value of $MaxIncludes to 50 (and provides better documentation of the $MaxIncludes variable).%0a%0a!!!Version 2.0.beta5 (1-Dec-2004)%0a!!!Version 2.0.beta4 (1-Dec-2004)%0a%0aThese releases fix a number of bugs introduced by the changes in 2.0.beta3.%0aUsers of 2.0.beta3 are encouraged to upgrade directly to this release.%0a%0a!!!Version 2.0.beta3 (30-Nov-2004)%0a%0aThis 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.%0a%0aInternally, 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).%0a%0a!!!Version 2.0.beta2%0a%0aThis release fixes the bug that caused $PageTemplateFmt to no longer%0awork in pmwiki-2.0.beta1.%0a%0a!!!Version 2.0.beta1%0a%0aThis release marks PmWiki 2.0 as entering "beta" status, as it finally%0abegins moving towards official release. The major change for this release%0ais in the skins code -- previous versions of PmWiki used $PageTemplateFmt%0ato specify the location of the template file to be used; newer versions%0anow use the $Skin variable to specify the location of the skins directory%0a(in pub/skins/) that contains the skin template file, php configuration%0ascript, and other files.%0a%0aIn 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.%0a%0a!!!Version 2.0.devel releases%0a%0aThese are the release notes for the development releases of PmWiki 2.0.%0a%0aFirst, this is definitely still in the development stages, so many%0athings are likely to change between now and the official releases.%0a%0aSecond, at present there's not a good way to upgrade from PmWiki 1.0%0ato PmWiki 2.0, although upgrade support is expected to arrive in future%0a(development) releases. So, you can use this version just to see the%0anew developments and gain some experience, but migrating from 1.0%0ato this version is still likely to be a bit of a chore.%0a%0aBugs and other requests can be reported to the PmWiki Issue Tracking %0aSystem at http://www.pmwiki.org/wiki/PITS/PITS. Any help%0ain testing, development, and/or documentation is greatly appreciated..%0a%0a%0a%0a%0a%0a%0a%0a%0a%0a%0a%0a%0a -time=1238261974 +text=(:title Release Notes:)%0a(:Summary: PmWiki release notes:)%0a!! Version 2.2.2 (2009-06-21)%0aThe major news in this release is a fix of an AuthUser vulnerability.%0a%0aThe vulnerability affects only wikis that (1) rely on the AuthUser core module %0afor User:Password authentication, -AND- (2) where the PHP installation runs %0awith the variable "magic_quotes_gpc" disabled.%0a%0aAll PmWiki 2.1.x versions from pmwiki-2.1.beta6 on, all 2.2.betaX, 2.2.0, and %0a2.2.1 are affected.%0a%0aThe PmWiki SiteAnalyzer can detect if your wiki needs to upgrade:%0a http://www.pmwiki.org/wiki/PmWiki/SiteAnalyzer%0a%0aIf your wiki is vulnerable, you should do one of the following at the earliest %0aopportunity:%0a%0a* Upgrade to a version of PmWiki at least 2.2.2 or greater.%0a* Turn on magic_quotes_gpc in the php.ini file or in a .htaccess file.%0a%0aAlternatively, you can temporarily disable AuthUser until you upgrade.%0a%0aNote that even if your wiki does not have the AuthUser vulnerability at the %0amoment, you are strongly encouraged to upgrade to PmWiki version 2.2.2 or %0alater, as some future configuration of your hosting server might put you at %0arisk.%0a%0aThis release also comes with minor updates in the local documentation; fixes %0awere applied for international wikis - notably global variables in %0axlpage-utf-8.php and a new variable $EnableNotifySubjectEncode, which allows %0ae-mail clients to correctly display the Subject header; and a number of other %0asmall bugs were fixed.%0a%0a!! Version 2.2.1 (2009-03-28)%0aThis release comes with an updated local documentation; wikiTrails now work cross-group; guiedit.php now produces valid HTML, and other small bugs were fixed. We also added $EnableRedirectQuiet, which allows redirects to take place without any mention of "redirected from page ....".%0a%0a!! Version 2.2.0 (2009-01-18)%0a%0aThis is a summary of changes from 2.1.x to 2.2.0.%0a%0a* Several pages that were formerly in the [[Site]].* group are now in a separate [[SiteAdmin]].* group, which is read-restricted by default. The affected pages include Site.AuthUser, Site.AuthList, Site.NotifyList, Site.Blocklist, and Site.ApprovedUrls . If upgrading from an earlier version of PmWiki, PmWiki will prompt to automatically copy these pages to their new location if needed. If a site wishes to continue using the old Site.* group for these pages, simply set%0a%0a-> $SiteAdminGroup = $SiteGroup;%0a%0a-> when carrying out this upgrade inspect your config files for lines such as%0a--> $BlocklistDownload['Site.Blocklist-PmWiki'] = array('format' => 'pmwiki');%0a->as you may wish to fix then, eg%0a--> $BlocklistDownload[$SiteAdminGroup . '.Blocklist-PmWiki'] = array('format' => 'pmwiki');%0a%0a* Important Change in Passwords in PmWiki 2.2 indicating that the group can be edited even if a site password is set will be done by @@"@nopass"@@ prior it was done by @@"nopass"@@%0a-> When migrating a wiki you will have to manually modify the permission or by a script replace in all the page concerned @@passwdread=nopass:@@ by @@passwdread=@nopass@@ (see [[PITS/00961]]) [[~isidor]]%0a%0a* PmWiki now ships with WikiWords entirely disabled by default. To re-enable them, set either $LinkWikiWords or $EnableWikiWords to 1. To get the 2.1 behavior where WikiWords are spaced and parsed but don't form links, use the following:%0a-> $EnableWikiWords = 1;%0a-> $LinkWikiWords = 0;%0a%0a* It's now easy to disable the rule that causes lines with leading spaces to be treated as preformatted text -- simply set $EnableWSPre=0; to disable this rule.%0a%0a--> '''Important:''' There is ongoing discussion that the leading whitespace rule may be disabled ''by default'' in a future versions of PmWiki. If you want to make sure that the rule will continue to work in future upgrades, set $EnableWSPre=1; in ''local/config.php''.%0a%0a* The $ROSPatterns variable has changed somewhat -- replacement strings are no longer automatically passed through FmtPageName() prior to substitution (i.e., it must now be done explicitly).%0a%0a* Page variables and page links inside of [@(:include:)@] pages are now treated as relative to the included page, instead of the currently browsed page. In short, the idea is that links and page variables should be evaluated with respect to the page in which they are written, as opposed to the page in which they appear. This seems to be more in line with what authors expect. There are a number of important ramifications of this change:%0a%0a[[#relativeurls]]%0a** We now have a new [@{*$var}@] form of page variable, which always refers to "the currently displayed page". Pages such as Site.PageActions and Site.EditForm that are designed to work on "the currently browsed page" should generally switch to using [@{*$FullName}@] instead of [@{$FullName}@].%0a%0a** The $EnableRelativePageLinks and $EnableRelativePageVars settings control the treatment of links and page variables in included pages. However, to minimize disruption to existing sites, $EnableRelativePageVars defaults to '''disabled'''. This will give existing sites an opportunity to convert any absolute [@{$var}@] references to be [@{*$var}@] instead.%0a%0a** Eventually $EnableRelativePageVars will be enabled by default, so we highly recommend setting [@$EnableRelativePageVars = 1;@] in ''local/config.php'' to see how a site will react to the new interpretation. Administrators should especially check any customized versions of the following:%0a---> [[Site.PageActions]]%0a---> [[Site.EditForm]]%0a---> [[Site.PageNotFound]]%0a---> SideBar pages with ?action= links for the current page%0a---> $GroupHeaderFmt, $GroupFooterFmt%0a---> [[Page lists]] that refer to the current group or page, etc in sidebars, headers, and footers%0a%0a** The [@(:include:)@] directive now has a [@basepage=@] option whereby an author can explicitly specify the page upon which relative links and page variables should be based. If no basepage= option is specified, the included page is assumed to be the base.%0a%0a* Sites that want to retain the pre-2.2 behavior of [@(:include:)@] and other items can set [@$Transition['version'] = 2001900;@] to automatically retain the 2.1.x defaults.%0a%0a* Text inserted via [@(:include:)@] can contain "immediate substitutions" of the form [@{$$option}@] -- these are substituted with the value of any options provided to the include directive.%0a%0a* PmWiki now recognizes when it is being accessed via "https:" and switches its internal links appropriately. This can be overridden by explicitly setting $ScriptUrl and $PubDirUrl.%0a%0a* A new $EnableLinkPageRelative option allows PmWiki to generate relative urls for page links instead of absolute urls.%0a%0a* Draft handling capabilities have been greatly improved. When $EnableDrafts is set, then the "Save" button is relabeled to "Publish" and a "Save draft" button appears. In addition, an $EnablePublishAttr configuration variable adds a new "publish" authorization level to distinguish editing from publishing. See [[PmWiki:Drafts]] for more details.%0a%0a[[#ptvstart]]%0a* There is a new [@{$:var}@] "page text variable" available that is able to grab text excerpts out of markup content. For example, [@{SomePage$:Xyz}@] will be replaced by a definition of "Xyz" in SomePage. Page text variables can be defined using definition markup, a line beginning with the variable name and a colon, or a special directive form (that doesn't display anything on output):%0a%0a-->[@%0a:Xyz: some value # definition list form%0aXyz: some value # colon form%0a(:Xyz: some value:) # directive form%0a@]%0a[[#ptvend]]%0a%0a* The [@(:pagelist:)@] command can now filter pages based on the contents of page variables and/or page text variables. For example, the following directive displays only those pages that have an "Xyz" page text variable with "some value":%0a%0a-->[@(:pagelist $:Xyz="some value":)@]%0a%0a Wildcards also work here, thus the following pagelist command lists pages where the page's title starts with the letter "a":%0a%0a-->[@(:pagelist $Title=A* :)@]%0a%0a* The if= option to [@(:pagelist)@] can be used to filter pages based on conditional markup:%0a%0a-->[@(:pagelist if="auth upload {=$FullName}":)@] pages with upload permission%0a-->[@(:pagelist if="date today.. {=$Name}":)@] pages with names that are dates later than today%0a%0a* Spaces no longer separate wildcard patterns -- use commas. (Most people have been doing this already.)%0a%0a* Because page variables are now "relative", the [@{$PageCount}, {$GroupCount}, {$GroupPageCount}@] variables used in pagelist templates are now [@{$$PageCount}, {$$GroupCount}, {$$GroupPageCount}@].%0a%0a* One can now use [@{$$option}@] in a pagelist template to obtain the value of any 'option=' provided to the [@(:pagelist:)@] command.%0a%0a* The [@(:pagelist:)@] directive no longer accepts parameters from urls or forms by default. In order to have it accept such parameters (which was the default in 2.1 and earlier), add a [@request=1@] option to the [@(:pagelist:)@] directive.%0a%0a* The [@count=@] option to pagelists now accepts negative values to count from the end of the list. Thus [@count=5@] returns the the first five pages in the list, and [@count=-5@] returns the last five pages in the list. In addition, ranges of pages may be specified, as in [@count=10..19@] or [@count=-10..-5@].%0a%0a* Pagelist templates may have special [@(:template first ...:)@] and [@(:template last ...:)@] sections to specify output for the first or last page in the list or a group. There's also a [@(:template defaults ...:)@] to allow a template to specify default options.%0a%0a* PmWiki comes with an ability to cache the results of certain [@(:pagelist:)@] directives, to speed up processing on subsequent visits to the page. To enable this feature, set $PageListCacheDir to the name of a writable directory (e.g., ''work.d/'').%0a%0a* [[#elseifelse]]The [@(:if ...:)@] conditional markup now also understands [@(:elseif ...:)@] and [@(:else:)@]. In addition, markup can nest conditionals by placing digits after if/elseif/else, as in [@(:if1 ...)@], [@(:elseif1 ...:)@], [@(:else1:)@], etc.%0a%0a* The [@(:if date ...:)@] conditional markup can now perform date comparisons for dates other than the current date and time.%0a%0a* [[WikiTrails]] can now specify #anchor identifiers to use only sections of pages as a trail.%0a%0a* A new [@(:if ontrail ...:)@] condition allows testing if a page is listed on a trail.%0a%0a* The extensions .odt, .ods, and .odp (from OpenOffice.org) are now recognized as valid attachment types by default.%0a%0a* A new [[blocklist]] capability has been added to the core distribution. It allows blocking of posts based on IP address, phrase, or regular expression, and can also make use of publicly available standard blocklists. See [[PmWiki.Blocklist]] for details.%0a%0a* There is a new [[SiteAdmin.AuthList]] page that can display a summary of all password and permissions settings for pages on a site. This page is restricted to administrators by default.%0a%0a* There are new [@{$PasswdRead}@], [@{$PasswdEdit}@], etc. variables that display the current password settings for a page (assuming the browser has attr permissions or whatever permissions are set in $PasswdVarAuth).%0a%0a* Forms creation via the [@(:input:)@] markup has been internally refactored somewhat (and may still undergo some changes prior to 2.2.0 release). The new [@(:input select ...:)@] markup can be used to create select boxes, and [@(:input default ...:)@] can be used to set default control values, including for radio buttons and checkboxes.%0a%0a* The [@(:input textarea:)@] markup now can take values from other sources, including page text variables from other pages.%0a%0a* Specifying [@focus=1@] on an [@(:input:)@] control causes that control to receive the input focus when a page is loaded. If a page has multiple controls requesting the focus, then the first control with the lowest value of [@focus=@] "wins".%0a%0a* PmWiki now provides a ''scripts/creole.php'' module to enable Creole standard markup. To enable this, add [@include_once('scripts/creole.php')@] to a local customization file.%0a%0a* PmWiki adds a new [@{(...)}@] ''markup expression'' capability, which allows various simple string and data processing (e.g., formatting of dates and times). This is extensible so that recipe authors and system administrators can easily add custom expression operators.%0a%0a* It's now possible to configure PmWiki to automatically create Category pages whenever a page is saved with category links and the corresponding category doesn't already exist. Pages are created only if the author has appropriate write permissions into the group. To enable this behavior, add the following to ''local/config.php'':%0a%0a-->[@$AutoCreate['/^Category\\./'] = array('ctime' => $Now);@]%0a%0a* Sites with wikiwords enabled can now set $WikiWordCount['WikiWord'] to -1 to indicate that 'WikiWord' should not be spaced according to $SpaceWikiWords.%0a%0a* WikiWords that follow # or & are no longer treated as WikiWords.%0a%0a* Links to non-existent group home pages (e.g., [@[[Group.]]@] and [@[[Group/]]@]) will now go to the first valid entry of $PagePathFmt, instead of being hardcoded to "Group.Group". For example, to set PmWiki to default group home pages to [@$DefaultName@], use%0a%0a-->[@$PagePathFmt = array('{$Group}.$1', '$1.{$DefaultName}', '$1.$1');@]%0a%0a* PmWiki now provides a $CurrentTimeISO and $TimeISOFmt variables, for specifying dates in ISO format.%0a%0a* [[(Cookbook:)Cookbook]] authors can use the internal PmWiki function UpdatePage (temporarily documented at [[(Cookbook:)DebuggingForCookbookAuthors]]) to change page text while preserving history/diff information, updating page revision numbers, updating RecentChanges pages, sending email notifications, etc.%0a%0a* [[Skin templates]] are now required to have %3c!--HTMLHeader--> and %3c!--HTMLFooter--> directives. Setting $EnableSkinDiag causes PmWiki to return an error if this isn't the case for a loaded skin. Skins that explicitly do not want HTMLHeader or HTMLFooter sections can use %3c!--NoHTMLHeader--> and %3c!--NoHTMLFooter--> to suppress the warning.%0a%0a* Added a new "pre" wikistyle for preformatted text blocks.%0a%0a* The xlpage-utf-8.php script now understands how to space UTF-8 wikiwords. %0a%0a* Searches on utf-8 site are now case-insensitive for utf-8 characters.%0a%0a* Many Abort() calls now provide a link to pages on pmwiki.org that can explain the problem in more detail and provide troubleshooting assistance.%0a%0a* PmWiki no longer reports "?cannot acquire lockfile" if the visitor is simply browsing pages or performing other read-only actions.%0a%0a* The $EnableReadOnly configuration variable can be set to signal PmWiki that it is to run in "read-only" mode (e.g., for distribution on read-only media). Attempts to perform actions that write to the disk are either ignored or raise an error via Abort().%0a%0a* Including authuser.php no longer automatically calls ResolvePageName().%0a%0a* Authentication using Active Directory is now simplified. In Site.AuthUser or the $AuthUser variable, set "ldap://name.of.ad.server/" with no additional path information (see PmWiki.AuthUser for more details).%0a%0a* Pages are now saved with a "charset=" attribute to identify the character set in effect when the page was saved.%0a%0a* The phpdiff.php algorithm has been optimized to be smarter about finding smaller diffs.%0a%0a* Removed the (deprecated) "#wikileft h1" and "#wikileft h5" styles from the pmwiki default skin.%0a%0a* The mailposts.php and compat1x.php scripts have been removed from the distribution.%0a%0a!! Version 2.1.27 (2006-12-11)%0a%0aThis version backports from 2.2.0-beta a bugfix for $TableRowIndexMax and also support for the [@{*$Variable}@] markup.%0a%0a!! Version 2.1.26 (2006-09-11)%0a%0aThis version fixes a bug in feeds.php that would cause feed entries to be mixed up.%0a%0a!! Version 2.1.25 (2006-09-08)%0a%0aThis release fixes a bug in authuser.php introduced by the 2.1.24 release.%0a%0aThe skin template code has also been extended to allow [@%3c!--XMLHeader-->@] and [@%3c!--XMLFooter-->@] as aliases for [@%3c!--HTMLHeader-->@] and [@%3c!--HTMLFooter-->@].%0a%0a!! Version 2.1.24 (2006-09-06)%0a%0aThis release makes some improvements and fixes to the [[AuthUser]]%0acapability.%0a%0aA bug in authuser.php that had trouble dealing with non-array values in $AuthUser has been fixed.%0a%0aIt is now possible to specify group memberships from ''local/config.php'' (remember that such entries must come ''before'' including the ''authuser.php'' script):%0a%0a # alice and bob's passwords%0a $AuthUser['alice'] = crypt('alicepassword');%0a $AuthUser['bob'] = crypt('bobpassword');%0a%0a # members of the @writers and @admins groups%0a $AuthUser['@writers'] = array('alice', 'bob');%0a $AuthUser['@admins'] = array('alice', 'dave');%0a%0a # carol is a member of @editors and @writers%0a $AuthUser['carol'] = array('@editors', '@writers');%0a%0aAuthUser can now read from Apache-formatted .htgroup files. The location of the .htgroup file can be done either in ''local/config.php'' or [[Site.AuthUser]]%0a%0a # local/config.php:%0a $AuthUser['htgroup'] = '/path/to/.htgroup';%0a%0a # Site.AuthUser%0a htgroup: /path/to/.htgroup%0a%0a%0a!! Versions 2.1.21, 2.1.22, 2.1.23 (2006-09-05, 2006-09-06)%0a%0aThis release closes a potential security vulnerability for sites %0athat are running with 'register_globals' set to on. Details of%0athe vulnerability will be forthcoming on the mailing list%0aand site.%0a%0aSites that are running with PHP 'register_globals' and 'allow_url_fopen'%0aset to 'On' should upgrade to this release at the earliest%0aopportunity. If upgrading isn't an option, contact Pm for%0aa patch to older versions.%0a%0aThere is now a tool available to analyze PmWiki sites for security%0aand other configuration settings, see [[PmWiki:SiteAnalyzer]].%0a%0aVersion 2.1.23 also corrects a bug that prevented PmWiki from being%0aable to read pagefiles created by versions of PmWiki before 0.5.6.%0a%0a!! Version 2.1.20 (2006-09-04)%0a%0aMore minor bugfixes:%0a* Corrected a bug with WikiWord references appearing in the [@(:attachlist:)@] markup.%0a* Restore ability to remove/override PmWiki's default CSS settings.%0a%0a!! Version 2.1.19 (2006-08-30)%0a%0aThis release provides a number of very minor bugfixes and%0aenhancements:%0a%0a* Fixed a bug in the pageindex code that was causing it to not regenerate as quickly as it should.%0a* Fixed image/object/embed handling in wikistyles to better support the [[Cookbook:Flash]] recipe.%0a* Fixed a bug with wikistyles and input form tags.%0a%0aThe next release(s) may have a number of substantial code%0aenhancements and changes, so this release simply closes out%0aa few items before introducing those changes.%0a%0a%0a!! Version 2.1.18 (2006-08-28)%0a%0aThis release closes a potential cross-site scripting vulnerability%0athat could allow authors to inject Javascript code through the%0avarious table markups.%0a%0aThe release also adds a new [@(:input image:)@] markup to generate%0aimage input tags in forms.%0a%0aFinally, this release corrects a problem with [@?action=print@]%0afailing to properly set the [@{$Action}@] page variable.%0a%0a!! Version 2.1.17 (2006-08-26)%0a%0aThis release fixes a long-standing bug with $EnableIMSCaching%0a(PITS:00573), whereby login/logout operations wouldn't invalidate %0abrowser caches, causing some people to see versions of a page prior%0ato the login/logout taking place. %0a%0aThe new IMS caching code maintains a "imstime" cookie in the %0avisitor's browser that keeps track of the time of last login, %0alogout, author name change, or site modification. This cookie%0ais then used to determine the proper response to browser requests%0acontaining If-Modified-Since headers. (Previously only the%0atime of the last site modification was available.) %0a%0aBrowsers which do not accept cookies will effectively act as%0athough IMS caching is disabled.%0a%0a%0a!! Version 2.1.16 (2006-08-26) [[#v2116]]%0a%0aThis release makes some improvements to skin handling -- primarily%0athis improves the capability of relocating skin files to other%0alocations, and to provide the ability for recipes to insert items%0aat the ''end'' of HTML output.%0a%0aThis release introduces a [@%3c!--HTMLFooter-->@] directive into%0a[[skin templates]], which allows recipes and local%0acustomizations to insert output near the end of a document %0ausing a $HTMLFooterFmt array from PHP.%0a%0aAlso, the [@%3c!--HeaderText-->@] directive, which inserts the%0acontents of $HTMLHeaderFmt into the output, has now been%0arenamed to [@%3c!--HTMLHeader-->@]. PmWiki will continue to%0arecognize [@%3c!--HeaderText-->@] to preserve compatibility with%0aexisting skins, but [@%3c!--HTMLHeader-->@] is preferred.%0a%0aA new $SkinLibDirs array has been introduced which allows%0athe source locations and urls for skins to be specified from%0aa customization file. By default $SkinLibDirs is set as%0a%0a $SkinLibDirs = array("./pub/skins/\$Skin" => "$PubDirUrl/skins/\$Skin",%0a "$FarmD/pub/skins/\$Skin" => "$FarmPubDirUrl/skins/\$Skin");%0a%0aThe keys (on the left) indicate the places to look for a "skin .tmpl %0afile" in the filesystem, while the values (on the right) indicate the%0aurl location of the "skin css file". Modifying the value of %0a$SkinLibDirs allows a skin .tmpl file to be located anywhere on the %0afilesystem.%0a%0aAs far as I can see, none of the changes introduced by this%0arelease should have any sort of negative impact on existing%0asites, so it should be safe to upgrade. (If I'm wrong, please%0alet me know.)%0a%0a%0a!! Version 2.1.15 (2006-08-25)%0a%0aThis release includes a number of feature enhancements and code cleanups%0aas reported or requested by administrators.%0a%0aFirst, AuthUser's LDAP authentication system now allows the use of%0aa [@?filter@] parameter, consistent with urls used for mod_auth_ldap%0aauthorization in Apache. See the newly updated LDAP section of the%0a[[AuthUser]] documentation for more details.%0a%0aA chicken-and-egg problem with the [@@_site_*@] authorization groups%0ahas been resolved. It's now possible to have a page's read authorization%0arefer to things such as [@_site_edit@].%0a%0aAlso, the RetrieveAuthPage() function -- used for retrieving pages only%0aif the visitor is authorized to do so -- now recognizes a special%0alevel parameter of 'ALWAYS', which means to always authorize access%0aregardless of the browser or visitors current permissions. This%0amay be useful for allowing certain operations to take place from%0awithin trusted scripts without having to grant full authorization%0ato the browser.%0a%0aHardcoded instances of the ''local/'' directory now use a%0acustomizable $LocalDir variable. This variable controls where%0aPmWiki looks for ''local/config.php'' and per-group customization %0afiles. It may be useful for some [[Wiki Farm(s)]] contexts. Note that%0athis does not change or affect the location of %0a''$FarmD/local/farmconfig.php''.%0a%0aSome minor internal changes have been made to %0a''scripts/wikistyles.php'' to better accommodate the %0awikipublisher recipe. It's probably better if we don't try%0ato explain them. :-)%0a%0a%0a!! Version 2.1.13, 2.1.14 (2006-08-15, 2006-08-16)%0a%0aThis release fixes a bug in handling numeric passwords, and also%0aallows ldaps:// authentication sources.%0a%0a!! Version 2.1.12 (2006-08-07)%0a%0aThis version introduces the ability to nest divs and tables.%0aThe standard [@(:table:)@] and [@(:div:)@] markups are still%0aavailable, except that a [@(:div:)@] may contain a [@(:table:)@]%0aand vice-versa. %0a%0aAs in previous versions of PmWiki, the [@(:div:)@] markup%0aautomatically closes any previous [@(:div:)@]. However, there%0aare now [@(:div1:)@], [@(:div2:)@], etc. markups (and the%0acorresponding [@(:div1end:)@], [@(:div2end:)@], ...) which can be%0aused to uniquely distinguish divs for nesting purposes.%0a%0aTo restore PmWiki's previous "non-nested" div behavior, set%0a$Transition['nodivnest'] = 1; in a local customization file.%0a%0aOther changes in this release:%0a* Add a [@(:noaction:)@] directive to suppress display of page actions.%0a* Allow anchor tags to contain colons, hyphens, and dots.%0a* Add "white-space" as an allowed wikistyle.%0a* Other minor bug fixes and typographical corrections.%0a%0a%0a!! Version 2.1.11 (2006-06-09)%0a%0aThis is a minor update that prevents [@%25define=%25@] wikistyles%0afrom generating empty paragraphs in the HTML output. Prior to%0athis release, markup lines containing only wikistyle definitions%0awould often generate empty paragraphs (%3cp>%3c/p>), this release%0achanges things so that a markup line beginning with [@%25define=@]%0aand containing only wikistyle definitions will not initiate%0aa new paragraph.%0a%0a%0a!! Version 2.1.10 (2006-06-03)%0a%0aVersion 2.1.4 introduced an [@{$Action}@] page variable that would%0acontain the current [@?action=@] value. Unfortunately, this page%0avariable conflicted with a pre-existing [@$Action@] global variable%0athat was being used by skins to display a human-friendly form of%0athe current action. Since there's not really a clean way to resolve%0athis, I've decided to keep [@{$Action}@] as a page variable%0awith the current action value (as introduced in 2.1.4), and change %0athe global for skins to be $ActionTitle. This will require updating%0askins to use $ActionTitle instead of $Action. I apologize for the%0aconflict.%0a%0aThis release adds a Site.LocalTemplates page for the [@fmt=#xyz@]%0aoption in pagelist and search results. The list of pages to be%0asearched can be customized via the $FPLTemplatePageFmt variable.%0aThe [@fmt=#xyz@] option will now also search the current page for%0aa matching template before searching Site.LocalTemplates%0aand Site.PageListTemplates.%0a%0aThe 'pmwiki' skin now places a %3cspan> around the "Recent Changes"%0alink in the header to make it somewhat easier to style.%0a%0a!! Version 2.1.9 (2006-06-02)%0a%0aThis release fixes a long-standing and difficult-to-find bug with%0athe handling of [@[[~Author]]@] links.%0a%0a!! Version 2.1.8 (2006-06-01)%0a%0aThis release simply changes the $NotifyListFmt variable to be%0a$NotifyListPageFmt (more descriptive), and adds a $NotifyList%0aarray that can be used to specify notification entries from%0aa configuration file.%0a%0a!! Version 2.1.7 (2006-05-31)%0a%0aThis release introduces a variety of improvements and bugfixes.%0a%0a'''Vspace paragraphs are now divs:'''%0aVersion 2.1.7 changes the way that PmWiki handles vertical%0aspace in output (the infamous [@%3cp class='vspace>%3c/p>@] sequence).%0aInstead of using paragraphs, PmWiki now generates %0a[@%3cdiv class='vspace'>%3c/div>@] for vertical space sequences.%0aIn addition, PmWiki is able to collapse the vspace %3cdiv> with%0aany subsequent paragraph tags, such that a sequence like%0a%0a %3cdiv class='vspace>%3c/div>%3cp>...paragraph text...%3c/p>%0a%0ais automatically converted to%0a%0a %3cp class='vspace'>...paragraph text...%3c/p>%0a%0aThis allows for better control over paragraph spacing. It is%0aexpected that this change in vspace handling will not have%0aany detrimental effects on existing sites. Sites that have%0aset custom values for $HTMLVSpace will continue to use the%0acustom value. A site that wants to restore PmWiki's earlier%0ahandling of vspace can do so by adding the following to%0a''local/config.php'':%0a%0a $HTMLVSpace = "%3cp class='vspace'>%3c/p>";%0a%0a'''Improved email notifications of changes:''' Version 2.1.7%0aincorporates a ''notify.php'' script that provides improved%0acapabilities for sending email notifications in response to%0apage changes. This script is intended to replace the previous%0a[[MailPosts]] capability, which is now deprecated (but will%0acontinue to be supported in PmWiki 2.1.x). Details and %0ainstructions for using notify.php are in the [[PmWiki.Notify]] page.%0a%0a'''Added 'group home page' syntax:''' A group name followed%0aby only a dot or slash is automatically treated as a reference%0ato the group's home page, whatever it happens to be. This simplifies%0asome pagelist templates as well as a number of other items. %0aIn particular, group links in pagelist output now points to the%0acorrect locations (instead of being a page in the current group).%0a%0aSeveral bugs and vulnerabilities have been fixed:%0a* The default width of edit forms is now more appropriate for Internet Explorer.%0a* Authentication failure messages from LDAP are now suppressed.%0a* Some cross-site scripting vulnerabilities in uploads and page links have been corrected (courtesy Moritz Naumann, http://moritz-naumann.com).%0a* A problem with invalid pagenames resulting in redirect loops has been corrected.%0a%0a!! Version 2.1.6 (2006-05-22)%0a%0aThe primary improvement in this release is the addition of %0aa pagename argument to the [@(:if auth:)@] conditional markup.%0aThus one can display markup based on a visitor's authorization%0ato a page other than the current one. For example, to test%0afor edit privileges to `Main.WikiSandbox, one would use%0a[@(:if auth edit Main.WikiSandbox:)@]. As before, if the%0apagename is omitted the directive tests authorization to%0athe current page.%0a%0aThis release also restores the ability to have hyphens in%0aInterMap link names.%0a%0aLastly, the release closes a potential cross-site scripting%0avulnerability in the WikiTrail markup, and provides some small%0aperformance improvements.%0a%0a!! Version 2.1.4, 2.1.5 (2006-03-29)%0a%0aThis release fixes a few more bugs:%0a* Pagelist-based feeds using ?action=rss work again.%0a* Multi-term searches with special characters is fixed.%0a%0aThe release also adds a couple of items:%0a* There is now an [@{$Action}@] page variable.%0a* Usernames and passwords submitted to authuser.php can contain quotes.%0a* The [@(:attachlist:)@] command now uses a natural case sort.%0a%0a!! Version 2.1.3 (2006-03-17)%0a%0aThis release fixes a bug that prevents the [@lines=@] option from%0aworking on sites running PHP 5.1.1 or later. It also re-fixes%0aa bug involving empty passwords and LDAP authentication.%0a%0a!! Version 2.1.2 (2006-03-16)%0a%0aThis release fixes a bug with handling "nopass" passwords. It also%0amakes some speed improvements to large web feeds, and fixes a couple%0aof minor HTML tag mismatches.%0a%0a!! Version 2.1.1 (2006-03-13)%0a%0aThis release primarily fixes a bug with passwords containing%0amultiple authorization groups, and in the process slightly liberalized%0athe formatting of "@group" and "id:name" handling. This release also %0aadds a new mechanism for managing and displaying FAQ pages.%0a%0a!! Version 2.1.0 (2006-03-12)%0a%0aThis set of release notes is fairly lengthy, as it chronicles all of the changes since 2.0.13 (four months of development). A lot remains the same, but some changes warrant extra care when upgrading from a 2.0.x version to 2.1.0 (thus the major revision number change). As always, questions and issues can be mailed to the pmwiki-users mailing list.%0a%0aHere's the list:%0a%0a* WikiWords are now disabled by default. To enable them, set "$LinkWikiWords = 1;" in a [[local customization(s)]] file. As of 2.1.beta2, you can now leave WikiWords enabled but have links to non-existent pages display without decoration -- to do this, place the following lines in ''pub/css/local.css'':%0a%0a span.wikiword a.createlink { display:none; }%0a span.wikiword a.createlinktext %0a { border-bottom:none; text-decoration:none; color:inherit; }%0a%0a* The [@(:pagelist:)@] code has been substantially revised. Pagelist formatting can now be specified using markup, and several defaults are available from [[Site.PageListTemplates]]. Also, several built-in pagelist formatting functions (FPLSimple, FPLByGroup, FPLGroup) are now removed in favor of the template code. The FPLByGroup function can be restored by setting $Transition['fplbygroup']=1; . '''Remark:''' Check to see if your page [[Site.PageListTemplates]] is not passwordprotected for viewing, otherwise the resulting pagelist will not be shown. %0a%0a* [@(:pagelist:)@] now also understands wildcards in @@group=@@ and @@name=@@ arguments, as well as excluding specific names and groups.%0a%0a* [@(:pagelist:)@] now has an "order=random" option.%0a%0a* [@(:searchbox:)@] now accepts "group=", "link=", "list=", etc. options to be passed along to the search results. It also accepts a "target=" option that identifies the page on which to send the search query.%0a%0a* [@?action=search@] will display the contents of the current page if it contains a [@(:@][@searchresults:)@] directive, otherwise it uses the content of the page identified by $PageSearchForm (default is the search page for the current language translation). %0a%0a* PmWiki no longer maintains a ".linkindex" file -- it now has a ".pageindex" file that contains not only a table of links, but also words used in each page (to speed up term searches). The maintenance of the .pageindex file can be disabled by setting $PageIndexFile=''; %0a %0a* The $EnablePageListProtect variable now defaults to true, so that read-only pages appear in pagelists only if the visitor has read authorization. Note that this can also slow down some [@(:pagelist:)@] and search commands, so if the site doesn't have any read-only pages or if you aren't worried with cloaking read-only pages from searchlists, it might be worth setting $EnablePageListProtect=0; .%0a%0a* Whitespace indentation rules now exist and are enabled by default. Any line that begins with whitespace and aligns with a previous list item is considered to be "within" that list item. Text folds and wraps as normal, and the [@(:linebreaks:)@] directive is honored. To turn off whitespace indentation, use [@DisableMarkup('^ws');@].%0a%0a* A single blank line after a [@!!Heading@] is silently ignored.%0a%0a* The [@(:redirect:)@] directive is now a true markup, and can be embedded inside conditional markups or includes. It also allows redirecting to an anchor in a page, such as [@(:redirect PageName#anchor:)@]. A new [@from=@] option allows the redirect to take place only from pages that match the given wildcard specification. The [@status=@] option allows a 301, 302, 303, or 307 HTTP status code to be returned.%0a%0a* The built-in authorization function has gone through some substantial internal changes, however these changes should be fully backward compatible so that it doesn't impact any existing sites. (If it ''does'' cause a problem, please let me know so I can investigate why!) The password prompts are now specified by an admin-customizable Site.AuthForm page. In addition, the authorization function no longer creates PHP sessions for visitors that aren't being authenticated.%0a%0a* The authuser.php has likewise been substantially updated. The new version should have complete backwards compatibility with previous authuser.php settings, but this version also offers the ability to configure authentication resources and authorization groups through the [[Site.AuthUser]] page. Note that by default the Site.AuthUser page can only be edited using the admin password.%0a%0a* The $EnableSessionPasswords variable can be used to control whether passwords are held in PHP sessions. (This does not affect user authentication via [[AuthUser]], however.)%0a%0a* The $Author variable now defaults to $AuthId if not otherwise set by a script or cookie.%0a%0a* The [[Site.SideBar]] page now defaults its edit password to the sitewide edit password (in $DefaultPasswords['edit']).%0a%0a* PmWiki now supports a "draft edit" mode, enabled by $EnableDrafts = 1. This creates a "Save as draft" button that will save a page under a "-Draft" suffix, for intermediate edits.%0a%0a* There is now an ?action=login action available.%0a%0a* A potential security vulnerability for sites running PHP 5 with register_globals enabled has been fixed.%0a%0a* The [@[[PageName |+]]@] markup is now available by default; this creates a link to `PageName and uses that page's title as the link text.%0a%0a* What used to be "markup variables" are now "[[page variables]]". These are always specified using the @@{$''variable''}@@ syntax, and can be used in markup and in $...Fmt strings. In addition, one can request a value for a specific page by placing the pagename in front of the variable, as in @@{''pagename''$''variable''}@@.%0a%0a* The ''scripts/rss.php'' script is now ''scripts/feeds.php'', and is a complete redesign for [[web feed(s)]] generation. The new version supports UTF-8 and other encodings, can generate Atom 1.0 ([@?action=atom@]), Dublin Core Metadata ([@?action=dc@]) output, and enclosures for podcasting. It also allows feeds to be generated from trails, groups, categories, and backlinks, and provides options (same as pagelists) for sorting and filtering the contents of the feed. Most sites can simply switch to using [@include_once("scripts/feeds.php");@] instead of the previous ''rss.php'' include. The ''rss.php'' file has been removed from the distribution (but still works with PmWiki 2.1 for those sites that wish to continue using it).%0a%0a* [[PmWiki/InterMap]] entries can now come from a `Site.InterMap page as well as the ''local/localmap.txt'' and ''local/farmmap.txt'' files. The format of these files has changed slightly, in that the InterMap name should now have a colon after it (previously the colon was omitted).%0a%0a* We can now provide better control of robot (webcrawler) interactions with a site to reduce server load and bandwidth. The $RobotPattern variable is used to detect robots based on the user-agent string, and any actions not listed in the $RobotActions array will return a 403 Forbidden response to robots. In addition, setting $EnableRobotCloakActions will eliminate any forbidden ?action= values from page links returned to robots, which will reduce bandwidth loads from robots even further (PITS:00563).%0a%0a* Non-existent page handling has been improved; whenever a browser hits a non-existent page, PmWiki returns the contents of Site.PageNotFound and a 404 ("Not Found") status code.%0a%0a* Page links that have "?action=" in their query arguments are now treated as "existing page" links even if the page does not exist.%0a%0a* The PmWiki default skin now adds rel='nofollow' to various action links.%0a%0a* Some of the CSS styles in the PmWiki default skin have been changed for better presentation.%0a%0a* The gui edit buttons have transparent (instead of white) borders so they integrate better into skins.%0a%0a* The $EnableIMSCaching variable is now much smarter, it can detect changes in local customization files as well as pages.%0a%0a* [[PmWiki/WikiStyles]] can now make percentage specifications by using "pct" to mean "%25".%0a%0a* Class attributes in [[WikiStyle(s)]] shortcuts are now cumulative, so that [@%25class1 class2%25@] results in [@class='class1 class2'@] instead of just [@class='class2'@] in the output.%0a%0a* A problem with the [@(:include PageName#from#:)@] markup not working has been fixed (PITS:00560).%0a%0a* Viewing a GroupHeader or GroupFooter page no longer displays the contents twice.%0a%0a* It's now easier to share pages among multiple sites (e.g., [[WikiFarms]]), see Cookbook:SharedPages (PITS:00459).%0a%0a* A problem with nested apostrophe markups has been fixed (PITS:00590).%0a%0a* PmWiki is now smarter about not surrounding block HTML tags with %3cp>...%3c/p> tags.%0a%0a* If an [@[[#anchor]]@] is used more than once in a page, only the first generates an actual anchor (to preserve XHTML validity).%0a%0a* There are now [@(:if equal ...:)@] and [@(:if exists pagename:)@] [[conditional markup]]s.%0a%0a* Compound conditional markup expressions are now possible -- e.g. [@(:if [ group PmWiki && ! name PmWiki ] :)@] .%0a%0a* Added an $InputValues array that can supply default values for certain form controls (PITS:00566).%0a%0a* The default setting of $UploadUrlFmt is now based on $PubDirUrl instead of $ScriptUrl.%0a%0a* The $text global variable has been removed (use $_GET['text'], $_POST['text'], or $_REQUEST['text']).%0a%0a* A possible problem with url-encoding of attachments with non-ASCII characters has been addressed (PITS:00588).%0a%0a* Page actions in non-existent pages no longer display with non-existent link decorations.%0a%0a* A README.txt file has been added, and several documentation files are now available through the docs/ directory.%0a %0a* PmWiki is no longer available through CVS on sourceforge.net. It is now available via SVN on pmwiki.org, at svn://pmwiki.org/pmwiki/tags/latest . For more details, see PmWiki:Subversion.%0a%0a* The $NewlineXXX variable (deprecated in 2.0.0) has been removed.%0a%0a* There is experimental support for server-side caching of pages that take a long time to render; this is currently an unsupported feature and may be removed in future releases.%0a%0a%0a!! Version 2.0.13 (2005-11-10)%0a%0aThis is a release containing minor bugfixes and improvements%0ain preparation for the 2.1.beta series.%0a%0a%25red%25Wiki administrators should note that after this release PmWiki will default to having WikiWords disabled.\\%0a%0aTo make sure WikiWords are enabled, use [@$LinkWikiWords = 1;@] in%0athe ''local/config.php'' file.%0a%0a%0a!! Version 2.0.12 (19-Oct-2005)%0a%0aThis release cleans up problems with page validation for page links%0acontaining query fragments and ampersands, changes PmWiki to use a%0aPHP "return" statement instead of "exit", and fixes a warning in%0ascripts/transition.php.%0a%0a!! Version 2.0.11 (17-Oct-2005)%0a%0aThis release fixes a couple of important bugs and adds some new%0afeatures to PmWiki.%0a%0aMost importantly, this release fixes bug with ?action=attr%0aaffecting the page history.%0a%0aFor sites using LDAP authentication with authuser.php, PmWiki%0anow provides $AuthLDAPBindDN and $AuthLDAPBindPassword variables%0ato specify the binding to be used for searching. It also works%0aaround a PHP oddity that causes users to appear authenticated%0awhen an empty password is provided. Authuser.php also now%0ahandles straight md5 password encryptions (commonly used by%0a`MySQL databases).%0a%0aThe core now includes the [@(:linebreaks:)@] markup%0a(from Cookbook:LineBreaks), which causes text on separate%0alines in the markup to appear as separate lines in the output%0a(i.e., no auto-joining of one line to the previous one).%0a%0aThere have been some internal changes designed to provide%0abetter support for leading-whitespace rules (more details on%0athis in a future release).%0a%0aThe core now provides an [@(:if date:)@] markup to display%0atext only if the current day is within a range of supplied%0adates.%0a%0a!! Version 2.0.10 (29-Sep-2005)\\%0aVersion 2.0.9 (28-Sep-2005)%0a%0aThis release fixes an oversight in xlpage-utf-8.php that failed to uppercase ASCII letters when mb_strtoupper isn't present.%0a%0a!! Version 2.0.8 (27-Sep-2005)%0a%0aThis release simply adds the capability to use quotes to enter%0apass phrases (passwords containing spaces) using ?action=attr,%0aand fixes a bug with displaying the name instead of the title in%0athe default print skin.%0a%0a!! Version 2.0.7 (26-Sep-2005)%0a%0aThis version changes the xlpage-utf-8.php case conversion slightly%0ato use a more direct conversion table, and completed the table%0afor more characters in the utf-8 set.%0a%0aThis release also fixes the $VersionNum variable that was supposed to%0aappear in 2.0.6.%0a%0aAn accesskey shortcut (ak_textedit) is being added to the edit form%0atext area.%0a%0aLastly, this release adds a timelimit to the generation of .linkindex,%0ato avoid long page times when generating the .linkindex.%0a%0a%0a!! Version 2.0.6 (16-Sep-2005)%0a%0aIn this release, we provide quite a few more updates for sites that%0awant or need to use utf-8 encoding, fix a large number of utf-8 %0arelated bugs, introduce better handling of author cookies, and%0abetter support for keeping track of version releases.%0a%0aThe biggest change is to the xlpage-utf-8.php recipe, which has%0abeen substantially rewritten from the previous version. This new%0aversion of xlpage-utf-8.php no longer depends on the %0a[[http://www.php.net/mb_strtoupper | mb_strtoupper()]]%0afunction, which seems to be not available in many PHP installations.%0aThe new version of xlpage-utf-8.php uses mb_strtoupper() if it's%0aavailable, but if not available then it manually performs case %0aconversions from a Unicode table that is directly encoded in the%0ascript. At present this table only understands case conversions%0afor Western European (Latin-1 or ISO-8859-1) and Cyrillic characters,%0awe'll want to expand the table to support other language character%0asets as needed. Just contact me on the listserv if a particular%0acharacter isn't yet supported.%0a%0aIn addition to the above, author names and cookies in utf-8 environments%0anow work again, and link suffixes containing non-ASCII characters work%0aagain also.%0a%0aThe GUI button handling in IE has been greatly improved; text selection%0ain IE now works as you would expect it to work when a gui button is%0apressed. Possibly still no hope for Mac Safari browsers, unfortunately...%0a%0aA $CookiePrefix variable has been introduced; a wiki administrator%0acan set $CookiePrefix to prevent PmWiki's cookies from interfering with%0acookies set from other applications under the same domain name.%0a%0aSome XHTML validation issues surrounding the use of %3cscript> tags %0ahave been fixed.%0a%0aAnd lastly, for script and recipe authors, there is now a $VersionNum%0anumeric value that makes it easier to determine if the currently running%0aversion of PmWiki is older or newer than a known release. $VersionNum%0ais composed from the release number by padding the major and minor%0arelease numbers with zeroes to three digits, thus $VersionNum for this%0arelease (2.0.6) is 2000006, while a release like "2.1.24" will have%0a$VersionNum set to 2001024.%0a%0aAs mentioned on the pmwiki-users mailing list, we are also now maintaining%0aPITS entries for enhancements and changes to consider making in the %0acore distribution. The list can be found at %0ahttp://www.pmwiki.org/PITS/CoreCandidate, all are welcome to add %0acomments and vote on the items under consideration.%0a%0a%0a!! Version 2.0.5 (9-Sep-2005)%0a%0aThis version adds an [@?action=logout@] and cleans up a few things %0afor internationalization (i18n) support. %0a%0aWe've also formally deprecated and eliminated the $Newline variable %0afrom the core code -- sites that absolutely need pages stored in%0athe 1.x format can set $NewlineXXX. (Note that this version %0acontinues to be able to read pages from all previous PmWiki%0aformats.)%0a%0a!! Version 2.0.4 (8-Sep-2005)%0a%0aOne week after the release of 2.0.0 we're now up to 2.0.4, most%0achanges have been minor bug fixes and improvements. This release%0aprovides a few improvements here and there.%0a%0aThe biggest change is the addition of a link indexing system for%0aimproving the speed of [[Categories]] and backlinks (using the %0a[@(:pagelist link=...:)@] markup. The system uses a ''.linkindex'' %0afile to keep track of all page links within the site, generating and%0aupdating the file as needed and using the file to avoid scanning pages%0athat are known to not link to the target. The ''.linkindex''%0afile can be removed at anytime to cause it to be regenerated from%0ascratch. Link indexing can be disabled by setting $EnableLinkIndex=0;%0ain ''local/config.php''.%0a%0aThe "change summary" associated with each edit is now limited to%0aa maximum of 100 characters. A local customization can increase%0athe size of the summary.%0a%0aThe tilde sequences used to generate signatures are now precise;%0aonly a sequence of exactly three or four tildes result in a signature.%0aLonger sequences of tildes such as ~~~~~~~~ are left alone and not%0aconverted to signatures. (Generating a sequence of three or four%0atildes still requires creative use of escapes, as in [@[=~~=]~@] and%0a[@[=~~=]~~@].)%0a%0aA number of previously hard-coded prompts are now internationalized.%0a%0aMany PHP E_NOTICE messages (displayed when error_reporting() is%0aset to its maximum value) are now eliminated.%0a%0a%0a!! Version 2.0.3 (6-Sep-2005)%0a%0aThis is a minor update; it enhances the core to display change%0asummaries in the page history, and makes additional attributes%0aavailable to input forms in forms.php.%0a%0aThis release also fixes a bug in the setting of the $sub parameter%0afor LDAP authentication, improves the setting of default values%0ain scripts/urlapprove.php, and fixes the search pages and skin%0ato use $SiteGroup instead of the hard-coded "Site" variable.%0a%0aLastly, this update changes the [@(:searchbox:)@] markup to%0abe a bit smarter about form generation when $EnablePathInfo%0ais set.%0a%0a!! Version 2.0.2 (3-Sep-2005)\\%0aVersion 2.0.1 (2-Sep-2005)%0a%0aThese versions correct some minor bugs in the loading and saving%0aof pages, the MailPosts feature, and documentation.%0a%0a!! [+ Version 2.0.0 (1-Sep-2005) +]%0a%0aAt long last, I'm very pleased to announce the official release of%0aPmWiki 2.0.0, now available at http://www.pmwiki.org/pub/pmwiki .%0a%0aPmWiki 2.0 has been in development for well over a year, with more%0athan eighty development and beta releases. In addition, the%0acookbook for 2.0 continues to expand, and currently has over 200%0arecipes and more on the way.%0a%0a'''Not available at press time:''' For those who may be concerned%0athat their "must-have feature" didn't make it into the 2.0.0 release,%0adon't be. The 2.0.0 release isn't the end of development, but%0ajust the stable basis for the next set of features and improvements.%0aEven if some features (e.g., discuss/comments pages, table of%0acontents, authorization groups, faster backlinks/categories)%0aaren't in the 2.0.0 release, I'm comfortable that we're at a point%0awhere these features can be added as 2.0.x releases with minimal%0aimpact to existing 2.0 sites. And if not, then we'll start on 2.1. :-)%0a%0a'''Upgrading to 2.0.0:''' Many sites have been keeping relatively%0aup-to-date with the latest 2.0 beta releases; for most of these%0asites upgrading to 2.0.0 is a minor upgrade (but see the notes below).%0aFor sites running beta versions of PmWiki older than 2.0.beta44,%0athe upgrade may require a bit of extra work -- check the ReleaseNotes%0afor more details. For sites running 1.x or 0.6 versions of PmWiki,%0asee http://www.pmwiki.org/wiki/PmWiki/UpgradingFromPmWiki1 for%0atips on successfully migrating the site to PmWiki 2.0.0.%0a%0aPmWiki 2.0.0 does have some changes over the previous (beta55)%0arelease:%0a%0a* Lots of changes and improvements to the documentation. Some documentation pages still need work, but the documentation is now sufficiently far along that I'm comfortable with making the release.%0a%0a* The release comes with a new default skin, matching the one currently available at http://www.pmwiki.org. For those sites that wish to retain the old skin, it is available from http://www.pmwiki.org/wiki/Cookbook/PmWikiV1Skin .%0a%0a* The storage format for pages in wiki.d/ has changed somewhat. PmWiki 2.0.0 can seamlessly read and interact with pages stored in previous formats, but any external scripts that may attempt to read wiki.d/ files directly will need to be adjusted to understand the new format. In particular, the $Newline variable has been deprecated in this release and is no longer used. (Sites that need file-level compatibility with previous versions can set a value for $Newline and PmWiki 2.0 will use that, however.)%0a%0a* Deleted pages now have a ",del-1234567890" suffix instead of just the timestamp.%0a%0a* The Site.SideBar is now unprotected by default. Other pages in the Site group continue to be protected against edits and require the admin password to unlock.%0a%0a* Several relatively small improvements and bug fixes -- see the ChangeLog for details.%0a%0a'''What's next:''' Next I plan to work on getting internationalizations updated to 2.0.0 -- many i18n items "broke" in beta44 and need to be cleaned up. In conjunction with this will be page improvements and cleanups on pmwiki.org, as well as addressing outstanding PITS entries. After that will come more feature enhancements, including comments pages, section edits, and improved indexing/search capabilities.%0a%0a----%0a%0a'''Thank you:''' My sincere and humble thanks to everyone who has contributed so much of their time, ideas, opinions, writing, and code to PmWiki. I notice that the PmWiki:Contributors page is way out of date, so if you've helped at all with PmWiki core development, don't be shy or modest -- feel free to add yourself to the list and be associated with an outstanding group.%0a%0aAnd, as always, comments, suggestions, questions, and bug reports can be reported to the mailing list or the PmWiki Issue Tracking System.%0a%0aThanks again,%0a%0aPm%0a%0a----%0a%0a!!!Version 2.0.beta55 (25-Aug-2005)%0aI was really hoping that the next release would be 2.0.0, but it %0adidn't work out that way. Really all that needs to be done now is %0ato finish cleaning up the documentation.%0a%0aThis release has a number of important changes and bugfixes. First,%0athe 'value=' wikistyle is working again, having been broken in an%0aearlier release. WikiStyles now also accept dots and parens in values,%0aso that things like "1.5em" and "rgb(255,255,255)" work. There's a%0anew "[@%25cframe%25@]" wikistyle, which centers content in a 200-pixel frame%0a(this can be adjusted with a "width=" parameter in the wikistyle).%0a%0aThe [@(:include:)@] directive now allows a list of pages to be searched%0afor inclusion; the first existing page is selected. Thus the markup%0a%0a [@(:include Page1 Page2 Page3:)@]%0a%0aincludes the contents of the first available of Page1, Page2, or Page3.%0a%0aThe [=[@...@]=] markup is now the "preformatted text" markup. It can be%0aused instead of the space [@[=...=]@] markup to generate blocks of%0apreformatted and escaped text. It's also fairly smart about handling%0aextra newlines inside the [=[@...@]=], so that there isn't a lot of%0aunwanted vertical space displayed in the output.%0a%0aAnd speaking of unwanted vertical space, PmWiki's handling of "blank lines"%0ain the markup text has been changed somewhat. In previous versions%0aof PmWiki, some directives %0a(e.g., [@(:comment:), (:keyword:), (:noleft:), (:if:)@]) often %0aresulted in blank lines in the markup text, which then%0agenerated vertical space on the output. In this release, only those%0alines that are blank in the original source markup (before processing)%0aend up generating vertical space in the output. This ends up being%0amuch more natural for authors and allows cleaner markup sequences.%0a%0aThis change may have some ramifications for selected recipe authors.%0aIf a custom markup rule produces other wiki markup to be processed by%0aPmWiki, and the output wiki markup contains blank lines that is intended%0ato generate vertical space in the page output, then the custom markup rule%0aneeds to either generate '%3c:vspace>' tags for the blank lines or call%0athe PVS() function to convert blank lines into vertical space tags.%0a(For more details or assistance, query the mailing list.)%0a%0aSome may have noticed that pmwiki.org now has a new skin; some version of%0athis skin is expected to become the standard skin in the next release. %0aThe current 2.0.beta skin will be made available for download in the %0aCookbook for sites that want to continue using it.%0a%0a!!!Version 2.0.beta54 (1-Aug-2005)\\%0aVersion 2.0.beta53 (30-Jul-2005)%0a%0aThis release restores ?action=search, to be able to perform searches%0ain the context of a group or current page. It also modifies the%0a[@(:searchbox:)@] directive to allow a "group=" option to limit%0asearches to certain groups.%0a%0a!!!Version 2.0.beta52 (29-Jul-2005)%0a%0aThis release provides a number of minor bugfixes and introduces improvements%0ato image handling. Most of the improvements for images are described%0aon the [[PmWiki.Images]] page. Other changes are in the [[ChangeLog]].%0a%0a!!!Version 2.0.beta51 (22-Jul-2005)%0a%0aThis release corrects a problem introduced by the "Save and Edit"%0acapabilities introduced in 2.0.beta44 -- posts made with "Save and Edit"%0acould bypass blocklists, urlapprovals, and simultaneous edits.%0a%0aFor administrators and recipe writers who have been working with%0aposting capabilities, posting is now controlled by an $EnablePost%0avariable. Setting $EnablePost to zero suppresses the actual post --%0apreviously this was generally performed with [@unset($_POST['post'])@].%0aIf appropriate, a message for why the post was suppressed can%0ausually be placed in the $MessagesFmt array.%0a%0a!!!Version 2.0.beta50 (20-Jul-2005)%0a%0aThis release makes two major improvements to the authorization%0asemantics in PmWiki:%0a%0a1. The $HandleAuth array can be used to set the authorization%0alevel required for executing a corresponding action. For example,%0asetting $HandleAuth['diff'] to 'edit' means that edit authorizations%0aare required to view the page history ([@?action=diff@]). Similarly,%0asetting $HandleAuth['source'] to 'admin' means that only the%0aadmin would be able to use [@?action=source@].%0a%0a2. Passwords can now "cascade" -- that is, if a page sets a 'read'%0apassword but not an 'edit' password, then the read password%0ais also used as the edit password. Similarly, if a page sets%0aan 'edit' password but not an 'attr' password, then the edit%0apassword is also used as the attr password.%0a%0aThis prevents situations where authors set an edit password%0aon a page but don't set a corresponding attr password.%0a%0aThis does not change PmWiki's other passwording characteristics --%0ai.e., page passwords still override group passwords, and group%0apasswords still override site passwords. Password cascading%0ais only used where there's no page, group, or site password set %0afor a given authorization level.%0a%0a!!!Version 2.0.beta49 (19-Jul-2005)%0a%0aThis release adds a Content-Disposition: header for sites that have%0adirect downloads disabled (automatically fills in a browser's filename%0afor such downloads). It also fixes some issues with \\ markup at the%0aends of lines.%0a%0a!!!Version 2.0.beta48 (13-Jul-2005)\\%0aVersion 2.0.beta47 (12-Jul-2005)\\%0aVersion 2.0.beta46 (11-Jul-2005)\\%0aVersion 2.0.beta45 (10-Jul-2005)\\%0aVersion 2.0.beta44 (10-Jul-2005)%0a%0aThis release has a number of major changes, and is hopefully the%0alast such "major" release before 2.0.0. %0a%0aIncluded with this release is a special ''transition.php'' script%0athat reconfigures PmWiki as needed to cause it to work as it did%0ain previous releases. In the release notes below any changes%0athat are handled by the transition script are marked by [ ].%0aThis transition script is automatically loaded by default so the%0asite admin doesn't need to do anything to use it.%0a%0aEventually the transition script will also provide diagnostic%0aoptions to inform site admins of places where they may be relying%0aon outdated or deprecated features, and how they can change their%0asettings to be up-to-date.%0a%0aPmWiki now sets CSS stylings so that all images within a page are%0adisplayed without a border (HTML's default is a 1-pixel border).%0aTo restore the behavior of previous versions, add the following to%0a''local/config.php'':%0a%0a $HTMLStylesFmt['img'] = ' img { border:1px solid; } ';%0a $ImgTagFmt="%3cimg src='\$LinkUrl' style='border:0px;' alt='\$LinkAlt' />";%0a%0aWith this release we are officially initiating use of the "Site"%0agroup discussed on the pmwiki-users mailing list. The Site group %0ais intended to hold a variety of utility and configuration pages %0aused by PmWiki, and many of PmWiki's pages have moved from the %0a"Main" group into this new location. More on this in a bit.%0a%0aThe major internal change is that this release provides support%0afor input forms. Notably, the "Edit Page" form layout can now%0abe specified using wiki markup in the Site.EditForm page. ( [ ] However,%0aPmWiki still honors the $PageEditFmt variable for those sites or%0askins that may have customized edit forms.)%0a%0aThe edit form now includes a "change summary" line where authors%0acan summarize the edits. The edit form can also contain %0aa "Save and edit" button to save changes but continue editing, and%0aa "Cancel" button for abandoning changes.%0a%0aThe $EditMessageFmt variable for displaying messages to authors%0ais now the $MessagesFmt array, which can be displayed using the%0a[=(:messages:)=] markup. [ ] The transition script takes care%0aof moving messages between $EditMessageFmt and $MessagesFmt as%0aneed to preserve correct operation.%0a%0aA number of traditional locations for pages have now been moved%0ainto the Site group, many of which are handled by the transition%0ascript:%0a%0a* The new location for the `AllRecentChanges page is Site.AllRecentChanges. [ ] However, if `Main.AllRecentChanges exists then it will continue to be updated also. Administrators may wish to move `Main.AllRecentChanges to Site.AllRecentChanges and/or remove `Main.AllRecentChanges entirely.%0a%0a* The search results page is now [[Site.Search]] instead of `Main.SearchWiki. `Main.SearchWiki will be removed entirely in a future release. [ ] The transition script takes care of mapping some instances of `Main.SearchWiki in links to Site.Search.%0a%0a* Approved urls are now stored in `Site.ApprovedUrls . [ ] However, if `Main.ApprovedUrls exists it is used and updated as appropriate.%0a%0a* `Main.SideBar is now `Site.SideBar. Unfortunately, it's very difficult to manage this particular change among all possible skin combinations, so it's up to the admin to correctly move existing sidebar pages into the appropriate group, or to update the skin template accordingly.%0a%0a* `PmWiki.EditQuickReference and `PmWiki.UploadQuickReference are now stored in the Site group.%0a%0a* `PmWiki.WikiHelp is being deprecated and will be removed from a future release.%0a%0aThe $PagePreviewFmt variable no longer exists in standard PmWiki (it's now handled by Site.EditForm). [ ] However, to preserve backwards compatibility it is loaded by the transition script in certain situations.%0a%0aThe $PageName substitution (deprecated in 2.0.devel14) is now gone.%0aUse $FullName instead.%0a%0aThe GUI buttons can now have accesskeys associated with them.%0a%0aGUI buttons are now displayed via a [@(:e_guibuttons:)@] directive in Site.EditForm, instead of being attached to $EditMessagesFmt.%0a%0aThis release now provides the ability for user and browser-specific%0apreferences and customizations, including accesskeys and form element%0asizes. More details about this will be forthcoming in documentation.%0a%0aThe release adds standard [@(:noleft:)@] and [@(:noright:)@] directives for suppressing the display of the left and right sidebars (depending on skin template).%0a%0a%0a!!!Version 2.0.beta43 (8-Jul-2005)%0a%0aThis release adds the long awaited [@(:div:)@] markup. The format of%0athe markup is%0a [=%0a (:div:)%0a ...%0a (:divend:)%0a =]%0aAttributes (e.g., [@id='name'@] and [@class='class'@] can be supplied %0ato the [@(:div:)@] directive. [@(:div:)@] lives in the same markup%0alayer as advanced tables [@(:table:)@], so divs and tables do not%0anest, and any div or advanced table directive ends any previous%0a[@(:div:)@]. (We may change this in a future release; for now we'll go%0awith the non-nesting version.)%0a%0aThe release also adds a div shortcut, any line beginning with >>%3c%3c%0amarks a new div section. In addition, wikistyle specifications%0acan go between the >> and %3c%3c, thus [@>>bgcolor=#ffffdd%3c%3c@] will create%0aa division with a light yellow background. Similarly, one can%0ado things like [@>>id=foo%3c%3c@], [@>>class=bar%3c%3c@], and even make%0ause of author-defined wikistyles such as >>center%3c%3c or >>Don%3c%3c.%0a%0aLastly, the wikistyle code now supports [@%25id=name%25@], which%0aallows an HTML [@id='name'@] attribute to be added to the%0aaffected text.%0a%0a!!!Version 2.0.beta42 (7-Jul-2005)%0a%0aThis minor release adds the [@(:if attachments:)@] conditional markup, to include/exclude markup based on the (non)existence of attachments to the current page.%0a%0a!!!Version 2.0.beta41 (7-Jul-2005)%0a%0aThis is a minor release with some small bugfixes to uploads, adding the ability to set the item number for ordered lists with [@%25item value=nn%25@], and enabling nested Keep()s for module writers.%0a%0a!!!Version 2.0.beta40 (22-Jun-2005)%0a%0aThis very minor release simply updates the authuser.php script to %0asupport Apache `MD5 encryption in .htpasswd files.%0a%0a!!!Version 2.0.beta39 (20-Jun-2005)%0a%0aThis release primarily fixes some bugs with wikistyles and their interactions with block structures such as tables and headings. In addition, the release fixes some nagging errors with opening directories in PITS and other recipes.%0a%0aThis release also adds definition lists to the available syntaxes for building WikiTrails.%0a%0aFinally, this release adds ''scripts/authuser.php'', which is a preliminary script for user-authentication based on .htpasswd (and similarly formatted) files.%0a%0a!!!Version 2.0.beta38 (14-Jun-2005)%0a%0aThis version performs a minor bug fix to the `ListPages() function for those sites that are storing pages in per-group subdirectories.%0a%0a!!!Version 2.0.beta37 (26-May-2005)%0a%0aThis version performs some minor bug fixes and improvements:%0a* Changed the location in which $SearchIncl, $SearchExcl, and $SearchGroup are set %0a* Fixed bug in setting of $SearchExcl %0a* Added filesize check after new page is written to disk but before replacing existing page%0a* Added $LinkUrl and $LinkAlt to urlapprove.php %0a%0a!!!Version 2.0.beta36 (30-Apr-2005)%0a%0aThis release fixes a rather large bug with excluded terms in the %0apagelist code, and a very minor bug with generating cells if there%0aare spaces after the final '||' in a simple table.%0a%0a!!!Version 2.0.beta35 (24-Apr-2005)%0a%0aThis release fixes some bugs in the new pagelist code.%0a%0a!!!Version 2.0.beta34 (23-Apr-2005)%0a!!!Version 2.0.beta33 (22-Apr-2005)%0a%0aThis version introduce a major redesign of working and speed of scripts/pagelist.php, which defines [@(:pagelist:)@] and [@(:@][@searchresults:)@] markups. This version now have a parameter [@link=@] to display pages with links to target page (i.e. "backlinks"). There is also "order=" and "count=" parameters which can be used for sorting listed pages and limit display length.%0a%0aHowever, the changes also mean that it's possible that any%0alocal customizations or cookbook recipes that depended on the%0aprevious pagelist code will no longer work, so be careful%0awhen upgrading.%0a%0aThis release also optimizes the rendering of page links and%0afixes a performance bug in the `FmtPageName() function. These%0achanges have been observed to improve page rendering times by%0aup to 40%25.%0a%0aWhat remains before the 2.0 official release: redesign of the%0aedit page form, addition of a "comments" feature, and fixing%0aPmWiki documentation. %0a%0aLastly, the trailing ?> sequences have been removed from all%0ascripts to simplify installations on VMS and other environments%0athat have trouble with newlines after the closing ?>.%0a%0a%0a!!!Version 2.0.beta32 (17-Apr-2005)%0a%0aVersion beta32 adds the $RCLinesMax variable, which limits the maximum%0anumber of lines that are saved in `RecentChanges files. The default%0ais set to zero, meaning "no limit".%0a%0a!!!Version 2.0.beta31 (15-Apr-2005)%0a%0aThis release adds the ability to store and serve attachments (uploads)%0afrom directories that is not directly accessible to the webserver. %0aThe "download" action ([@?action=download@]) tells PmWiki to retrieve%0aan attachment associated with the current page. This can be used for%0aprotecting attachments via a page's passwords, or for working around%0awebservers that cannot access files in the PmWiki-created ''uploads/''%0adirectories.%0a%0aSetting $EnableDirectDownload=0; tells PmWiki to generate links to %0a[@?action=download@] to retrieve attachments instead of accessing%0athe attachments directly through the webserver. Note that this%0asetting by itself may not be enough to protect uploads; one may need%0aalso need to to configure the webserver or ''uploads/'' directory%0ato block direct requests to the webserver for attachment files.%0a%0aThis release also adds $EnableFixedUrlRedirect. When PmWiki receives%0aa url with a "partial pagename" (such as the name of a WikiGroup),%0ait first determines the correct "full name" for the page. Normally%0aPmWiki then issues a "redirect" to the browser requesting the browser%0ato reload the page with its full, "official" url, but setting%0a$EnableFixedUrlRedirect to zero will suppress the reload so that the%0adetermined page is sent immediately (and keeps the same url used to%0aaccess the page).%0a%0a%0a!!!Version 2.0.beta30 (14-Apr-2005)%0a%0aThis release works around some problems with PHP sessions resulting in%0adeadlocked web processes. The changes to the authorization code in%0a2.0.beta29 greatly increased the likelihood of such deadlocks, so%0aall sites running 2.0.beta29 are encouraged to upgrade to this one.%0a%0aThis release also changes the wikiword-handling functions so that%0awikiwords are no longer spaced if $LinkWikiWords is disabled.%0a%0aFinally, this release adds $PageTextStartFmt and%0a$PageTextEndFmt to allow local customization of the container%0asurrounding %3c!--`PageText--> in skin templates.%0a%0a%0a!!!Version 2.0.beta29 (11-Apr-2005)%0aThis release incorporates some significant changes in the authorization%0aand page storage code, so production-level sites might want to wait for%0aany new bugs to found and fixed before upgrading. Or, go ahead and%0aupgrade but be prepared to revert back to beta28 or earlier if you%0astart to notice problems.%0a%0aHowever, I do need lots of testers for the new code in this release,%0aof which there's a fair bit. Thus, I'd greatly appreciate any%0ahelp people can provide with testing the new system and suggesting%0aimprovements. I'm particularly looking for suggestions about how%0athe interfaces can be made easier to understand.%0a%0aThe Page Attributes form (reached via ?action=attr and used to set%0apasswords) has been improved so that it's now possible to see which%0apasswords have been set, and if those passwords are coming from the%0agroup or site defaults. For an example, see%0ahttp://www.pmwiki.org/wiki/Test/AttrExample?action=attr . These%0aprompts are not yet internationalized -- I want to get the english%0ainterface finalized first and then we'll make the i18n strings for it.%0a%0aMultiple passwords (separated by spaces) can now be set on pages and groups,%0athus entering "one two" for an edit password will means that either "one" or%0a"two" will be accepted. Because of this, passwords cannot contain%0aspaces (I hope this won't be a major loss -- let me know if it will).%0a%0aThe password request field now appears within a normal skin layout%0a(i.e., with header, sidebar, footer); previously requests for%0apasswords were undecorated forms that appeared alone in the browser%0awindow.%0a%0aThere is an [=(:if auth ...:)=] conditional markup available for%0aprocessing depending on the current authorizations in effect. For%0aexample, one can create a bullet list with%0a [=%0a (:if auth read:)* [[View page -> {$Name}?action=browse]]%0a (:if auth edit:)* [[Edit page -> {$Name}?action=edit]]%0a (:if auth upload:)* [[Attachments -> {$Name}?action=upload]]%0a (:if auth attr:)* [[Page Attributes -> {$Name}?action=attr]]%0a (:if auth admin:)* You're logged in as admin%0a (:ifend:)%0a =]%0aand only those items corresponding to the user's current authorizations%0awill appear. This should be very useful in creating action buttons.%0a%0aAssuming there's already some mechanism in place for identifying%0aand authenticating someone, pages can specify a password field of%0a"id:xyz", which means to allow only user "xyz" the specified%0aaccess. For example, specifying an edit password of "id:alice"%0ameans that only user "alice" (and the admin) is allowed to edit the%0apage. Multiple ids can be specified as either "id:alice,bob,carol"%0aor "id:alice id:bob id:carol". The special value "id:*" is used%0ato mean any authenticated user, and users can be excluded via the%0aminus sign, as in "id:-eve,*".%0a%0aUser-based authentication can completely coexist and mix freely with%0apassword-based authentication, thus an edit password of%0a"id:alice glorp" will allow Alice and anyone who knows the%0apassword "glorp" to edit the page.%0a%0a2.0.beta29 supports only REMOTE_USER authentication; future releases%0awill add other authentication mechanism.%0a%0a!!!Version 2.0.beta28 (27-Mar-2005)%0a%0aThis release makes some substantial improvements to the attachments/uploads feature in PmWiki. The specific enhancements include:%0a%0a* 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. %0a%0a* Attachments automatically have the file extension (if any) converted to lowercase.%0a%0a* 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:)@].%0a%0a%0a!!!Version 2.0.beta27 (26-Mar-2005)%0a%0aThis release makes a number of minor changes and bugfixes. The more significant changes are listed below.%0a%0a* The localmap.txt and farmmap.txt files can now contain $-variable substitutions (same as any variables available through `FmtPageName).%0a%0a* Most built-in directives are now case insensitive.%0a%0a* The (:markup:) directive now has a (:markup:) ... (:markupend:) version. The previous [=(:markup:)=] [@[=...=]@] syntax is still supported, but may change in future releases.%0a%0a* A bug was fixed with preformatted text eating the leading whitespace character.%0a%0a* Added the missing [@{$FullName}@] markup.%0a%0a* Fixed a bug in the handling of $MetaRobots.%0a%0a!!!Version 2.0.beta26 (5-Mar-2005)%0a%0aThis 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.%0a%0a!!!Version 2.0.beta25 (2-Mar-2005)%0a!!!Version 2.0.beta24 (1-Mar-2005)%0a%0aThis 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.%0a%0aThis 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.%0a%0aList and heading markups have been changed to consume any single space character that follows the list or heading marker.%0a%0aA $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.%0a%0a%0a!!!Version 2.0.beta23 (24-Feb-2005)%0a%0aThis release adds a couple of improvements.%0a%0aFirst, 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.%0a%0aThis 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.%0a%0a!!!Version 2.0.beta22 (23-Feb-2005)%0a%0aThis release makes some feature enhancements and some bugfixes.%0a%0aThe 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.%0a%0aThe password prompt form has been customized so that the cursor is%0aautomatically placed in the form when the page is loaded.%0a%0aThe ?action=source action has been fixed for pages with characters%0aoutside of ASCII.%0a%0aThe graphical button bar can now be used for buttons with arbitrary%0aHTML elements (e.g., "save" and "preview" buttons).%0a%0aOther changes are noted in the ChangeLog.%0a%0a!!!Version 2.0.beta21 (13-Feb-2005)%0a%0aThis 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.%0a%0aMany 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%0a%0a umask(0);%0a%0ato 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!)%0a%0aThis release also changes the %3ctitle> tag generated by ?action=rss%0ato properly honor the [@(:title:)@] setting on various pages.%0a%0aFinally, the release fixes some minor bugs in the HTML generation for [[tables]], corrects some bugs with settings for $AuthorPage and $AuthorLink, and makes some cookbook-related additions to the v1 conversion script.%0a%0aFor more details, see the [[ChangeLog]].%0a%0a!!!Version 2.0.beta20 (30-Jan-2005)%0a%0aThis version has a number of relatively minor changes.%0a%0aFirst, 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.%0a%0aThe 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@].%0a%0aSites that want to keep PmWiki 2's prior behavior can do so with the following:%0a [=%0a $PageNameChars = '-[:alnum:]';%0a $MakePageNamePatterns = array(%0a "/[^$PageNameChars] /" => ' ',%0a "/(\\b\\w)/e" => "strtoupper('$1')",%0a "/ /" => '');%0a =]%0a%0aThe localmap.txt InterMap file can now contain comments (denoted by leading '#' in the file).%0a%0aHeadings (!! markup) can now have block wikistyles.%0a%0aMore information is available in the PmWiki.ChangeLog.%0a%0a%0a!!!Version 2.0.beta19 (17-Jan-2005)%0a%0aPmWiki 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.%0a%0a!!!Version 2.0.beta18 (17-Jan-2005)%0a%0aThis release makes improvements to the gui buttons, fixes some bugs, and minor other improvements and changes.%0a%0aAlternate text is now valid inside of WikiTrails; i.e., one can use [@%3c%3c|[[TrailPage | alternate text]]|>>@] to change the text of the link to the trailpage.%0a%0aThe GUI button module has a number of changes. %0a* 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. %0a* The "Heading 3" button has now been changed into separate "Heading" and optional "Subheading" buttons.%0a* The "Attach:" (paperclip) button appears in the bar only if uploads are enabled for that page.%0a* 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).%0a%0aThis release also eliminates the %3cp>...%3c/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.%0a%0a$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'] = ''; @].%0a%0aFinally, this release fixes a call to setlocale() which was supposed to only return the current locale but instead was causing the locale to change.%0a%0a%0a!!!Version 2.0.beta17 (12-Jan-2005)%0a%0aThis 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.%0a%0a!!!Version 2.0.beta16 (11-Jan-2005)%0a!!!Version 2.0.beta15 (10-Jan-2005)%0a%0aThe 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.%0a%0a $EnableGUIButtons = 1;%0a%0aIf your site customizes the $PageEditFmt variable, then note that the buttons are placed at the end of the $EditMessageFmt and that the %3ctextarea> needs to have [@id='edit'@] in order for the buttons to work.%0a%0aThe 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.%0a%0aThis 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.%0a%0aFinally, a number of WikiStyles bugs have been fixed.%0a%0a%0a!!!Version 2.0.beta14 (28-Dec-2004)%0a%0aThis 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. :-) %0a%0a* PmWiki's %3cimg ...> tags now use style='border:0px;' instead of border='0'.%0a%0a* `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.%0a%0a* $PageEditFmt now includes id='text' to make for easier styling/referencing.%0a%0a* `MarkupToHTML()'s "posteval" code has been changed considerably.%0a%0a* `PageExists() now caches results of checking for page existence.%0a%0a* Page urls are now automatically url-encoded as needed.%0a%0a* Many of PmWiki's internal regex patterns have been optimized to (hopefully) improve matching speed.%0a%0a* Comparisons to substr() have been replaced with more efficient comparison functions.%0a%0a%0a!!!Version 2.0.beta13 (22-Dec-2004)%0a%0aThis 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 %25-in-urls (which is what 2.0.beta7 was supposed to fix).%0a%0aIn general, all sites using the 2.0.betaXX series are recommended to upgrade to this latest release.%0a%0a%0a!!!Version 2.0.beta12 (21-Dec-2004)%0a%0aThis release adds a number of %3cdiv> tags and identifiers around the%0avarious forms that PmWiki produces (e.g., uploads, search results,%0aattribute pages, etc.). This makes such forms easier to style in CSS.%0a%0aIn addition, this release adds some functionality to the urlapprove.php%0ascript to limit the number of unapproved urls that can be saved in%0aa page (helps to combat wikispam).%0a%0aFinally the release adds the [@(:description:)@] markup for generating %3cmeta name='description' ... /> tags in the output. [@(:description:)@] may also get used for other features later on (e.g., excerpts in search results, etc.).%0a%0a!!!Version 2.0.beta11 (19-Dec-2004)%0a%0aThis release primarily cleans up a number of items in the handling of uploads:%0a# A new $LinkUpload variable has been defined for $...Fmt strings -- it contains the URL of the upload page for the current attachment%0a# [@(:attachlist:)@] automatically adds "replace-attachment" links (denoted by triangles) to the items in the list%0a# After performing an upload, the "upload name" field is automatically cleared%0a# Fixed error message when upload exceeds maximum allowed by PHP%0a%0aThis 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).%0a%0a!!!Version 2.0.beta10 (14-Dec-2004)%0a%0aThis release makes some substantial improvements in the installation%0aprocedure. First, the installation steps have been simplified, and PmWiki%0aprovides accurate instructions when it encounters a PHP "safe_mode"%0aenvironment. %0a%0aThe release also provides better handling of the '.flock' file -- if%0aPmWiki discovers it cannot open an existing .flock file for writing,%0ait removes the file and tries again rather than complaining about it.%0aThis makes the system more robust when page directories are going%0athrough backup restore.%0a%0a%0a!!!Version 2.0.beta9 (14-Dec-2004)%0a%0aThis 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.%0a%0a!!!Version 2.0.beta8 (13-Dec-2004)%0a%0aThis release makes a number of reasonably significant changes. First and%0aforemost, it changes the [@?pagename=@] uri syntax to be [@?n=@], and%0ainstallation now defaults to $EnablePathInfo = 0; to make better%0acompatibility.%0a%0aSites which wish to continue using the [@.../Main/HomePage@] form of uri%0ainstead of [@?n=Main.HomePage@] should set $EnablePathInfo = 1 in%0aconfig.php. %0a%0aThis release also fixes a probable bug in the handling of author%0anames which was causing spaces to be incorrectly removed.%0a%0a2.0.beta8 includes features for advanced CSS styling of [[tables]]%0avia the $TableRowAttrFmt and $TableCellAttrFmt variables, more description %0awill be forthcoming in a Cookbook recipe. %0a%0aAlso, this release includes vastly improved support for UTF-8 sites,%0aincluding the ability to have UTF-8 characters in pagenames and%0a[@[[utf-8 links]]@]. We're still working out the details to be%0aable to support UTF-8 wikiwords -- PHP's functions don't provide%0agood support for this. See scripts/xlpage-utf-8.php for more%0ainformation on UTF-8.%0a%0aFinally, the Q: and A: markups are back, and a few other minor%0abug fixes and documentation improvements have been included.%0a%0a%0a!!!Version 2.0.beta7 (8-Dec-2004)%0a%0aThis release has a number of improvements and changes to it. First,%0athis release provides a ''scripts/xlpage-utf-8.php'' file, which adapts%0aPmWiki to be able to work somewhat with utf-8 characters in pagenames.%0aSince PHP's preg_* functions seem to be unable to detect UTF-8 alphanumeric%0acharacters, the trade-off at the moment is that WikiWord links are limited%0ato the ASCII character set. We're working on ways to get around this%0arestriction, however.%0a%0aThe xlpage-utf-8.php script can be automatically loaded by any `XLPage %0atranslation that specifies 'xlpage-i18n' => 'utf-8'.%0a%0aThis release also:%0a%0a* fixes up the .htaccess files that are placed in local/ and wiki.d/%0a* changes the default textarea size for the pmwiki skin, %0a* restores the link/citation markup ([@[[target |#]]@])%0a* fixes the default value of $DefaultPageTextFmt (note this may change again)%0a* automatically converts instances of $Newline in posted text%0a%0a%0a!!!Version 2.0.beta6 (5-Dec-2004)%0a%0aThis 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.%0a%0aThe ''sample-config.php'' file has been updated with more comments and suggestions for customizations.%0a%0aFinally, this release increases the default value of $MaxIncludes to 50 (and provides better documentation of the $MaxIncludes variable).%0a%0a!!!Version 2.0.beta5 (1-Dec-2004)%0a!!!Version 2.0.beta4 (1-Dec-2004)%0a%0aThese releases fix a number of bugs introduced by the changes in 2.0.beta3.%0aUsers of 2.0.beta3 are encouraged to upgrade directly to this release.%0a%0a!!!Version 2.0.beta3 (30-Nov-2004)%0a%0aThis 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.%0a%0aInternally, 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).%0a%0a!!!Version 2.0.beta2%0a%0aThis release fixes the bug that caused $PageTemplateFmt to no longer%0awork in pmwiki-2.0.beta1.%0a%0a!!!Version 2.0.beta1%0a%0aThis release marks PmWiki 2.0 as entering "beta" status, as it finally%0abegins moving towards official release. The major change for this release%0ais in the skins code -- previous versions of PmWiki used $PageTemplateFmt%0ato specify the location of the template file to be used; newer versions%0anow use the $Skin variable to specify the location of the skins directory%0a(in pub/skins/) that contains the skin template file, php configuration%0ascript, and other files.%0a%0aIn 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.%0a%0a!!!Version 2.0.devel releases%0a%0aThese are the release notes for the development releases of PmWiki 2.0.%0a%0aFirst, this is definitely still in the development stages, so many%0athings are likely to change between now and the official releases.%0a%0aSecond, at present there's not a good way to upgrade from PmWiki 1.0%0ato PmWiki 2.0, although upgrade support is expected to arrive in future%0a(development) releases. So, you can use this version just to see the%0anew developments and gain some experience, but migrating from 1.0%0ato this version is still likely to be a bit of a chore.%0a%0aBugs and other requests can be reported to the PmWiki Issue Tracking %0aSystem at http://www.pmwiki.org/wiki/PITS/PITS. Any help%0ain testing, development, and/or documentation is greatly appreciated..%0a%0a%0a%0a%0a%0a%0a%0a%0a%0a%0a%0a%0a +time=1245617309 title=Release Notes Index: wikilib.d/PmWiki.CustomMarkup =================================================================== --- wikilib.d/PmWiki.CustomMarkup (.../pmwiki-2.2.1) (revision 2344) +++ wikilib.d/PmWiki.CustomMarkup (.../pmwiki-2.2.2) (revision 2344) @@ -2,10 +2,10 @@ agent=Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.19) Gecko/20081216 Ubuntu/8.04 (hardy) Firefox/2.0.0.19 author=Petko charset=ISO-8859-1 -csum=fix link +csum=fix link; examples and recipes should probably be in the cookbook host=81.65.14.164 name=PmWiki.CustomMarkup -rev=118 +rev=121 targets=PmWiki.CustomMarkup,PmWiki.LocalCustomizations,PmWiki.Skins -text=(:Summary: Using the Markup () function:)%0a(:Audience: administrators (intermediate) :)%0a!! Introduction%0a%0aPmWiki's markup translation engine is handled by a set of rules; each rule searches for a specific pattern in the markup text and replaces it with some replacement text. Internally, this is accomplished by using PHP's "[[(http://www.php.net/)preg_replace]]" function.%0a%0aRules are added to the translation engine via PmWiki's Markup() function, which looks like%0a%0a->[@Markup($name, $when, $pattern, $replace);@]%0a%0awhere [@$name@] is a unique name (a string) given to the rule, [@$when@] says when the rule should be applied relative to other rules, [@$pattern@] is the pattern to be searched for in the markup text, and [@$replace@] is what the pattern should be replaced with.%0a%0aFor example, here's the code that creates the rule for [@''emphasized text''@] (in ''scripts/stdmarkup.php''):%0a%0a->[@Markup("em", "inline", "/''(.*?)''/", "%3cem>$1%3c/em>");@]%0a%0aBasically this statement says to create a rule called "em" to be performed with the other "inline" markups, and the rule replaces any text inside two pairs of single quotes with the same text ($1) surrounded by [@%3cem>@] and [@%3c/em>@].%0a%0aThe first two parameters to Markup() are used to specify the sequence in which rules should be applied. The first parameter provides a name for a rule -- "[@em@]" in the example above. We could've chosen other names such as "[@''@]", or even "[@twosinglequotes@]". In general PmWiki uses the markup itself to name the rule (i.e., PmWiki uses "[@''@]" instead of "[@em@]"), but to keep this example easier to read later on we'll use a mnemonic name for now.%0a%0aThe second parameter says that this rule is to be done along with the other "inline" markups. PmWiki divides the translation process into a number of phases:%0a%0a[@%0a_begin start of translation%0afulltext translations to be performed on the full text %0asplit conversion of the full markup text into lines to be processed%0adirectives directive processing%0ainline inline markups%0alinks conversion of [[links]], url-links, and WikiWords %0ablock block markups%0astyle style handling %0a_end end of translation%0a@]%0a%0aThis argument is normally specified as a left-angle bracket ("before") or a right-angle bracket ("after") followed by the name of another rule. %0a%0aThus, specifying "inline" for the second parameter says that this rule should be applied when the other "inline" rules are being performed. If we want a rule to be performed with the directives -- i.e., before inline rules are processed, we would specify "directives" or "%3cinline" for the second parameter.%0a%0a->'- A significant rule in terms of ordering is "{$var}" which substitutes variables -- if you say "%3c{$var}" then your markup will be processed before variables are substituted whereas if you say ">{$var}" then your markup will be processed after variables are substituted. -'%0a%0aThe third parameter is a Perl-compatible regular expression. Basically, it is a slash, a [[regular expression -> http://www.php.net/manual/en/reference.pcre.pattern.syntax.php]], another slash, and a set of optional [[modifiers -> http://www.php.net/manual/en/reference.pcre.pattern.modifiers.php]].%0a%0aThe example uses the pattern string [@"/''(.*?)''/"@], which uses [@''(.*?)''@] as the regular expression and no options. (The regular expression says "find two single quotes in succession, then as few arbitrary characters as are needed to make the match find something, then two additional single quotes in succession"; the parentheses "capture" a part of the wikitext for later use.)%0a%0aThe fourth parameter is the replacement text that should be inserted instead of the marked-up wikitext. You can use [@$1@], [@$2@], etc. to insert the text from the first, second etc. parenthesised part of the regular expression.%0a%0aIn the example, we have [@"%3cem>$1%3c/em>"@], which is an [@%3cem>@], the text matched by the first parentheses (i.e. by the [@.*?@] section of the pattern), and [@%3c/em>@].%0a%0aHere's a rule for [@@@monospaced@@@] text:%0a%0a->[@Markup("@@", "inline", "/@@(.*?)@@/", "%3ccode>$1%3c/code>");@]%0a%0aand for a [@[:comment ...:]@] directive that is simply removed from the output:%0a%0a->[@Markup("comment", "directives", "/\\[:comment .*?:\\]/", '');@]%0a%0aOkay, now how about the rule for [@'''strong emphasis'''@]? We have to be a bit careful here, because although this translation should be performed along with other inline markup, we also have to make sure that the rule for [@'''@] is handled ''before'' the rule for [@''@], because [@'''@] also contains [@''@]. The second parameter to Markup() can be used to specify the new rule's relationship to any other rule:%0a%0a->[@Markup("strong", "%3cem", "/'''(.*?)'''/", "%3cstrong>$1%3c/strong>");@]%0a%0aThis creates a rule called "strong", and the second parameter "%3cem" says to be sure that this rule is processed before the "em" rule we defined above. If we wanted to do something after the "em" rule, we would use ">em" instead. Thus, it's possible to add rules at any point in PmWiki's markup translation process in an extensible manner. (In fact, the "inline", "block", "directives", etc., phases above are just placeholder rules used to provide an overall sequence for other rules. Thus one can use "%3cinline" to specify rules that should be handled before any other inline rules.) %0a%0aIf you want to disable available markup just call e.g.:%0a%0a->[@DisableMarkup("strong")@]%0a%0aPmWiki's default markup rules are defined in the ''scripts/stdmarkup.php'' file. To see the entire translation table as the program is running, the scripts/diag.php module adds "[@?action=ruleset@]", which displays the set of defined markup rules in the sequence in which they will be processed. You can see it at [[CustomMarkup?action=ruleset | CustomMarkup?action=ruleset]]. You must first enable the action by setting $EnableDiag = 1 in your configuration file.%0a%0a!! Other common examples%0a%0a!!! Define a custom markup to produce a specific HTML or Javascript sequence%0a%0aSuppose an admin wants to have a simple "[@(:example:)@]" markup that will always produce a fixed HTML string in the output, such as for a webring, Google AdSense display, or Javascript. The Markup() call to do this would be:%0a%0a->[@%0aMarkup('example', 'directives',%0a '/\\(:example:\\)/',%0a Keep("%3cdiv class='example'>%3cp>Here is a %0a %3ca target='_blank' href='http://www.example.com'>link%3c/a> to%0a %3cem>example.com%3c/em>%3c/p>%3c/div>") );%0a@]%0a%0a* The first argument is a unique name for the markup ("example").%0a* The second argument says to perform this markup along with other directives.%0a* The third argument is the pattern to look for "(:example:)".%0a* The fourth argument is the HTML that "(:example:)" is to be replaced with. We use the Keep() function here to prevent the output from being further processed by PmWiki's markup rule -- in the above example, we don't want the http://www.example.com url to be again converted to a link.%0a%0a[[#random]]%0a!!! Define a markup to call a custom function that returns content%0a%0aAn 'e' option on the [@$pattern@] parameter will cause the [@$replace@] parameter to be treated as a PHP expression to be evaluated instead of replacement text. Thus, a markup to produce a random number between 1 and 100 might look like:%0a%0a->[@%0aMarkup('random', 'directives',%0a '/\\(:random:\\)/e',%0a "rand(1, 100)");%0a@]%0a%0aThis calls the PHP built-in rand() function and substitutes the directive with the result. Any function can be called, including functions defined in a [[local customization(s)]] file.%0a%0aArguments can also be passed by using regular expression capturing parentheses, thus%0a%0a->[@%0aMarkup('randomargs', 'directives',%0a '/\\(:random (\\d+) (\\d+):\\)/e',%0a "rand('$1', '$2')");%0a@]%0a%0awill cause the markup [@(:random 50 100:)@] to generate a random number between 50 and 100.%0a%0a->%25note%25 Note: Be very careful with the /e modifier in regular expressions; malicious authors may be able to pass strings that cause arbitrary and undesirable PHP functions to be executed.%0a%0aFor a PmWiki function to help with parsing arbitrary sequences of arguments and key=value pairs, see Cookbook:ParseArgs.%0a%0a%0a>>faq%3c%3c [[#faq]]%0aQ: How can I embed JavaScript into a page's output?%0aA: There are several ways to do this. The [[Cookbook:JavaScript]] recipe describes a simple means for embedding static JavaScript into web pages using [[custom markup]]. For editing JavaScript directly in wiki pages (which can pose various security risks), see the [[(Cookbook:)JavaScript-Editable]] recipe. For JavaScript that is to appear in headers or footers of pages, the [[skin(s)]] template can be modified directly, or %3cscript> statements can be inserted using the $HTMLHeaderFmt array.%0a%0aQ: How would I create a markup (''[=(:nodiscussion:)=]'') that will set a page variable (''[={$HideDiscussion}=]'') which can be used by ''[=(:if enabled HideDiscussion:)=]'' in [=.PageActions=]?%0aA: Add the following section of code to your config.php%0a-> [@%0aSDV($HideDiscussion, 0); #define var name%0aMarkup('hideDiscussion', '%3c{$var}', '/\\(:nodiscussion:\\)/e', 'setHideDiscussion(true)'); %0afunction setHideDiscussion($val) { %0a global $HideDiscussion; %0a $HideDiscussion = $val;%0a} %0a@]%0a%0aThis will enable the @@[=(:if enabled HideDiscussion:)=]@@ markup to be used. If you want to print the current value of [={$HideDiscussion}=] (for testing purposes) on the page, you'll also need to add the line: \\%0a@@[=$FmtPV['$HideDiscussion'] = '$GLOBALS["HideDiscussion"]';=]@@%0a%0a%0aQ: PmWiki only supports tool tips for external links, can I use custom markup to add tool tips to internal links?%0aA: Yes, add the following custom markup to your config.php: \\%0a[= Markup('%25title%25', 'inline', '/%25title%25(.*?)"(.*?)"(.*?)%25%25/', '%3cspan title="$2">$1$3%3c/span>'); # Add tool tips to internal links, Example: %25title%25[[link"tool tip"]]%25%25 =]%0a%0aUse the markup with internal links such as: \\%0a[= %25title%25[[CookBook "cool" | Example]]%25%25 =]%0a%0aA: See also [[Cookbook:LinkTitles]].%0a%0aQ: It appears that (.*?) does not match newlines in these functions, making the above example inoperable if the text to be wrappen in %3cem> contains new lines.%0aA: If you include the "s" modifier on the regular expression then the dot (.) will match newlines. Thus your regular expression will be "/STUFF(.*?)/s". That s at the very end is what you are looking for. If you start getting into multi-line regexes you may be forced to look at the m option as well - let's anchors (^ and $) match not begin/end of strings but also begin/end of lines (i.e., right before/after a newline).%0a%0a%0aQ: How do I get started writing recipes and creating my own custom markup?%0aA: [[PmWiki:CustomMarkupAlt|(alternate) Introduction to custom markup for Beginners]]%0a -time=1238274675 +text=(:Summary: Using the Markup() function for custom wiki syntax:)%0a(:Audience: administrators (intermediate) :)%0a!! Introduction%0a%0aPmWiki's markup translation engine is handled by a set of rules; each rule searches for a specific pattern in the markup text and replaces it with some replacement text. Internally, this is accomplished by using PHP's "[[(http://www.php.net/)preg_replace]]" function.%0a%0aRules are added to the translation engine via PmWiki's Markup() function, which looks like%0a%0a->[@Markup($name, $when, $pattern, $replace);@]%0a%0awhere [@$name@] is a unique name (a string) given to the rule, [@$when@] says when the rule should be applied relative to other rules, [@$pattern@] is the pattern to be searched for in the markup text, and [@$replace@] is what the pattern should be replaced with.%0a%0aFor example, here's the code that creates the rule for [@''emphasized text''@] (in ''scripts/stdmarkup.php''):%0a%0a->[@Markup("em", "inline", "/''(.*?)''/", "%3cem>$1%3c/em>");@]%0a%0aBasically this statement says to create a rule called "em" to be performed with the other "inline" markups, and the rule replaces any text inside two pairs of single quotes with the same text ($1) surrounded by [@%3cem>@] and [@%3c/em>@].%0a%0aThe first two parameters to Markup() are used to specify the sequence in which rules should be applied. The first parameter provides a name for a rule -- "[@em@]" in the example above. We could've chosen other names such as "[@''@]", or even "[@twosinglequotes@]". In general PmWiki uses the markup itself to name the rule (i.e., PmWiki uses "[@''@]" instead of "[@em@]"), but to keep this example easier to read later on we'll use a mnemonic name for now.%0a%0aThe second parameter says that this rule is to be done along with the other "inline" markups. PmWiki divides the translation process into a number of phases:%0a%0a[@%0a_begin start of translation%0afulltext translations to be performed on the full text %0asplit conversion of the full markup text into lines to be processed%0adirectives directive processing%0ainline inline markups%0alinks conversion of [[links]], url-links, and WikiWords %0ablock block markups%0astyle style handling %0a_end end of translation%0a@]%0a%0aThis argument is normally specified as a left-angle bracket ("before") or a right-angle bracket ("after") followed by the name of another rule. %0a%0aThus, specifying "inline" for the second parameter says that this rule should be applied when the other "inline" rules are being performed. If we want a rule to be performed with the directives -- i.e., before inline rules are processed, we would specify "directives" or "%3cinline" for the second parameter.%0a%0a->'- A significant rule in terms of ordering is "{$var}" which substitutes variables -- if you say "%3c{$var}" then your markup will be processed before variables are substituted whereas if you say ">{$var}" then your markup will be processed after variables are substituted. -'%0a%0aThe third parameter is a Perl-compatible regular expression. Basically, it is a slash, a [[regular expression -> http://www.php.net/manual/en/reference.pcre.pattern.syntax.php]], another slash, and a set of optional [[modifiers -> http://www.php.net/manual/en/reference.pcre.pattern.modifiers.php]].%0a%0aThe example uses the pattern string [@"/''(.*?)''/"@], which uses [@''(.*?)''@] as the regular expression and no options. (The regular expression says "find two single quotes in succession, then as few arbitrary characters as are needed to make the match find something, then two additional single quotes in succession"; the parentheses "capture" a part of the wikitext for later use.)%0a%0aThe fourth parameter is the replacement text that should be inserted instead of the marked-up wikitext. You can use [@$1@], [@$2@], etc. to insert the text from the first, second etc. parenthesised part of the regular expression.%0a%0aIn the example, we have [@"%3cem>$1%3c/em>"@], which is an [@%3cem>@], the text matched by the first parentheses (i.e. by the [@.*?@] section of the pattern), and [@%3c/em>@].%0a%0aHere's a rule for [@@@monospaced@@@] text:%0a%0a->[@Markup("@@", "inline", "/@@(.*?)@@/", "%3ccode>$1%3c/code>");@]%0a%0aand for a [@[:comment ...:]@] directive that is simply removed from the output:%0a%0a->[@Markup("comment", "directives", "/\\[:comment .*?:\\]/", '');@]%0a%0aOkay, now how about the rule for [@'''strong emphasis'''@]? We have to be a bit careful here, because although this translation should be performed along with other inline markup, we also have to make sure that the rule for [@'''@] is handled ''before'' the rule for [@''@], because [@'''@] also contains [@''@]. The second parameter to Markup() can be used to specify the new rule's relationship to any other rule:%0a%0a->[@Markup("strong", "%3cem", "/'''(.*?)'''/", "%3cstrong>$1%3c/strong>");@]%0a%0aThis creates a rule called "strong", and the second parameter "%3cem" says to be sure that this rule is processed before the "em" rule we defined above. If we wanted to do something after the "em" rule, we would use ">em" instead. Thus, it's possible to add rules at any point in PmWiki's markup translation process in an extensible manner. (In fact, the "inline", "block", "directives", etc., phases above are just placeholder rules used to provide an overall sequence for other rules. Thus one can use "%3cinline" to specify rules that should be handled before any other inline rules.) %0a%0aIf you want to disable available markup just call e.g.:%0a%0a->[@DisableMarkup("strong")@]%0a%0aPmWiki's default markup rules are defined in the ''scripts/stdmarkup.php'' file. To see the entire translation table as the program is running, the scripts/diag.php module adds "[@?action=ruleset@]", which displays the set of defined markup rules in the sequence in which they will be processed. You can see it at [[CustomMarkup?action=ruleset | CustomMarkup?action=ruleset]]. You must first enable the action by setting $EnableDiag = 1 in your configuration file.%0a%0a!! Other common examples%0a%0a!!! Define a custom markup to produce a specific HTML or Javascript sequence%0a%0aSuppose an admin wants to have a simple "[@(:example:)@]" markup that will always produce a fixed HTML string in the output, such as for a webring, Google AdSense display, or Javascript. The Markup() call to do this would be:%0a%0a->[@%0aMarkup('example', 'directives',%0a '/\\(:example:\\)/',%0a Keep("%3cdiv class='example'>%3cp>Here is a %0a %3ca target='_blank' href='http://www.example.com'>link%3c/a> to%0a %3cem>example.com%3c/em>%3c/p>%3c/div>") );%0a@]%0a%0a* The first argument is a unique name for the markup ("example").%0a* The second argument says to perform this markup along with other directives.%0a* The third argument is the pattern to look for "(:example:)".%0a* The fourth argument is the HTML that "(:example:)" is to be replaced with. We use the Keep() function here to prevent the output from being further processed by PmWiki's markup rule -- in the above example, we don't want the http://www.example.com url to be again converted to a link.%0a%0a[[#random]]%0a!!! Define a markup to call a custom function that returns content%0a%0aAn 'e' option on the [@$pattern@] parameter will cause the [@$replace@] parameter to be treated as a PHP expression to be evaluated instead of replacement text. Thus, a markup to produce a random number between 1 and 100 might look like:%0a%0a->[@%0aMarkup('random', 'directives',%0a '/\\(:random:\\)/e',%0a "rand(1, 100)");%0a@]%0a%0aThis calls the PHP built-in rand() function and substitutes the directive with the result. Any function can be called, including functions defined in a [[local customization(s)]] file.%0a%0aArguments can also be passed by using regular expression capturing parentheses, thus%0a%0a->[@%0aMarkup('randomargs', 'directives',%0a '/\\(:random (\\d+) (\\d+):\\)/e',%0a "rand('$1', '$2')");%0a@]%0a%0awill cause the markup [@(:random 50 100:)@] to generate a random number between 50 and 100.%0a%0a->%25note%25 Note: Be very careful with the /e modifier in regular expressions; malicious authors may be able to pass strings that cause arbitrary and undesirable PHP functions to be executed.%0a%0aFor a PmWiki function to help with parsing arbitrary sequences of arguments and key=value pairs, see Cookbook:ParseArgs.%0a%0a%0a>>faq%3c%3c [[#faq]]%0aQ: How can I embed JavaScript into a page's output?%0aA: There are several ways to do this. The [[Cookbook:JavaScript]] recipe describes a simple means for embedding static JavaScript into web pages using [[custom markup]]. For editing JavaScript directly in wiki pages (which can pose various security risks), see the [[(Cookbook:)JavaScript-Editable]] recipe. For JavaScript that is to appear in headers or footers of pages, the [[skin(s)]] template can be modified directly, or %3cscript> statements can be inserted using the $HTMLHeaderFmt array.%0a%0aQ: How would I create a markup (''[=(:nodiscussion:)=]'') that will set a page variable (''[={$HideDiscussion}=]'') which can be used by ''[=(:if enabled HideDiscussion:)=]'' in [=.PageActions=]?%0aA: Add the following section of code to your config.php%0a-> [@%0aSDV($HideDiscussion, 0); #define var name%0aMarkup('hideDiscussion', '%3c{$var}',%0a '/\\(:nodiscussion:\\)/e', 'setHideDiscussion(true)'); %0afunction setHideDiscussion($val) { %0a global $HideDiscussion; %0a $HideDiscussion = $val;%0a} %0a@]%0a%0aThis will enable the @@[=(:if enabled HideDiscussion:)=]@@ markup to be used. If you want to print the current value of [={$HideDiscussion}=] (for testing purposes) on the page, you'll also need to add the line: \\%0a@@[=$FmtPV['$HideDiscussion'] = '$GLOBALS["HideDiscussion"]';=]@@%0a%0a%0aQ: PmWiki only supports tool tips for external links, can I use custom markup to add tool tips to internal links?%0aA: Yes, add the following custom markup to your config.php: \\%0a[= Markup('%25title%25', 'inline', '/%25title%25(.*?)"(.*?)"(.*?)%25%25/', '%3cspan title="$2">$1$3%3c/span>'); # Add tool tips to internal links, Example: %25title%25[[link"tool tip"]]%25%25 =]%0a%0aUse the markup with internal links such as: \\%0a[= %25title%25[[CookBook "cool" | Example]]%25%25 =]%0a%0aA: See also [[Cookbook:LinkTitles]].%0a%0aQ: It appears that (.*?) does not match newlines in these functions, making the above example inoperable if the text to be wrappen in %3cem> contains new lines.%0aA: If you include the "s" modifier on the regular expression then the dot (.) will match newlines. Thus your regular expression will be "/STUFF(.*?)/s". That s at the very end is what you are looking for. If you start getting into multi-line regexes you may be forced to look at the m option as well - let's anchors (^ and $) match not begin/end of strings but also begin/end of lines (i.e., right before/after a newline).%0a%0a%0aQ: How do I get started writing recipes and creating my own custom markup?%0aA: [[PmWiki:CustomMarkupAlt|(alternate) Introduction to custom markup for Beginners]]%0a%0aA: You can also see the [[(PmWiki:)Custom Markup Examples]] page.%0a +time=1239490603 Index: wikilib.d/PmWiki.PageLists =================================================================== --- wikilib.d/PmWiki.PageLists (.../pmwiki-2.2.1) (revision 2344) +++ wikilib.d/PmWiki.PageLists (.../pmwiki-2.2.2) (revision 2344) @@ -1,12 +1,12 @@ version=pmwiki-2.2.1 ordered=1 urlencoded=1 -agent=Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.19) Gecko/20081216 Ubuntu/8.04 (hardy) Firefox/2.0.0.19 -author=Petko +agent=Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.172.31 Safari/530.5 +author=simon charset=ISO-8859-1 -csum=fix link +csum=quotes in example ctime=1138643894 -host=81.65.14.164 +host=203.97.214.12 name=PmWiki.PageLists -rev=176 -targets=PmWiki.PageListTemplates,PmWiki.DocumentationIndex,PmWiki.PageTextVariables,PmWiki.WikiTrails,Site.PageListTemplates,PmWiki.Categories,PmWiki.ConditionalMarkup,PmWiki.CustomPagelistSortOrder,PmWiki.PageDirectives,PmWiki.PageListDefaultTemplates,PmWiki.PagelistVariables -text=(:Audience: authors, admins (intermediate) :)%0a(:Summary:Listing pages by multiple criteria with templated output:)%0aPmWiki comes with two directives for generating lists of pages -- [@(:pagelist:)@] and @@[=(:=]searchresults:)@@. Both directives are basically the same and each accepts the parameters documented below. The primary difference between the two is that searchresults generates the "Results of search for ..." and "### pages found out of ### searched" messages around the results.%0a%0aThe [@(:searchbox:)@] directive generates a search form (input text box) to submit search queries. The markup generally accepts the same parameters as [@(:pagelist:)@], which makes it possible to restrict, order and format searchresults in the same ways that are described below for a [@(:pagelist:)@]. For more information about the [@(:searchbox:)@] directive, and the ways in which it differs from a [@(:pagelist:)@], skip to the section [[#searchbox|below]].%0a%0a!! Basic syntax%0a%0a* [@(:pagelist:)@] %0a->without any arguments shows a bulleted list of all pages, as links, ordered alphabetically and in groups.%0a* @@[=(:=]pagelist [[#pagelistgroup|group]]=''abc'' \%0a [[#pagelistname|name]]=''def'' \%0a [[#pagelistfmt|fmt]]=''[[page list templates|template]]'' \%0a [[#pagelistlist|list]]=''ghi'' \%0a [[#pagelistorder|order]]=''jkl'' \%0a [[#pagelistcount|count]]=''123'' \%0a [[#pagelistlink|link]]=''mno'' \%0a [[#pagelisttrail|trail]]=''pqr'' \%0a [[#pagelistwrap|wrap]]=''stu'' \%0a [[#pagelistpasswd|passwd]]=''vwx'' \%0a [[#pagelistif|if]]=''yz'' \%0a [[#pagetextvariables|$:''ptv'']]=''yz'' \%0a ''[[#pagelistarg|argument]]1'' -''[[#pagelistarg|argument]]2'' ''etc'':)@@ %0a->shows a pagelist according to the parameters supplied. Parameters are optional.%0a* @@[=(:=][[#searchbox|searchbox]] value=''abc'' size=''99'' target=''def'':)@@%0a* @@[=(:=][[#searchresults|searchresults]] [[#pagelistreq|''request=1 req=1'']] :)@@%0a%0a!! Parameters%0a[[#pagelistarg]]%0aAny argument supplied within [@(:pagelist:)@] that isn't in the form @@'key=value'@@ is treated as text that either must (or must not) exist in the page text.%0a%0aThe minus sign (-) or exclamation mark (!) can be used to indicate the logical ''not''. Thus%0a->[@(:pagelist trail=PmWiki.DocumentationIndex list=normal apple !pie:)@]%0alists all "normal" pages listed in the [[Documentation Index ]] trail that contain the word "apple" but not "pie".%0a%0a!!![[#pagetextvariables]]With page text variables%0aYou can also use [[page text variables]] as a ''key'' to list pages according to the existence of a page text variable. Eg : %0a->[@(:pagelist $:pagetextvar=avalue:)@]%0alists pages having ''$:pagetextvar'' set to ''avalue''.%0a[[%3c%3c]]%0aMinus sign (-), wildcards (?*) and a comma separated list of values also works when specifying a selection based on pagetextvariables. Eg :%0a->[@(:pagelist $:apagetextvar=t*,-test:)@]%0alists pages having $:apagetextvar like 't*' but not 'test'.%0a[[%3c%3c]]%0aExamples:%0a||width=* class="tabtable" rules=rows%0a||PTV is set (is not empty): ||[@(:pagelist $:MyPageTextVariable=- :)@]||%0a||PTV is empty or not set:[[%3c%3c]] (ie, is not set to one char followed by 0 or more chars) ||[@(:pagelist $:MyPageTextVariable=-?* :)@]||%0a||PTV is not VALUE: ||[@(:pagelist $:MyPageTextVariable=-VALUE :)@]||%0a||PTV is set and not YES: ||[@(:pagelist $:MyPageTextVariable=?*,-YES :)@]||%0aBe aware that if using [@(:pagelist $:MyPTV=$:YourPTV :)@] PTVs include PmWiki formatting, so you may not get the matches you expect. Currently the only way around this is to use wild cards, so if the formatting is embedded you may be out of luck.%0a%0a!!![[#pagelistgroup]] group= and [[#pagelistname]]name= %0a%0aThe "[@group=@]" and "[@name=@]" parameters limit results to pages in a specific group or with a specific name:%0a(:table class='tabtable' rules=rows:)%0a(:cellnr:)All pages in the Pmwiki group:%0a(:cell:)[@(:pagelist group=PmWiki :)@]%0a(:cellnr:)All pages except those in the PmWiki or Site groups:%0a(:cell:)[@(:pagelist group=-PmWiki,-Site :)@]%0a(:cellnr:)All RecentChanges pages%0a(:cell:)[@(:pagelist name=RecentChanges :)@]%0a(:cellnr:)All pages except RecentChanges%0a(:cell:)[@(:pagelist name=-RecentChanges :)@]%0a(:tableend:)%0a%0a!!! Wildcards%0aName and group parameters can contain ''wildcard'' characters that display only pages matching a given pattern:%0a* An asterisk (*) represents zero or more characters%0a* A question mark (?) represents exactly one character%0a%0aExamples:%0a(:table class='tabtable' rules=rows:)%0a(:cell:)All pages in any group beginning with "PmWiki"%0a(:cell:)[@(:pagelist group=PmWiki* :)@]%0a(:cellnr:)All pages in any group beginning with "PmWiki", except for Chinese%0a(:cell:)[@(:pagelist group=PmWiki*,-PmWikiZh :)@]%0a(:cellnr:)All pages in the PmCal group with names starting with "2005":%0a(:cell:)[@(:pagelist name=PmCal.2005* :)@]%0a(:cellnr:)All Cookbooks with names beginning with a A and a B letter%0a->note the different separators used for the same result%0a(:cell:)[@%0a(:pagelist group=Cookbook name=A*,B* :)%0a(:pagelist group=Cookbook name="A* B*" :)%0a(:pagelist group=Cookbook name=[AB]* :)%0a(:pagelist group=Cookbook, name=[AB]* :)@]%0a(:tableend:)%0a%0aIf you want to use multiples conditions in name you need to use quotes or commas to delimit the string. %0a%0a!!![[#pagelisttrail]] trail= %0aThe "[@trail=@]" option obtains the list of pages to be displayed from a [[WikiTrail(s)]]:%0a* Display pages in the documentation by modification time%0a->[@(:pagelist trail=PmWiki.DocumentationIndex order=-time:)@]%0a* Display five most recently changed pages%0a-%3c[@(:pagelist trail=RecentChanges count=5:)@]%0a%0a!!![[#pagelistlist]] list= %0a%0aThe "[@list=@]" option allows a search to include or exclude pages according to predefined patterns set by the administrator. %0a* "[@list=normal@]" is predefined, and which excludes things like AllRecentChanges, RecentChanges, GroupHeader, GroupFooter, GroupAttributes, and the like from being displayed in the list results. Note that list=normal also excludes the current page.%0a* "[@list=all@]" over-rides a "default" list that may be set by the wiki's administrator to exclude groups such as PmWiki or Site from regular search results.%0a* Wiki administrators can define custom lists via the $SearchPatterns array (see [[Cookbook:SearchResults]]).%0a%0a!!![[#pagelistfmt]] fmt= %0a%0aThe "[@fmt=@]" option determines how the resulting list should be displayed. %0aPmWiki [[Site/PageListTemplates|predefines]] several formats:%0a* @@fmt=#bygroup@@ - Display pages within groups (default format)%0a* @@fmt=#simple@@ - Display a simple ordered list of pages in the form Group.Name%0a* @@fmt=#title@@ - Display a list of pages by page title. Use "[@order=title@]" to have them sorted by title (default is to order by page name).%0a* @@fmt=#group@@ - Display a list of wikigroups (without listing the pages in the groups)%0a* @@fmt=#include@@ - Display the contents of each page in the list (note, this could take a very long time for long lists!)%0aThese formats are defined by [[page list templates]], which can be customized.%0a%0aThis format is not predefined by a page list template:%0a* @@fmt=count@@ - Display the number of pages in the list (note the absence of the "#").%0a* @@fmt=authtable@@ - Display a table of pages with ''read'', ''edit'', ''attr'', ''upload'', and ''publish'' settings (note the absence of the "#").%0a%0a%0a!!![[#pagelistlink]] link= %0a%0aThe "[@link=@]" option implements "backlinks" -- i.e., it returns a list of pages with a link to the target. It's especially useful for [[categor(ies)]]y pages and finding related pages.%0a%0a* all pages with a link to PmWiki.DocumentationIndex%0a->[@(:pagelist link=PmWiki.DocumentationIndex:)@]%0a* all pages with links to the current page%0a->[@(:pagelist link={$FullName}:)@]%0a* all pages in the "Skins" category%0a->[@(:pagelist link=Category.Skins:)@]%0a%0a!!![[#pagelistcount]] count= %0a%0aThe "[@count=@]" option provides the ability to%0a* limit the pagelist to a specific number of pages%0a* subsets of a list%0a* return items from the end of a list, subsets of a list%0a* display pages in reverse sequence%0a%0a(:table class=tabtable rules=rows:)%0a(:cellnr:)A simple bullet list of ten most recently modified pages%0a(:cell:)%0a[@(:pagelist trail=Site.AllRecentChanges count=10 fmt=#simple:)@]%0a(:cellnr:)Display the first ten pages of a list%0a(:cell:)%0a[@count=10 # display the first ten pages of list@]%0a(:cellnr:)Negative numbers specify pages to be displayed from the end of the list:%0a(:cell:)%0a[@count=-10 # display last ten pages of list@]%0a(:cellnr:)Ranges may be specified using '..', thus:%0a(:cell:)%0a[@count=1..10 # first ten pages of list%0acount=5..10 # 5th through 10th pages of list@]%0a(:cellnr:)Negative numbers in ranges count from the end of the list:%0a(:cell:)%0a[@count=-10..-5 # 10th from end, 9th from end, ..., 5th from end@]%0a(:cellnr:)Omitting the start or end of the range uses the start or end of the list:%0a(:cell:)%0a[@count=10.. # skip first ten pages%0acount=..10 # 1st through 10th page of list%0acount=-10.. # last ten pages of list%0acount=..-10 # all but the last nine pages@]%0a(:cellnr:)Ranges can be reversed, indicating that the order of pages in the output should likewise be reversed:%0a(:cell:)%0a[@count=5..10 # 5th through 10th pages of list%0acount=10..5 # same as 5..10 but in reverse sequence%0acount=-1..1 # all pages in reverse sequence@]%0a(:cellnr:)"Reverse sequence" here refers to the sequence ''after'' any sorting has taken place. Therefore the three directives to the right are equivalent:%0a(:cell:)%0a[@(:pagelist order=-name count=10:)%0a(:pagelist order=-name count=1..10:)%0a(:pagelist order=name count=-1..-10:) @]%0a(:tableend:)%0a%0a!!![[#pagelistwrap]] wrap=%0aThe "[@wrap@]" option has the values, ''none'', ''html'', and ''inline''.%0aWith "wrap=inline" and "wrap=HTML" the output from pagelist (markup or HTML) is directly embedded in a page's markup or without any surrounding %3cdiv>...%3c/div> tags.%0a%0a!!![[#pagelistpasswd]] passwd=%0aThe "[@passwd@]" option returns only those pages that have some sort of password attribute on them.%0a%0a!!![[#pagelistif]] if=%0aThe "[@if@]" option allows a condition to be specified as part of the pagelist processing, rather than from within the [[page list template(s)]]. Only those pages for which the condition is true are retrieved. Anything that could [[ConditionalMarkup | go within an [@(:if ...:)@]]] can be used as a condition. For example%0a%0a [@(:pagelist if="date {(ftime %25GW%25V {*$Name})} {=$Name}" :)@]%0a%0areturns all of the pages where the name is in the same week as that of the current page.%0a%0a!!![[#pagelistorder]] order=%0a%0aThe "[@order=@]" option allows the pages in the list to be sorted according to different criteria. Use a minus sign to indicate a reverse sort. Multiple sorting criteria can be specified using a comma, and you can create your own [[custom pagelist sort order]]:%0a* [@order=name@] - alphabetically by name (default order)%0a* [@order=title@] - alphabetically by title rather than names%0a* [@order=time@] - most recently changed pages '''last'''%0a* [@order=ctime@] - time of page creation (see note)%0a* [@order=size@] - page size (not file size), smallest pages first%0a* [@order=group,title@] - by multiple criteria, in this instance sort by title within groups%0a* [@order=random@] - shuffle the pages into random sequence%0a* [@order=$:pagetextvarname@] - alphabetically by [[PageTextVariables|page text variable]] value%0a%0aAlso, the [@order=@] option allows custom ordering functions to be written.%0a->Note: fmt=trail results in an unordered pagelist, i.e. the trail order is preserved in the pagelist. So PmWiki's alphabetical default order does not apply in this case.%0a->Note: ctime was added to pages only from pmwiki 2.1.beta15 onwards, pages created by earlier versions don't carry a ctime attribute and can't be sorted that way.%0a%0a!! Examples%0a%0aInclude the contents of a random page from the Banners group:%0a->[@(:pagelist group=Banners order=random count=1 fmt=#include list=normal:)@]%0a%0aDisplay a simple list of the last ten recently changed pages:%0a->[@(:pagelist trail=Site.AllRecentChanges count=10 fmt=#simple:)@]%0a%0aDisplay the "top twenty" biggest cookbook pages:%0a->[@(:pagelist group=Cookbook order=-size count=20 :)@]%0a%0a!![[#searchbox]] The Searchbox Directive%0a%0aThe [@(:searchbox:)@] directive generally accepts the same parameters as [@(:pagelist:)@] and [@(:input text:)@] directives:%0a* Pagelist parameters can be added to the input text of a searchbox (or to the markup, or both)%0a* Input text box parameters can be added to the searchbox markup%0a** An initial search string can be specified in the searchbox markup, but it must be in the form @@value='search string'@@. That search string is displayed in the input text and can be modified by when the search is run.%0a** The size of the text input field can be specified with the size parameter, where "size=40" would specify the current default value.%0a*** Tip: If more than one searchbox appears on a page, adding a blank initial value like this @@value=''@@, to the markup for each searchbox will prevent a search string for one box from populating all of the other boxes.%0a* The target page for displaying searchbox results can be set with the parameter @@target=''GroupName.PageName''@@. The default is the current page. %0a* The entire searchbox form can be overridden by defining the $SearchBoxFmt variable in one's configuration file. If $SearchBoxFmt is defined, then the parameters to [@(:searchbox:)@] are ignored, and the content of the $SearchBoxFmt variable are used instead.%0a%0a[[#searchresults]]%0a!! The Searchresults directive%0aThe [@(:searchresults:)@] directive generally accepts the same parameters as [@(:pagelist:)@] and [@(:input text:)@] directives:%0a%0a!!![[#pagelistreq]] request=1 req=1%0a[=(:searchresults:)=] without the introductory line that says "Results of search for..."%0a%0a!! See Also%0a%0a* [[PageDirectives#attachlist]] - display a list of attachments%0a* [[Site.PageListTemplates]] - default pmwiki pagelist templates%0a* [[Cookbook:PagelistTemplateSamples]] - contributed pagelist template samples%0a* [[PmWiki/PageListDefaultTemplates]] - Examples of what is produced by default pagelist formats%0a* [[PmWiki/PageListTemplates]] - how to create custom pagelist templates for the fmt= option%0a* [[(PmWiki/)PagelistVariables]] - ''local/config.php'' customizations%0a* [[Cookbook:Forms]] - documentation for [@(:input text:)@] markup, which applies to [@(:searchbox:)@]%0a* [[(PmWiki:)CustomPagelistSortOrder]] - creating custom order sort functions%0a* [[Cookbook:CustomPagelistSortOrderFunctions]] - {Cookbook.CustomPagelistSortOrderFunctions$:Summary}%0a -time=1238274125 +rev=189 +targets=PmWiki.PageListTemplates,PmWiki.DocumentationIndex,PmWiki.PageTextVariables,PmWiki.WikiTrails,Site.PageListTemplates,PmWiki.Categories,PmWiki.ConditionalMarkup,PmWiki.CustomPagelistSortOrder,PmWiki.PageDirectives,PmWiki.PagelistVariables +text=(:Audience: authors, admins (intermediate) :)%0a(:Summary:Listing pages by multiple criteria with templated output:)%0aPmWiki comes with two directives for generating lists of pages -- [@(:pagelist:)@] and @@[=(:=]searchresults:)@@. Both directives are basically the same and each accepts the parameters documented below. The primary difference between the two is that searchresults generates the "Results of search for ..." and "### pages found out of ### searched" messages around the results.%0a%0aThe [@(:searchbox:)@] directive generates a search form (input text box) to submit search queries. The markup generally accepts the same parameters as [@(:pagelist:)@], which makes it possible to restrict, order and format searchresults in the same ways that are described below for a [@(:pagelist:)@]. For more information about the [@(:searchbox:)@] directive, and the ways in which it differs from a [@(:pagelist:)@], skip to the section [[#searchbox|below]].%0a%0a!! Basic syntax%0a%0a* [@(:pagelist:)@] %0a->without any arguments shows a bulleted list of all pages, as links, ordered alphabetically and in groups.%0a* @@[=(:=]pagelist [[#pagelistgroup|group]]=''abc'' \%0a [[#pagelistname|name]]=''def'' \%0a [[#pagelistfmt|fmt]]=''[[page list templates|template]]'' \%0a [[#pagelistlist|list]]=''ghi'' \%0a [[#pagelistorder|order]]=''jkl'' \%0a [[#pagelistcount|count]]=''123'' \%0a [[#pagelistlink|link]]=''mno'' \%0a [[#pagelisttrail|trail]]=''pqr'' \%0a [[#pagelistwrap|wrap]]=''stu'' \%0a [[#pagelistpasswd|passwd]]=''vwx'' \%0a [[#pagelistif|if]]=''yz'' \%0a [[#pagetextvariables|$:''ptv'']]=''yz'' \%0a [[#pagevariables|$''pv'']]=''za'' \%0a [[#pagelistcache|cache]]=0 \%0a ''[[#pagelistarg|argument]]1'' -''[[#pagelistarg|argument]]2'' ''etc'' \%0a [[#includevariable|variable]]=''value'' \%0a [[#pagelistclass|class]]=''class'' \%0a :)@@ %0a->shows a pagelist according to the parameters supplied. Parameters are optional.%0a* @@[=(:=][[#searchbox|searchbox]] value=''abc'' size=''99'' target=''def'':)@@%0a* @@[=(:=][[#searchresults|searchresults]] [[#pagelistreq|''request=1 req=1'']] :)@@%0a%0a!! Parameters%0a[[#pagelistarg]]%0aAny argument supplied within [@(:pagelist:)@] that isn't in the form @@'key=value'@@ is treated as text that either must (or must not) exist in the page text.%0a%0aThe minus sign (-) or exclamation mark (!) can be used to indicate the logical ''not''. Thus%0a->[@(:pagelist trail=PmWiki.DocumentationIndex list=normal apple !pie:)@]%0alists all "normal" pages listed in the [[Documentation Index ]] trail that contain the word "apple" but not "pie".%0a%0a!!![[#pagetextvariables]]With page text variables%0aYou can also use [[page text variables]] as a ''key'' to list pages according to the existence of a page text variable. Eg : %0a->[@(:pagelist $:pagetextvar=avalue:)@]%0alists pages having ''$:pagetextvar'' set to ''avalue''.%0a[[%3c%3c]]%0aMinus sign (-), wildcards (?*) and a comma separated list of values also works when specifying a selection based on pagetextvariables. Eg :%0a->[@(:pagelist $:apagetextvar=t*,-test:)@]%0alists pages having $:apagetextvar like 't*' but not 'test'.%0a[[%3c%3c]]%0aExamples:%0a||width=* class="tabtable" rules=rows%0a||PTV is set (is not empty): ||[@(:pagelist $:MyPageTextVariable=- :)@]||%0a||PTV is empty or not set:[[%3c%3c]] (ie, is not set to one char followed by 0 or more chars) ||[@(:pagelist $:MyPageTextVariable=-?* :)@]||%0a||PTV is not VALUE: ||[@(:pagelist $:MyPageTextVariable=-VALUE :)@]||%0a||PTV is set and not YES: ||[@(:pagelist $:MyPageTextVariable=?*,-YES :)@]||%0aBe aware that if using [@(:pagelist $:MyPTV=$:YourPTV :)@] PTVs include PmWiki formatting, so you may not get the matches you expect. Currently the only way around this is to use wild cards, so if the formatting is embedded you may be out of luck.%0a%0a!!![[#pagevariables]]With page variables (PV)%0a%0aPage variables can be used within pagelists in the same way as page text variables. See [[#pagetextvariables|Page Text Variables]] above for more details. Simply use $var instead of $:var.%0a%0a!!![[#pagelistgroup]] group= and [[#pagelistname]]name= %0a%0aThe "[@group=@]" and "[@name=@]" parameters limit results to pages in a specific group or with a specific name:%0a(:table class='tabtable' rules=rows:)%0a(:cellnr:)All pages in the Pmwiki group:%0a(:cell:)[@(:pagelist group=PmWiki :)@]%0a(:cellnr:)All pages except those in the PmWiki or Site groups:%0a(:cell:)[@(:pagelist group=-PmWiki,-Site :)@]%0a(:cellnr:)All RecentChanges pages%0a(:cell:)[@(:pagelist name=RecentChanges :)@]%0a(:cellnr:)All pages except RecentChanges%0a(:cell:)[@(:pagelist name=-RecentChanges :)@]%0a(:tableend:)%0a%0a!!! Wildcards%0aName and group parameters can contain ''wildcard'' characters that display only pages matching a given pattern:%0a* An asterisk (*) represents zero or more characters%0a* A question mark (?) represents exactly one character%0a%0aExamples:%0a(:table class='tabtable' rules=rows:)%0a(:cell:)All pages in any group beginning with "PmWiki"%0a(:cell:)[@(:pagelist group=PmWiki* :)@]%0a(:cellnr:)All pages in any group beginning with "PmWiki", except for Chinese%0a(:cell:)[@(:pagelist group=PmWiki*,-PmWikiZh :)@]%0a(:cellnr:)All pages in the PmCal group with names starting with "2005":%0a(:cell:)[@(:pagelist name=PmCal.2005* :)@]%0a(:cellnr:)All Cookbooks with names beginning with a A and a B letter%0a->note the different separators used for the same result%0a(:cell:)[@%0a(:pagelist group=Cookbook name=A*,B* :)%0a(:pagelist group=Cookbook name="A* B*" :)%0a(:pagelist group=Cookbook name=[AB]* :)%0a(:pagelist group=Cookbook, name=[AB]* :)@]%0a(:tableend:)%0a%0aIf you want to use multiples conditions in name you need to use quotes or commas to delimit the string. %0a%0a!!![[#pagelisttrail]] trail= %0aThe "[@trail=@]" option obtains the list of pages to be displayed from a [[WikiTrail(s)]]:%0a* Display pages in the documentation by modification time%0a->[@(:pagelist trail=PmWiki.DocumentationIndex order=-time:)@]%0a* Display five most recently changed pages%0a-%3c[@(:pagelist trail=RecentChanges count=5:)@]%0a%0a!!![[#pagelistlist]] list= %0a%0aThe "[@list=@]" option allows a search to include or exclude pages according to predefined patterns set by the administrator. %0a* "[@list=normal@]" is predefined, and which excludes things like AllRecentChanges, RecentChanges, GroupHeader, GroupFooter, GroupAttributes, and the like from being displayed in the list results. Note that list=normal also excludes the current page.%0a* "[@list=all@]" over-rides a "default" list that may be set by the wiki's administrator to exclude groups such as PmWiki or Site from regular search results.%0a* Wiki administrators can define custom lists via the $SearchPatterns array (see [[Cookbook:SearchResults]]).%0a%0a!!![[#pagelistfmt]] fmt= %0a%0aThe "[@fmt=@]" option determines how the resulting list should be displayed. %0aPmWiki [[Site/PageListTemplates|predefines]] several formats:%0a* @@fmt=#bygroup@@ - Display pages within groups (default format)%0a* @@fmt=#simple@@ - Display a simple ordered list of pages in the form Group.Name%0a* @@fmt=#title@@ - Display a list of pages by page title. Use "[@order=title@]" to have them sorted by title (default is to order by page name).%0a* @@fmt=#group@@ - Display a list of wikigroups (without listing the pages in the groups)%0a* @@fmt=#include@@ - Display the contents of each page in the list (note, this could take a very long time for long lists!)%0aThese formats are defined by [[page list templates]], which can be customized.%0a%0aThis format is not predefined by a page list template:%0a* @@fmt=count@@ - Display the number of pages in the list (note the absence of the "#").%0a* @@fmt=authtable@@ - Display a table of pages with ''read'', ''edit'', ''attr'', ''upload'', and ''publish'' settings (note the absence of the "#").%0a%0a%0a!!![[#pagelistlink]] link= %0a%0aThe "[@link=@]" option implements "backlinks" -- i.e., it returns a list of pages with a link to the target. It's especially useful for [[categor(ies)]]y pages and finding related pages.%0a%0a* all pages with a link to PmWiki.DocumentationIndex%0a->[@(:pagelist link=PmWiki.DocumentationIndex:)@]%0a* all pages with links to the current page%0a->[@(:pagelist link={$FullName}:)@]%0a* all pages in the "Skins" category%0a->[@(:pagelist link=Category.Skins:)@]%0a%0a!!![[#pagelistcount]] count= %0a%0aThe "[@count=@]" option provides the ability to%0a* limit the pagelist to a specific number of pages%0a* subsets of a list%0a* return items from the end of a list, subsets of a list%0a* display pages in reverse sequence%0a%0a(:table class=tabtable rules=rows:)%0a(:cellnr:)A simple bullet list of ten most recently modified pages%0a(:cell:)%0a[@(:pagelist trail=Site.AllRecentChanges count=10 fmt=#simple:)@]%0a(:cellnr:)Display the first ten pages of a list%0a(:cell:)%0a[@count=10 # display the first ten pages of list@]%0a(:cellnr:)Negative numbers specify pages to be displayed from the end of the list:%0a(:cell:)%0a[@count=-10 # display last ten pages of list@]%0a(:cellnr:)Ranges may be specified using '..', thus:%0a(:cell:)%0a[@count=1..10 # first ten pages of list%0acount=5..10 # 5th through 10th pages of list@]%0a(:cellnr:)Negative numbers in ranges count from the end of the list:%0a(:cell:)%0a[@count=-10..-5 # 10th from end, 9th from end, ..., 5th from end@]%0a(:cellnr:)Omitting the start or end of the range uses the start or end of the list:%0a(:cell:)%0a[@count=10.. # skip first ten pages%0acount=..10 # 1st through 10th page of list%0acount=-10.. # last ten pages of list%0acount=..-10 # all but the last nine pages@]%0a(:cellnr:)Ranges can be reversed, indicating that the order of pages in the output should likewise be reversed:%0a(:cell:)%0a[@count=5..10 # 5th through 10th pages of list%0acount=10..5 # same as 5..10 but in reverse sequence%0acount=-1..1 # all pages in reverse sequence@]%0a(:cellnr:)"Reverse sequence" here refers to the sequence ''after'' any sorting has taken place. Therefore the three directives to the right are equivalent:%0a(:cell:)%0a[@(:pagelist order=-name count=10:)%0a(:pagelist order=-name count=1..10:)%0a(:pagelist order=name count=-1..-10:) @]%0a(:tableend:)%0a%0a!!![[#pagelistwrap]] wrap=%0aThe "[@wrap@]" option has the values, ''none'' and ''inline''.%0a%0aWith "wrap=inline" and "wrap=none", the output from pagelist (markup or HTML) is directly embedded in a page's markup without any surrounding %3cdiv> class=...%3c/div> tags.%0a%0aWith "wrap=inline", any surrounding %3cul> is continued. Without "wrap=inline", the HTML output starts a new %3cul>. This is important if you want to get a second level %3cul> produced by the page list since starting a new %3cul> with "**" doesn't yield a second level %3cul> but %3cdl>%3cdd>%3cul>...%0a%0a"wrap=inline" likely has other effects since it suppresses the call to $FPLTemplateMarkupFunction (being MarkupToHTML by default).%0a%0a!!![[#pagelistclass]] class=%0aBy default, a pagelist has the 'fpltemplate' class. The 'bygroup', 'simple', 'group' and 'title' page list formats have specific class names fplbygroup, fplsimple etc. You can set any class using the class= parameter or by setting the $FPLFormatOpt array.%0a%0a!!![[#pagelistpasswd]] passwd=%0aThe "[@passwd@]" option returns only those pages that have some sort of password attribute on them.%0a%0a!!![[#pagelistif]] if=%0aThe "[@if@]" option allows a condition to be specified as part of the pagelist processing, rather than from within the [[page list template(s)]]. Only those pages for which the condition is true are retrieved. Anything that could [[ConditionalMarkup | go within an [@(:if ...:)@]]] can be used as a condition. For example%0a%0a [@(:pagelist if="date {(ftime %25GW%25V {*$Name})} {=$Name}" :)@]%0a%0areturns all of the pages where the name is in the same week as that of the current page.%0a%0a!!![[#pagelistorder]] order=%0a%0aThe "[@order=@]" option allows the pages in the list to be sorted according to different criteria. Use a minus sign to indicate a reverse sort. Multiple sorting criteria can be specified using a comma, and you can create your own [[custom pagelist sort order]]:%0a* [@order=name@] - alphabetically by name (default order)%0a* [@order=title@] - alphabetically by title rather than names%0a* [@order=time@] - most recently changed pages '''last'''%0a* [@order=ctime@] - time of page creation (see note)%0a* [@order=size@] - page size (not file size), smallest pages first%0a* [@order=group,title@] - by multiple criteria, in this instance sort by title within groups%0a* [@order=random@] - shuffle the pages into random sequence%0a* [@order=$:pagetextvarname@] - alphabetically by [[PageTextVariables|page text variable]] value%0a%0aAlso, the [@order=@] option allows custom ordering functions to be written.%0a->Note: fmt=trail results in an unordered pagelist, i.e. the trail order is preserved in the pagelist. So PmWiki's alphabetical default order does not apply in this case.%0a->Note: ctime was added to pages only from pmwiki 2.1.beta15 onwards, pages created by earlier versions don't carry a ctime attribute and can't be sorted that way.%0a%0a[[#pagelistcache]]%0a!!! cache=0%0aPagelist has the capability to cache lists which greatly speeds up processing. Every once in a while this caching can result in undesired results. Specifying @@cache=0@@ disables caching.%0a%0a%0a[[#includevariable]]%0a!!!! Specifying variables as parameters%0aYou can also specify variable values inline with the pagelist statement, and refer to the variables in the template using the [@{$$variable1}@] format:%0a-> [@(:pagelist fmt=#pagelist variable1="value" variable2="value2":)@]%0a%0aThis assumes that a site has $EnableRelativePageVars enabled, which is recommended in PmWiki 2.2.0 -- but disabled by default to help people upgrading from 2.1.x.%0a%0aFor example, in the template:%0a%0a(:markup class=horiz:)%0a>>comment%3c%3c%0a[[#tvars]]%0a(:template default count=1:)%0aHi, {$$Name}, how are you today?%0a[[#tvarsend]]%0a>>%3c%3c%0a(:markupend:)%0a%0aThis gives:%0a%0a(:markup class=horiz:)%0a(:pagelist fmt=#tvars Name="Sam":)%0a%0a(:pagelist fmt=#tvars Name="Sally":)%0a(:markupend:)%0a%0a!! Examples%0a%0aInclude the contents of a random page from the Banners group:%0a->[@(:pagelist group=Banners order=random count=1 fmt=#include list=normal:)@]%0a%0aDisplay a simple list of the last ten recently changed pages:%0a->[@(:pagelist trail=Site.AllRecentChanges count=10 fmt=#simple:)@]%0a%0aDisplay the "top twenty" biggest cookbook pages:%0a->[@(:pagelist group=Cookbook order=-size count=20 :)@]%0a%0a!![[#searchbox]] The Searchbox Directive%0a%0aThe [@(:searchbox:)@] directive generally accepts the same parameters as [@(:pagelist:)@] and [@(:input text:)@] directives:%0a* Pagelist parameters can be added to the input text of a searchbox (or to the markup, or both)%0a* Input text box parameters can be added to the searchbox markup%0a** An initial search string can be specified in the searchbox markup, but it must be in the form @@value='search string'@@. That search string is displayed in the input text and can be modified by when the search is run.%0a** The size of the text input field can be specified with the size parameter, where "size=40" would specify the current default value.%0a*** Tip: If more than one searchbox appears on a page, adding a blank initial value like this @@value=''@@, to the markup for each searchbox will prevent a search string for one box from populating all of the other boxes.%0a* The target page for displaying searchbox results can be set with the parameter @@target=''GroupName.PageName''@@. The default is the current page. %0a* The entire searchbox form can be overridden by defining the $SearchBoxFmt variable in one's configuration file. If $SearchBoxFmt is defined, then the parameters to [@(:searchbox:)@] are ignored, and the content of the $SearchBoxFmt variable are used instead.%0a%0a[[#searchresults]]%0a!! The Searchresults directive%0aThe [@(:searchresults:)@] directive generally accepts the same parameters as [@(:pagelist:)@] and [@(:input text:)@] directives:%0a%0a!!![[#pagelistreq]] request=1 req=1%0a[=(:searchresults:)=] without the introductory line that says "Results of search for..."%0a%0a!! See Also%0a%0a* [[PageDirectives#attachlist]] - display a list of attachments%0a* [[Site.PageListTemplates]] - default pmwiki pagelist templates%0a* [[Cookbook:PagelistTemplateSamples]] - contributed pagelist template samples%0a* [[PmWiki/PageListTemplates]] - how to create custom pagelist templates for the fmt= option%0a* [[(PmWiki/)PagelistVariables]] - ''local/config.php'' customizations%0a* [[Cookbook:Forms]] - documentation for [@(:input text:)@] markup, which applies to [@(:searchbox:)@]%0a* [[(PmWiki:)CustomPagelistSortOrder]] - creating custom order sort functions%0a* [[Cookbook:CustomPagelistSortOrderFunctions]] - {Cookbook.CustomPagelistSortOrderFunctions$:Summary}%0a +time=1245107238 Index: wikilib.d/PmWiki.BackupAndRestore =================================================================== --- wikilib.d/PmWiki.BackupAndRestore (.../pmwiki-2.2.1) (revision 2344) +++ wikilib.d/PmWiki.BackupAndRestore (.../pmwiki-2.2.2) (revision 2344) @@ -1,13 +1,13 @@ -version=pmwiki-2.2.0 ordered=1 urlencoded=1 +version=pmwiki-2.2.1 ordered=1 urlencoded=1 agent=Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.19) Gecko/20081216 Ubuntu/8.04 (hardy) Firefox/2.0.0.19 author=Petko charset=ISO-8859-1 -csum=smaller +csum=enabled links ctime=1134693395 host=81.65.14.164 name=PmWiki.BackupAndRestore -rev=25 -targets= -text=(:title Backup and Restore:)%0a(:Summary:background information and some basic backup and restore procedures:)%0a%0aThis page has some background information on making backups and explains some basic *nix backup and restore procedures.%0a%0a!! Introduction%0a%0aYour wiki installation contains some unique data in the following directories:%0a%0a-> [@%0alocal/ Local configuration scripts%0acookbook/ Recipes obtained from the [[(Cookbook:)Cookbook]]%0apub/ Publicly accessible files%0awiki.d/ Wiki pages%0auploads/ Uploaded files (attachments)%0a@]%0a%0aA good backup plan will include periodically archiving these directories — or at bare minimum [@local/@] and [@wiki.d/@]. Good practice dictates keeping your backup archives on a separate machine.%0a%0a!! Simple Backup and Restore (*nix)%0a%0aWhen it comes to backup, simpler is better. Since the pmwiki distribution is very small (about 1/4 megabyte), it's simplest to just archive the distribution files along with the data.%0a%0a!!! Making a Backup Archive%0a%0aThe following *nix command, executed from the parent directory of your wiki's directory, will put a complete backup archive of your site in your home directory.%0a%0a-> [@%0atar -zcvf ~/wiki-backup-`date +%25Y%25m`.tar.gz wiki/%0a@]%0a%0a[[#restore]]%0a!!! Restoring the Backup Archive%0a%0a!!!! Simple Method%0a%0aYour site can be restored and running in under 30 seconds with%0a%0a-> [@%0atar -zxvf ~/wiki-backup-200512.tar.gz%0afind wiki/uploads/ -type d |xargs chmod 777%0afind wiki/wiki.d/ -type d |xargs chmod 777%0a@]%0a%0a!!!! A Slightly-More-Secure Method%0a%0aThe simple restore commands above will give you world-writable files and directories. You can avoid world-writable permissions by letting PmWiki create directories with the proper attributes (ownership and permissions) for you.%0a%0aStart with%0a%0a-> [@%0atar -zxvf ~/wiki-backup-200512.tar.gz%0arm -rf wiki/wiki.d%0arm -rf uploads%0achmod 2777 wiki/%0a@]%0a%0aNow upload a file in each group that had uploads. If your site doesn't have uploads, just visit your site once so the wiki.d/ directory will be created.%0a%0aFinish your installation with%0a%0a-> [@%0achmod 755 wiki/%0atar -zxvf ~/wiki-backup-200512.tar.gz%0a@]%0a%0a%0a!!! Details%0a%0aThe commands on this page assume your site is in a directory called "wiki/". The test backup was made in December, 2005 so it's named accordingly.%0a%0aYour site will only have an uploads/ directory if uploads are enabled.%0a%0aThe backup command uses a date stamp (YYYYMM) in the filename. If you automate the command via cron you'll wind up with monthly snapshots of your site. You can get a daily snapshot by appending %25d to the date command ([@`date +%25Y%25m%25d`@] will get you YYYYMMDD). Be wary of space limitations if you have a large uploads/ directory.%0a%0a%0a!! See Also%0a%0a* A [[http://thread.gmane.org/gmane.comp.web.wiki.pmwiki.user/20317| thread]] [gmane.org] on the pmwiki-users mailing list.%0a* A [[(Cookbook:)Backup Pages]] recipe in the cookbook.%0a%0a!! Miscellaneous%0a%0a%0a!! Backup via FTP%0a# Download and install a ftp client like [[http://filezilla-project.org/download.php?type=client|Filezilla]]%0a# Connect to the server where you host pmWiki using%0a## the IP address (ex: 123.234.56.67) or the ftp name (ex: ftp.myhost.com)%0a## your account name (ex: mylogin) and password (ex: myp4ssw0rd)%0a# Move in your pmWiki directory (ex: /usr/mylogin/web/wiki/ )%0a# Select the folder you want to backup as explained before (probably either only the data or the whole wiki directory)%0a# Download them in a local folder%0a# Use 7zip or a similar software to build an archive of this backup%0a%0aYou can also very easily sync your FTP directories with your hard disc via this command line:%0a [=wget -nv -np -m ftp://user:password@ftp.yourhost.net/=]%0a'-Download [[http://gnuwin32.sourceforge.net/packages/wget.htm | Wget for Windows]] (other systems normally have it installed).-'%0a -time=1234618242 +rev=30 +targets=PmWiki.Uploads +text=(:title Backup and Restore:)%0a(:Summary:background information and some basic backup and restore procedures:)%0a%0aThis page has some background information on making backups and explains some basic *nix backup and restore procedures.%0a%0a!! Introduction%0a%0aYour wiki installation contains some unique data in the following directories:%0a%0a local/ Local configuration scripts%0a cookbook/ Recipes obtained from the [[(Cookbook:)Cookbook]]%0a pub/ Publicly accessible files%0a wiki.d/ Wiki pages%0a uploads/ [[Uploads|Uploaded files]] (attachments)%0a%0aA good backup plan will include periodically archiving these directories — or at bare minimum [@local/@] and [@wiki.d/@]. Good practice dictates keeping your backup archives on a separate machine.%0a%0a!! Simple Backup and Restore (*nix)%0a%0aWhen it comes to backup, simpler is better. %0aSince the pmwiki distribution is very small (about 1/4 megabyte), it's simplest to just archive the distribution files along with the data.%0a%0a!!! Making a Backup Archive%0a%0aThe following *nix command, executed from the parent directory of your wiki's directory, will put a complete backup archive of your site in your home directory.%0a%0a-> [@%0atar -zcvf ~/wiki-backup-`date +%25Y%25m`.tar.gz wiki/%0a@]%0a%0a[[#restore]]%0a!!! Restoring the Backup Archive%0a%0a!!!! Simple Method%0a%0aYour site can be restored and running in under 30 seconds with%0a%0a-> [@%0atar -zxvf ~/wiki-backup-200512.tar.gz%0afind wiki/uploads/ -type d |xargs chmod 777%0afind wiki/wiki.d/ -type d |xargs chmod 777%0a@]%0a%0a!!!! A Slightly-More-Secure Method%0a%0aThe simple restore commands above will give you world-writable files and directories. You can avoid world-writable permissions by letting PmWiki create directories with the proper attributes (ownership and permissions) for you.%0a%0aStart with%0a%0a-> [@%0atar -zxvf ~/wiki-backup-200512.tar.gz%0arm -rf wiki/wiki.d%0arm -rf uploads%0achmod 2777 wiki/%0a@]%0a%0aNow upload a file in each group that had uploads. If your site doesn't have uploads, just visit your site once so the wiki.d/ directory will be created.%0a%0aFinish your installation with%0a%0a-> [@%0achmod 755 wiki/%0atar -zxvf ~/wiki-backup-200512.tar.gz%0a@]%0a%0a%0a!!! Details%0a%0aThe commands on this page assume your site is in a directory called "wiki/". The test backup was made in December, 2005 so it's named accordingly.%0a%0aYour site will only have an uploads/ directory if uploads are enabled.%0a%0aThe backup command uses a date stamp (YYYYMM) in the filename. If you automate the command via cron you'll wind up with monthly snapshots of your site. You can get a daily snapshot by appending %25d to the date command ([@`date +%25Y%25m%25d`@] will get you YYYYMMDD). Be wary of space limitations if you have a large uploads/ directory.%0a%0a%0a!! See Also%0a%0a* A [[http://thread.gmane.org/gmane.comp.web.wiki.pmwiki.user/20317| thread]] [gmane.org] on the pmwiki-users mailing list.%0a* A [[(Cookbook:)Backup Pages]] recipe in the cookbook.%0a%0a!! Miscellaneous%0a%0a%0a!! Backup via FTP%0aDownload and install a ftp client like [[http://filezilla-project.org/download.php?type=client|Filezilla]]%0a%0a# Using the ftp client connect to the server where you host pmWiki using%0a## the IP address (ex: 123.234.56.67) or the ftp name (ex: ftp.myhost.com)%0a## supply your account name (ex: mylogin) and password (ex: myp4ssw0rd)%0a# Move to your pmWiki directory (ex: @@/usr/mylogin/web/wiki/@@ or @@/tahi/public_html/pmwiki@@ )%0a# Select the folder you want to backup as explained before (probably either only the data or the whole wiki directory)%0a** for data you will want to backup both the directories%0a*** @@wiki.d@@ for user page data%0a*** @@pmwikiuploads@@ (or @@uploads@@) for your attachments (uploads)%0a** for system you will want, at a minimum, to backup both the directories%0a*** @@local@@ for configuration data %0a*** @@pub@@ for local CSS and skins customisations%0a# Download them to a local folder%0a# Use [[http://www.7-zip.org/ | 7zip]] or a similar software to build an archive of this backup%0a%0aYou can also very easily sync your FTP directories with your hard disc via this command line:%0a-> [@ wget -nv -np -m ftp://user:password@ftp.yourhost.net/ @]%0a'-Download [[http://gnuwin32.sourceforge.net/packages/wget.htm | Wget for Windows]] (other systems normally have it installed).-'%0a +time=1241736520 title=Backup and Restore Index: wikilib.d/PmWiki.Categories =================================================================== --- wikilib.d/PmWiki.Categories (.../pmwiki-2.2.1) (revision 2344) +++ wikilib.d/PmWiki.Categories (.../pmwiki-2.2.2) (revision 2344) @@ -1,12 +1,12 @@ -version=pmwiki-2.2.0 ordered=1 urlencoded=1 -agent=Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.19) Gecko/20081216 Ubuntu/8.04 (hardy) Firefox/2.0.0.19 -author=Petko +version=pmwiki-2.2.1 ordered=1 urlencoded=1 +agent=Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.9) Gecko/2009040820 Firefox/3.0.9 +author=dw charset=ISO-8859-1 -csum=mv section to talk page -host=81.65.14.164 +csum= +host=130.76.194.114 keywords=categories, tags name=PmWiki.Categories -rev=64 +rev=65 targets=Category.GroupFooter,Category.Category,PmWiki.EditVariables -text=(:Summary:Categories are a way to organize and find related pages:)%0a(:keywords categories, tags:)%0a(:Audience: authors (intermediate) :)%0a%0a!!Purpose of categories%0aCategories (also known as "tags") are a way to organize and find related pages. Categories are implemented by default in PmWiki 2, and in most wikis they don't require any special code or markup, they're just a useful convention. The idea is that every page that falls into a particular subject area should have a link to a shared page containing links to other pages on that subject. These pages are created in the ''Category'' group, and thus these subject areas are called "categories".%0a%0a!!Using categories%0aGetting categories to work requires two steps, the first of which is adding links to each category. A category named Subject is created by adding a link to [=Category.Subject=] on any page. When you add the link to a page, the page can be described as being ''in'' the category "Subject". %0a%0aThere is a special markup for creating these links which makes categories work more smoothly: [=[[!Subject]]=] will create a link to Category.Subject. So [=[[!Subject]]=] is a kind of shortcut to the page Subject in the category group.%0a%0aIf you click on the category links on a page, initially you'll just be taken to an empty page named ''Category.Subject''. The second step in setting up categories is to modify the behavior of pages in the category group so that they will display a list of all pages containing links to ''Category.Subject''. This is relatively simple to do:%0a%0a# Open the page [[Category.GroupFooter]] for editing. (Be careful : the group "Category" may be called otherwise in international wikis.)%0a# Add the line [@(:pagelist link={*$FullName} list=normal:)@]%0a# Save the edits.%0a%0aThis will cause the footer on every page in the ''Category'' group to display a list of links to pages that reference that page in the category group.%0a%0aIt is worth noting that rather than adding this to Category.GroupFooter, the pagelist directive can be added to Category.GroupHeader to similar effect; it just depends on whether you'd prefer to have the list of pages appear before or after any text that you add to the individual category pages (which can be edited just like normal pages).%0a%0aBecause we use the normal [[Cookbook:PagelistExplained|PageList]] @@link=@@ markup, you can use it not only in the category group. If you want to show all pages belonging to the category Subject you can use on any wiki page [@(:pagelist link=Category.Subject list=normal:)@].%0a%0aSimilarly, there's no requirement that a "category page" has to be in the ''Category'' group -- any page can define a "category" of pages that link to it.%0a%0aAn administrator can override the default category group name of "Category" by setting the $CategoryGroup variable in ''config.php'' to another group name.%0a%0a!!!Recap%0aSo, by adding the link [=[[!Subject]]=] to a page, a link to that page will automatically appear on the page ''Category.Subject'', as long as ''Category.GroupFooter'' has been tweaked appropriately. Thus, you can create a page that automatically creates an alphabetized list of all movies discussed on your wiki by creating links to [=[[!Movies]]=] on each film's page; the resulting automatic list would be on the page ''Category.Movies'' . %0a%0a%25audience%25 authors (advanced)%0a[[#CategoryNesting]]%0a!!Category nesting%0aCategories have the potential for even greater usefulness because [@Category.*@] pages can themselves be placed into categories! To follow an excellent example from John Rankin, let's suppose we have the following film pages in the categories listed to the right:%0a%0a-> [@%0aFilm.ShaunOfTheDead [[!Horror]] [[!Comedy]] [[!2003]]%0aFilm.InMyFathersDen [[!Drama]] [[!2004]]%0aFilm.TheCorporation [[!Documentary]] [[!2003]]%0a@]%0a%0aNow then, we can create [@Category.Horror@], [@Category.Comedy@], [@Category.Drama@], and [@Category.Documentary@], and in each one of those pages we put [@[[!Genre]]@]. In [@Category.2003@] and [@Category.2004@], we put [@[[!Year]]@].%0a%0aSo, what happens when we display [@Category.Genre@] ? We see links to "Comedy", "Drama", "Documentary", and "Horror", because they're in the Genre category. When we click on one of those links, we see all of the films listed in one of those categories. Similarly, if we click on [@Category.Year@], we see links to "2003" and "2004", each of which in turn displays the list of films for that year.%0a%0aFinally, in [@Category.Genre@] and [@Category.Year@] we can put [@[[!Category]]@], which makes them "top-level" categories reachable from the [@Category.Category@] page. Voila, we now have an instant "hierarchy":%0a%0a-> [@%0aCategory.Category%0a Category.Genre%0a Category.Comedy%0a Film.ShaunOfTheDead%0a Category.Drama%0a Film.InMyFathersDen%0a Category.Documentary%0a Film.TheCorporation%0a Category.Horror%0a Film.ShaunOfTheDead%0a Category.Year%0a Category.2003%0a Film.ShaunOfTheDead%0a Film.TheCorporation%0a Category.2004%0a Film.InMyFathersDen%0a@]%0a%0aNote however that this isn't a "strict" hierarchy--i.e., any page or category can appear simultaneously in multiple categories. For example, [@Category.Documentary@] could be a member of both the Genre and top-level category listings.%0a%0aEach category page can have content text before the generated list, e.g., to give a generic description of things in the category. (Or it can be empty, which works fine.) It can also contain associations to related categories ("see also" references). For example, in a tourism wiki, the ''bed and breakfast" category might contain a see-also reference to the "self-catering" category.%0a%0a%25audience%25 administrators (intermediate)%0a!!The guts of the category markup%0aAs mentioned, all of the necessary markup features for Categories are enabled by default in current releases of PmWiki 2.0, but here's how they work for those who are interested. The use of the Category group as the repository for all categories is determined by setting the $CategoryGroup variable, and the special [=[[!Subject]]=] markup is activated by a call to the Markup() function:%0a %0a-> [@SDV($CategoryGroup,'Category');%0aMarkup('[[!','%3clinks','/\[\[!([^\|\]] ?)\]\]/',%0a "%3cspan class='category'>[[$CategoryGroup/$1]]%3c/span>");%0a@]%0a%0a%0a!!Coming up with good category schemes%0aThe hard part about using categories is choosing a good vocabulary. Site content managers may wish to follow the Guidelines for the establishment and development of monolingual thesauri (ISO 2788-1986) and the Guidelines for the establishment and development of multilingual thesauri (ISO 5964-1985). Questions to think about include:%0a* whether a scheme already exists and can be reused%0a* number of levels in a multilevel scheme (not too shallow, not too deep -- e.g. 3)%0a* number of categories per page (not too many, not too few -- e.g. 3)%0a* consistent use of singular ([@[[Mercury]] is a [[!planet]]@]) or plural ([@[[Mercury]] is in the [[!planets]] category@])%0a* disambiguation and use of phrases ([@[[!musical instruments]]@] and [@[[!medical instruments]]@]) or [[Cookbook:Subpage Markup]] ([@[[!Instruments*Musical]]@] and [@[[!Instruments*Medical]]@])%0a%0aOr you can just let people use whatever category terms they find meaningful. A vocabulary (or "folksonomy") will emerge over time.%0a%0a!!Showing a list of categories%0a%0aTo show a list of categories we can use a pagelist for the pages in the category group. %0aFor instance the following will list pages in the Category group, put it on page [[Category.Category]] for convenience, or on any other page:%0a%0a->[@(:pagelist group=Category list=normal fmt=#title:)@]%0a%0aBut there is a problem: Just adding a category markup to a page will not create a corresponding category page, even though following the link will show the page with a list of pages linking to it!\\%0aTo have category pages automatically created in group 'Category' add the following to config.php:%0a%0a->[@$AutoCreate['/^Category\./'] = array('ctime' => $Now, 'text' => $page['text']);@]%0a%0aChange 'Category' to the name of your category group. You can also add more definitions for more category groups, useful if you use a recipe like Cookbook:Tagger which allows multiple category groups.%0a%0aSee also [[PmWiki/EditVariables#AutoCreate]]%0a -time=1234620728 +text=(:Summary:Categories are a way to organize and find related pages:)%0a(:keywords categories, tags:)%0a(:Audience: authors (intermediate) :)%0a%0a!!Purpose of categories%0aCategories (also known as "tags") are a way to organize and find related pages. Categories are implemented by default in PmWiki 2, and in most wikis they don't require any special code or markup, they're just a useful convention. The idea is that every page that falls into a particular subject area should have a link to a shared page containing links to other pages on that subject. These pages are created in the ''Category'' group, and thus these subject areas are called "categories".%0a%0a!!Using categories%0aGetting categories to work requires two steps, the first of which is adding links to each category. A category named Subject is created by adding a link to [=Category.Subject=] on any page. When you add the link to a page, the page can be described as being ''in'' the category "Subject". %0a%0aThere is a special markup for creating these links which makes categories work more smoothly: [=[[!Subject]]=] will create a link to Category.Subject. So [=[[!Subject]]=] is a kind of shortcut to the page Subject in the category group.%0a%0aIf you click on the category links on a page, initially you'll just be taken to an empty page named ''Category.Subject''. The second step in setting up categories is to modify the behavior of pages in the category group so that they will display a list of all pages containing links to ''Category.Subject''. This is relatively simple to do:%0a%0a# Open the page [[Category.GroupFooter]] for editing. (Be careful : the group "Category" may be called otherwise in international wikis.)%0a# Add the line [@(:pagelist link={*$FullName} list=normal:)@]%0a# Save the edits.%0a%0aThis will cause the footer on every page in the ''Category'' group to display a list of links to pages that reference that page in the category group.%0a%0aIt is worth noting that rather than adding this to Category.GroupFooter, the pagelist directive can be added to Category.GroupHeader to similar effect; it just depends on whether you'd prefer to have the list of pages appear before or after any text that you add to the individual category pages (which can be edited just like normal pages).%0a%0aBecause we use the normal [[Cookbook:PagelistExplained|PageList]] @@link=@@ markup, you can use it not only in the category group. If you want to show all pages belonging to the category Subject you can use on any wiki page [@(:pagelist link=Category.Subject list=normal:)@].%0a%0aSimilarly, there's no requirement that a "category page" has to be in the ''Category'' group -- any page can define a "category" of pages that link to it.%0a%0aAn administrator can override the default category group name of "Category" by setting the $CategoryGroup variable in ''config.php'' to another group name.%0a%0aA page author can also link to a category list without adding the linking page to the category by using [=[[ {Category.Subject$PageUrl} | Subject ]]=]. This will create a link that looks like [=[[!Subject]]=] without adding the linking page to the category listing.%0a%0a!!!Recap%0aSo, by adding the link [=[[!Subject]]=] to a page, a link to that page will automatically appear on the page ''Category.Subject'', as long as ''Category.GroupFooter'' has been tweaked appropriately. Thus, you can create a page that automatically creates an alphabetized list of all movies discussed on your wiki by creating links to [=[[!Movies]]=] on each film's page; the resulting automatic list would be on the page ''Category.Movies'' . %0a%0a%25audience%25 authors (advanced)%0a[[#CategoryNesting]]%0a!!Category nesting%0aCategories have the potential for even greater usefulness because [@Category.*@] pages can themselves be placed into categories! To follow an excellent example from John Rankin, let's suppose we have the following film pages in the categories listed to the right:%0a%0a-> [@%0aFilm.ShaunOfTheDead [[!Horror]] [[!Comedy]] [[!2003]]%0aFilm.InMyFathersDen [[!Drama]] [[!2004]]%0aFilm.TheCorporation [[!Documentary]] [[!2003]]%0a@]%0a%0aNow then, we can create [@Category.Horror@], [@Category.Comedy@], [@Category.Drama@], and [@Category.Documentary@], and in each one of those pages we put [@[[!Genre]]@]. In [@Category.2003@] and [@Category.2004@], we put [@[[!Year]]@].%0a%0aSo, what happens when we display [@Category.Genre@] ? We see links to "Comedy", "Drama", "Documentary", and "Horror", because they're in the Genre category. When we click on one of those links, we see all of the films listed in one of those categories. Similarly, if we click on [@Category.Year@], we see links to "2003" and "2004", each of which in turn displays the list of films for that year.%0a%0aFinally, in [@Category.Genre@] and [@Category.Year@] we can put [@[[!Category]]@], which makes them "top-level" categories reachable from the [@Category.Category@] page. Voila, we now have an instant "hierarchy":%0a%0a-> [@%0aCategory.Category%0a Category.Genre%0a Category.Comedy%0a Film.ShaunOfTheDead%0a Category.Drama%0a Film.InMyFathersDen%0a Category.Documentary%0a Film.TheCorporation%0a Category.Horror%0a Film.ShaunOfTheDead%0a Category.Year%0a Category.2003%0a Film.ShaunOfTheDead%0a Film.TheCorporation%0a Category.2004%0a Film.InMyFathersDen%0a@]%0a%0aNote however that this isn't a "strict" hierarchy--i.e., any page or category can appear simultaneously in multiple categories. For example, [@Category.Documentary@] could be a member of both the Genre and top-level category listings.%0a%0aEach category page can have content text before the generated list, e.g., to give a generic description of things in the category. (Or it can be empty, which works fine.) It can also contain associations to related categories ("see also" references). For example, in a tourism wiki, the ''bed and breakfast" category might contain a see-also reference to the "self-catering" category.%0a%0a%25audience%25 administrators (intermediate)%0a!!The guts of the category markup%0aAs mentioned, all of the necessary markup features for Categories are enabled by default in current releases of PmWiki 2.0, but here's how they work for those who are interested. The use of the Category group as the repository for all categories is determined by setting the $CategoryGroup variable, and the special [=[[!Subject]]=] markup is activated by a call to the Markup() function:%0a %0a-> [@SDV($CategoryGroup,'Category');%0aMarkup('[[!','%3clinks','/\[\[!([^\|\]] ?)\]\]/',%0a "%3cspan class='category'>[[$CategoryGroup/$1]]%3c/span>");%0a@]%0a%0a%0a!!Coming up with good category schemes%0aThe hard part about using categories is choosing a good vocabulary. Site content managers may wish to follow the Guidelines for the establishment and development of monolingual thesauri (ISO 2788-1986) and the Guidelines for the establishment and development of multilingual thesauri (ISO 5964-1985). Questions to think about include:%0a* whether a scheme already exists and can be reused%0a* number of levels in a multilevel scheme (not too shallow, not too deep -- e.g. 3)%0a* number of categories per page (not too many, not too few -- e.g. 3)%0a* consistent use of singular ([@[[Mercury]] is a [[!planet]]@]) or plural ([@[[Mercury]] is in the [[!planets]] category@])%0a* disambiguation and use of phrases ([@[[!musical instruments]]@] and [@[[!medical instruments]]@]) or [[Cookbook:Subpage Markup]] ([@[[!Instruments*Musical]]@] and [@[[!Instruments*Medical]]@])%0a%0aOr you can just let people use whatever category terms they find meaningful. A vocabulary (or "folksonomy") will emerge over time.%0a%0a!!Showing a list of categories%0a%0aTo show a list of categories we can use a pagelist for the pages in the category group. %0aFor instance the following will list pages in the Category group, put it on page [[Category.Category]] for convenience, or on any other page:%0a%0a->[@(:pagelist group=Category list=normal fmt=#title:)@]%0a%0aBut there is a problem: Just adding a category markup to a page will not create a corresponding category page, even though following the link will show the page with a list of pages linking to it!\\%0aTo have category pages automatically created in group 'Category' add the following to config.php:%0a%0a->[@$AutoCreate['/^Category\./'] = array('ctime' => $Now, 'text' => $page['text']);@]%0a%0aChange 'Category' to the name of your category group. You can also add more definitions for more category groups, useful if you use a recipe like Cookbook:Tagger which allows multiple category groups.%0a%0aSee also [[PmWiki/EditVariables#AutoCreate]]%0a +time=1244828035 Index: wikilib.d/PmWiki.IncludeOtherPages =================================================================== --- wikilib.d/PmWiki.IncludeOtherPages (.../pmwiki-2.2.1) (revision 2344) +++ wikilib.d/PmWiki.IncludeOtherPages (.../pmwiki-2.2.2) (revision 2344) @@ -1,11 +1,11 @@ version=pmwiki-2.2.1 ordered=1 urlencoded=1 -agent=Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.19) Gecko/20081216 Ubuntu/8.04 (hardy) Firefox/2.0.0.19 -author=Petko +agent=Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10 +author=simon charset=ISO-8859-1 -csum=rm profile link -host=81.65.14.164 +csum=adjust example +host=202.37.32.2 name=PmWiki.IncludeOtherPages -rev=92 -targets=PmWiki.Links,PmWiki.WikiGroup,PmWiki.ConditionalMarkup,PmWiki.PageTextVariables,PmWiki.PageVariables,Site.PageListTemplates,PmWiki.WikiStyles,PmWiki.WikiAdministrator,PmWiki.PageLists -text=(:Summary: Include contents from other PmWiki pages:)%0a(:Audience: authors (intermediate) :)%0aThe [@(:include:)@] directive makes it possible to insert (or [[Wikipedia:Transclusion|"transclude"]]) the contents of other pages into the current wiki page. All of the include directives below perform a straight text inclusion. In particular, any page [[links]] in the included text are assumed to link to pages in the current [[(wiki) group]] if not otherwise qualified.%0a%0a!! Basic syntax%0a%0a* [=(:include PageName:)=] %0a-> with pagename includes the full page from the same group.%0a* [={Group/PageName$:=][[#includeptv|PTVar]]}%0a-> includes a named variable from a page%0a* [=(:=]include [[#includefullname|FullName]]#[[#incluceanchor|fromanchor]]#[[#includeanchor|toanchor]]%0a [[#includelines|lines]]=''123'' \%0a [[#includeself|self]]=''0'' \%0a [[#includebasepage|basepage]]=''abc'' \%0a :)%0a-> includes a page or pages according to the parameters supplied. Parameters are optional.%0a[[#firstanchor]]%0a%0a-%3c%25green%25Note%25font-size:small%25: [[Conditional Markup]] does not work with Include Other Pages or [[Page Text Variables]]. Pagetextvars don't honor [@(:if:)@]. This is the same way that doing [@(:include OtherPage#section:)@] doesn't look to see if [@[[#section]]@] is inside of an [@(:if:)...(:ifend:)@] construct of some sort.%0a%0aWhen [[Conditional Markup|testing variables]] in included pages the context of the page (source or target) can be useful.%0aSee [[PmWiki/PageVariables|special references]] for details.%0a%0a%0a!! Parameters%0aParameters that are not key words, ie names and anchors, may be repeated%0a%0a%0a!!![[#includefullname]] Named pages%0a-%3c[@(:include PageName:)@]%0a-%3c[@(:include Group.PageName:)@]%0a-%3c[@(:include PageName GroupName.Pagename:)@]%0a->Includes the entire text of another page into the current page. Multiple pages may be specified, but only the first available is included.%0a%0a%0a!!! [[#includeanchor]] Anchors%0a|| width=*%0a||[@(:include PageName#from#to:)@] ||include lines from ''`PageName'' between the [@[[#from]]@] and [@[[#to]]@] [[Links#anchors|anchors]]%0a||[@(:include PageName#from#:)@] ||include all lines after [@[[#from]]@] to the end of the page%0a||[@(:include PageName##to:)@] ||include all lines from the start of the page to [@[[#to]]@]%0a||[@(:include PageName#from:)@] ||include everything between [@[[#from]]@] and the next anchor%0a||[@(:include PageName#:)@] ||include everything from the top of the page to the first anchor%0a||[@(:include PageName##:)@] ||include everything from the top of the page to the bottom of the page%0a-> %25note%25 Note: do not put whitespace between "#from" "#to"%0a%0a-> %25note%25 Note: text on the same line as a closing anchor but preceding the closing anchor will '''NOT''' be included in the text. Example Below:%0a-->[@[[#start]]some text on the first line@]%0a-->[@some text on the last line [[#end]]@]%0a->%25note%25The above, when included via [@(:include PageName#start:)@] will have the text on the first line but not the text on the last line.%0a%0a-%3c[@(:include Page1 Page2 #from#to:)@]%0a->Include from the first available of Page1, Page2 between the [@[[#from]]@] and [@[[#to]]@] %0a-> %25note%25 Note: put whitespace between "Page2" and "#from#to". The same anchors "#from#to" should be in both pages. If proper anchors are missing in the first available of Page1, Page2 the whole contents of the page is included.%0a-> This does not seem to work in 2.2 betas. See Cookbook:IncludeSection for a fix.%0a%0a-%3c[@(:include Page1#from1#to1 Page2#from2#to2:)@]%0a->Include the first from the first available of Page1 (between the [@[[#from1]]@] and [@[[#to1]]@]) or Page2 (between the [@[[#from2]]@] and [@[[#to2]]@] ) %0a%0a-%3c%25green%25Note%25%25: Previous versions of PmWiki allowed whitespace between [@#from@] and [@#to@] anchors even though it was not designed to. Newer versions do not allow whitespace anymore. To re-enable this "exploited misbehavior" put this into your config.php or farmconfig.php%0a%0a->[@Markup('includeanchors', '%3cinclude', '/(\\(:include.*?#\\w+)\\s+(#\\w+)/', '$1$2');@]%0a%0a%0a!!! [[#includelines]] Lines=%0a-%3c [@(:include PageName lines=10:)@]%0a-%3c [@(:include PageName lines=5..10:)@]%0a-%3c [@(:include PageName lines=5..:)@]%0a-> Include the first 10 lines, lines 5-10, or lines 5 and up from ''`PageName''. A "line" in this context refers to a line of source. ''Thus a line may be a paragraph that wraps over several lines on the screen, or a completely blank line.''%0a%0a-%3c [@(:include Page1 Page2 Page3 lines=1..5:)@]%0a-> Include the first five lines from the first available of Page1, Page2, or Page3. (To include lines from a list of pages, use a separate include for each.)%0a%0a%0a!!! [[#includeself]] Self=%0a-%3c [@(:include PageName self=0:)@]%0a-> The parameter @@self@@ can be @@0@@ or @@1@@. It tells the include directive if it is allowed to include the current page. This is useful if PageName is a variable like [@{$Name}@] and you want to prevent the directive from including the current page.%0a%0a%0a!!! [[#includeptv]] [[Page text variables]]%0a-%3c [@{Group/PageName$:Var}@]%0a-> Includes definition list values from an (optional) page as [[page text variables]]. These are defined using a definition list ([@:item:description@]), simple colon delimiter ([@item:description@]), or special markup ([@(:item:description:)@]).%0a%0a!!! [[#includebasepage]] Basepage=%0a%0a-%3c [@(:include PageName basepage=BasePageName:)@]%0a-> Include PageName, but treat all relative links and page variables on ''PageName`'' as relative to ''BasePageName''.%0aIf @@basepage=@@ is provided all relative links and page variables are interpreted relative %0ato basepage.%0aSo, if one creates [@TemplateName@] as%0a-> [@Name: {$:Name}%0aAddress: {$:Address}@]%0athen the directive%0a-> [@(:include TemplateName basepage=PageName:)@]%0awill retrieve the contents of [@TemplateName@], treating any page variables and links as being relative to [@PageName@]. %0aIn particular, the values for [@{$:Name}@] and [@{$:Address}@] will be taken from [@PageName@], but things like [@{$Title}@] and [@{$LastModifiedBy}@] would also work here.%0a%0aYou can also specify variable values inline with the include statement, and refer to the variables in the template using the [@{$$variable1}@] format:%0a-> [@(:include TemplatePage variable1="value":)@]%0a%0aThis assumes that a site has $EnableRelativePageVars enabled, which will likely be the default in PmWiki 2.2.0 -- currently%0a$EnableRelativePageVars is disabled by default to help people that may be upgrading from 2.1.x.%0a%0a!!!! Basepage usage%0aThe primary purpose of basepage is to allow the include of pages in a way that mimics the 2.1.x behavior where page variables %0aand links are interpreted relative to the currently displayed page.%0aThis is done with:%0a-> [@(:include SomeOtherPage basepage='' :)@]%0a -or-%0a-> [@(:include SomeOtherPage basepage={*$FullName} :)@]%0a%0aIt also allows [=GroupHeader and GroupFooter=] to have their page variables and links be relative to the currently displayed page %0a(instead of [=GroupHeader and GroupFooter=]):%0a>>pre%3c%3c%0a ## PmWiki default $GroupHeaderFmt setting%0a $GroupHeaderFmt = %0a [='(:include {$Group}.GroupHeader self=0 basepage={*$FullName}:)(:nl:)';=]%0a>>%3c%3c%0a%0aOtherwise, using {$Name} inside of a [=GroupHeader=] would display '[=GroupHeader=]' and not the name of the currently displayed page.%0a%0aAs has been discovered, the basepage= parameter is general enough that it can also be used as a templating engine, so that%0awe can grab a template page containing variables that are then filled in with values from another page:%0a->[@(:include TemplatePage basepage=DataPage :)@]%0a%0aAnd, of course, a single TemplatePage can actually contain multiple templates delimited by anchors, so that we end up with a syntax eerily similar'^[[#footnote|#]]^' to pagelist-templates:%0a>>pre%3c%3c%0a [@(:include TemplatePage#abc basepage=DataPage :)@]%0a (:include TemplatePage#def basepage=DataPage :)%0a (:include TemplatePage#xyz basepage=DataPage :)%0a>>%3c%3c%0a%0aSo then [=TemplatePage=] can use a syntax like:%0a>>pre%3c%3c%0a [@%0a [[#abc]]%0a ...template stuff here...%0a [[#abcend]]%0a @]%0a>>%3c%3c%0a%0aand it's possible to display [=TemplatePage=] as a template without it being interpreted... same as we do for [[Site.PageListTemplates]].%0a%0a%0a-%3c [[#footnote]] [- '^[1]^'Okay, maybe it's not so eerie, given that the pagelist template code actually uses the same function as (:include:) to grab its templates. But it's still a useful parallel. -]%0a%0a!! See Also%0a* [[PmWiki/Page text variables]] {PmWiki/PageTextVariables$:Summary}%0a* [[Cookbook:IncludeUrl]] {Cookbook.IncludeUrl$:Summary}%0a%0a!! Styling Note%0aBy default, Included pages or lines cannot be distinguished from other text on the page. To provide a visual indication that this text is special, you can apply [[PmWiki/Wiki Styles]]. For example:%0a%0a(:markup:)%0a%25define=leftborder border-left="2px solid #88f" margin-left="2px" padding="1px 0 3px 10px"%25%0aWhat is PmWiki?%0a>>leftborder%3c%3c (:include PmWiki.PmWiki lines=1..4:) %0a>>%3c%3c%0a''Have a very nice day!''%0a(:markupend:)%0a%0a!!! Parameter References%0a%0aAny parameters supplied to an include statement (whether they are keywords or not) are accessible inside the included page as a special [@{$$...}@] variable of the same name. This feature can be used to provide extra information to use when displaying the included page.%0a%0a!!! Notes%0a* You can also say [@(:include My/Page#myanchor lines=4:)@] which starts from, and includes, the line with the anchor [@[[#myanchor]]@] for four lines.%0a%0a%0a>>faq%3c%3c [[#faq]]%0a%0aQ: [[#maxincludes]] What's the maximum number of includes that can exist in a page? %0a-> My site seems to stop including after 48 includes. ($MaxIncludes)%0a%0aA: By default, PmWiki places a limit of 50 include directives for any given page, to prevent runaway infinite loops and other situations that might eat up server resources. (Two of these are GroupHeader and GroupFooter.) The limit can be modified by the [[wiki administrator]] via the $MaxIncludes variable.%0a%0aQ: Is there any way to include from a group of pages without specifying by exact name, e.g. between Anchor X and Y from all pages named IFClass-* ?%0aA: This can be achieved using [[page lists]].%0a%0a%0aQ: There appears to be a viewing issue when the included page contains the [=(:title:)=] directive.%0aA: As of version 2.2.0, the ''last'' title in the page overrides previous ones. In future versions, this may be configurable, but for the moment, best is to place your [=(:title :)=] directive at the bottom of the page, after any includes.%0a -time=1238272170 +rev=100 +targets=PmWiki.Links,PmWiki.WikiGroup,PmWiki.PageTextVariables,PmWiki.ConditionalMarkup,PmWiki.PageVariables,Site.PageListTemplates,PmWiki.WikiStyles,PmWiki.WikiAdministrator,PmWiki.PageLists +text=(:Summary: Include contents from other PmWiki pages:)%0a(:Audience: authors (intermediate) :)%0aThe [@(:include:)@] directive makes it possible to insert (or [[Wikipedia:Transclusion|"transclude"]]) the contents of other pages into the current wiki page. All of the include directives below perform a straight text inclusion. In particular, any page [[links]] in the included text are assumed to link to pages in the current [[(wiki) group]] if not otherwise qualified.%0a%0a!! Syntax%0aThe basic syntax is%0a* [=(:=]include PageName:)%0a-> with pagename includes the full page from the same group.%0a* [={Group/PageName$:=][[#includeptv|PTVar]]}%0a-> includes a [[PageTextVariables|named variable]] from a page, [[(Wiki)Group]] and PageName are options%0a%0aThe full syntax is%0a* [=(:=]include%0a [[#includefullname|FullName]]#[[#includeanchor|fromanchor]]#[[#includeanchor|toanchor]] \%0a [[#includelines|lines]]=''123'' \%0a [[#includeself|self]]=''0'' \%0a [[#includebasepage|basepage]]=''abc'' \%0a [[#includevariable|variable]]=''value'' \%0a :)%0a-> includes a page or pages according to the parameters supplied. Parameters are optional.%0a[[#firstanchor]]%0a%0a-%3c%25green%25Note%25font-size:small%25: [[Conditional Markup]] does not work with Include Other Pages or [[Page Text Variables]]. Pagetextvars don't honor [@(:if:)@]. This is the same way that doing [@(:include OtherPage#section:)@] doesn't look to see if [@[[#section]]@] is inside of an [@(:if:)...(:ifend:)@] construct of some sort.%0a%0aWhen [[Conditional Markup|testing variables]] in included pages the context of the page (source or target) can be useful.%0aSee [[PmWiki/PageVariables|special references]] for details.%0a%0a%0a!! Parameters%0aName parameters with or without anchors, and [[#includevariable| variable]] parameters, may be repeated.%0a%0a[[#includefullname]]%0a!!! Named pages%0a-%3c [@(:include PageName:)@]%0a-%3c [@(:include Group.PageName:)@]%0a-%3c [@(:include PageName GroupName.Pagename:)@]%0a-> Includes the entire text of another page into the current page. Multiple pages may be specified, but only the first available is included.%0a%0a[[#includeanchor]]%0a!!! Anchors%0a|| width=*%0a||[@(:include PageName#from#to:)@] ||include lines from ''`PageName'' between the [@[[#from]]@] and [@[[#to]]@] [[Links#anchors|anchors]]%0a||[@(:include PageName#from#:)@] ||include all lines after [@[[#from]]@] to the end of the page%0a||[@(:include PageName##to:)@] ||include all lines from the start of the page to [@[[#to]]@]%0a||[@(:include PageName#from:)@] ||include everything between [@[[#from]]@] and the next anchor%0a||[@(:include PageName#:)@] ||include everything from the top of the page to the first anchor%0a||[@(:include PageName##:)@] ||include everything from the top of the page to the bottom of the page%0a-> %25note%25 Note: do not put whitespace between "#from" "#to"%0a%0a-> %25note%25 Note: text on the same line as a closing anchor but preceding the closing anchor will '''NOT''' be included in the text. Example Below:%0a--> [@[[#start]]some text on the first line@]%0a--> [@some text on the last line [[#end]]@]%0a-> %25note%25The above, when included via [@(:include PageName#start:)@] will have the text on the first line but not the text on the last line.%0a%0a-%3c [@(:include Page1 Page2 #from#to:)@]%0a-> Include from the first available of Page1, Page2 between the [@[[#from]]@] and [@[[#to]]@] %0a-> %25note%25 Note: put whitespace between "Page2" and "#from#to". The same anchors "#from#to" should be in both pages. If proper anchors are missing in the first available of Page1, Page2 the whole contents of the page is included.%0a-> This does not seem to work in 2.2 betas. See Cookbook:IncludeSection for a fix.%0a%0a-%3c [@(:include Page1#from1#to1 Page2#from2#to2:)@]%0a-> Include the first from the first available of Page1 (between the [@[[#from1]]@] and [@[[#to1]]@]) or Page2 (between the [@[[#from2]]@] and [@[[#to2]]@] ) %0a%0a-%3c %25green%25Note%25%25: Previous versions of PmWiki allowed whitespace between [@#from@] and [@#to@] anchors even though it was not designed to. Newer versions do not allow whitespace anymore. To re-enable this "exploited misbehavior" put this into your config.php or farmconfig.php%0a%0a-> [@Markup('includeanchors', '%3cinclude', '/(\\(:include.*?#\\w+)\\s+(#\\w+)/', '$1$2');@]%0a%0a[[#includelines]]%0a!!! Lines=%0a-%3c [@(:include PageName lines=10:)@]%0a-%3c [@(:include PageName lines=5..10:)@]%0a-%3c [@(:include PageName lines=5..:)@]%0a-> Include the first 10 lines, lines 5-10, or lines 5 and up from ''`PageName''. A "line" in this context refers to a line of source. ''Thus a line may be a paragraph that wraps over several lines on the screen, or a completely blank line.''%0a%0a-%3c [@(:include Page1 Page2 Page3 lines=1..5:)@]%0a-> Include the first five lines from the first available of Page1, Page2, or Page3. (To include lines from a list of pages, use a separate include for each.)%0a%0a[[#includeself]]%0a!!! Self=%0a-%3c [@(:include PageName self=0:)@]%0a-> The parameter @@self@@ can be @@0@@ or @@1@@. It tells the include directive if it is allowed to include the current page. This is useful if PageName is a variable like [@{$Name}@] and you want to prevent the directive from including the current page.%0a%0a[[#includeptv]]%0a!!! [[Page text variables]]%0a-%3c [@{Group/PageName$:Var}@]%0a-> Includes definition list values from an (optional) page as [[page text variables]]. These are defined using a definition list ([@:item:description@]), simple colon delimiter ([@item:description@]), or special markup ([@(:item:description:)@]).%0a%0a[[#includebasepage]]%0a!!! Basepage=%0a%0a-%3c [@(:include PageName basepage=BasePageName:)@]%0a-> Include PageName, but treat all relative links and page variables on ''PageName`'' as relative to ''BasePageName''.%0aIf @@basepage=@@ is provided all relative links and page variables are interpreted relative %0ato basepage.%0aSo, if one creates [@TemplateName@] as%0a-> [@Name: {$:Name}%0aAddress: {$:Address}@]%0athen the directive%0a-> [@(:include TemplateName basepage=PageName:)@]%0awill retrieve the contents of [@TemplateName@], treating any page variables and links as being relative to [@PageName@]. %0aIn particular, the values for [@{$:Name}@] and [@{$:Address}@] will be taken from [@PageName@], but things like [@{$Title}@] and [@{$LastModifiedBy}@] would also work here.%0a%0a!!!! Basepage usage%0aThe primary purpose of basepage is to allow the include of pages in a way that mimics the 2.1.x behavior where page variables %0aand links are interpreted relative to the currently displayed page.%0aThis is done with:%0a-> [@(:include SomeOtherPage basepage='' :)@]%0a -or-%0a-> [@(:include SomeOtherPage basepage={*$FullName} :)@]%0a%0aIt also allows [=GroupHeader and GroupFooter=] to have their page variables and links be relative to the currently displayed page %0a(instead of [=GroupHeader and GroupFooter=]):%0a>>pre%3c%3c%0a ## PmWiki default $GroupHeaderFmt setting%0a $GroupHeaderFmt = %0a [='(:include {$Group}.GroupHeader self=0 basepage={*$FullName}:)(:nl:)';=]%0a>>%3c%3c%0a%0aOtherwise, using {$Name} inside of a [=GroupHeader=] would display '[=GroupHeader=]' and not the name of the currently displayed page.%0a%0aAs has been discovered, the basepage= parameter is general enough that it can also be used as a templating engine, so that%0awe can grab a template page containing variables that are then filled in with values from another page:%0a->[@(:include TemplatePage basepage=DataPage :)@]%0a%0aAnd, of course, a single TemplatePage can actually contain multiple templates delimited by anchors, so that we end up with a syntax eerily similar'^[[#footnote|#]]^' to pagelist-templates:%0a>>pre%3c%3c%0a [@(:include TemplatePage#abc basepage=DataPage :)@]%0a (:include TemplatePage#def basepage=DataPage :)%0a (:include TemplatePage#xyz basepage=DataPage :)%0a>>%3c%3c%0a%0aSo then [=TemplatePage=] can use a syntax like:%0a>>pre%3c%3c%0a [@%0a [[#abc]]%0a ...template stuff here...%0a [[#abcend]]%0a @]%0a>>%3c%3c%0a%0aand it's possible to display [=TemplatePage=] as a template without it being interpreted... same as we do for [[Site.PageListTemplates]].%0a%0a%0a-%3c [[#footnote]] [- '^[1]^'Okay, maybe it's not so eerie, given that the pagelist template code actually uses the same function as (:include:) to grab its templates. But it's still a useful parallel. -]%0a%0a[[#includevariable]]%0a!!! Specifying variables as parameters%0aYou can also specify variable values inline with the include statement, and refer to the variables in the template using the [@{$$variable1}@] format:%0a-> [@(:include TemplatePage variable1="value" variable2="value2":)@]%0a%0aThis assumes that a site has $EnableRelativePageVars enabled, which is recommended in PmWiki 2.2.0 -- but disabled by default to help people upgrading from 2.1.x.%0a%0aFor example, on my included page ("template") I might have this:%0a%0a(:markup class=horiz:)%0a[[#ivars]]%0aHi, {$$Name}, how are you today?%0a[[#ivarsend]]%0a(:markupend:)%0a%0aThen, including that section above (that section is available via the section @@[@{$FullName}#ivars)@]@@) you get this type of behavior:%0a%0a(:markup class=horiz:)%0a(:include {$FullName}#ivars Name=Sam:)%0a(:markupend:)%0a%0a(:markup class=horiz:)%0a(:include {$FullName}#ivars Name=Sally:)%0a(:markupend:)%0a%0a!! See Also%0a* [[PmWiki/Page text variables]] {PmWiki/PageTextVariables$:Summary}%0a* [[Cookbook:IncludeUrl]] {Cookbook.IncludeUrl$:Summary}%0a%0a!! Styling Note%0aBy default, Included pages or lines cannot be distinguished from other text on the page. To provide a visual indication that this text is special, you can apply [[PmWiki/Wiki Styles]]. For example:%0a%0a(:markup:)%0a%25define=leftborder border-left="2px solid #88f" margin-left="2px" padding="1px 0 3px 10px"%25%0aWhat is PmWiki?%0a>>leftborder%3c%3c (:include PmWiki.PmWiki lines=1..4:) %0a>>%3c%3c%0a''Have a very nice day!''%0a(:markupend:)%0a%0a!!! Parameter References%0a%0aAny parameters supplied to an include statement (whether they are keywords or not) are accessible inside the included page as a special [@{$$...}@] variable of the same name. This feature can be used to provide extra information to use when displaying the included page.%0a%0a!!! Notes%0a* You can also say [@(:include My/Page#myanchor lines=4:)@] which starts from, and includes, the line with the anchor [@[[#myanchor]]@] for four lines.%0a%0a%0a>>faq%3c%3c [[#faq]]%0a%0aQ: [[#maxincludes]] What's the maximum number of includes that can exist in a page? %0a-> My site seems to stop including after 48 includes. ($MaxIncludes)%0a%0aA: By default, PmWiki places a limit of 50 include directives for any given page, to prevent runaway infinite loops and other situations that might eat up server resources. (Two of these are GroupHeader and GroupFooter.) The limit can be modified by the [[wiki administrator]] via the $MaxIncludes variable.%0a%0aQ: Is there any way to include from a group of pages without specifying by exact name, e.g. between Anchor X and Y from all pages named IFClass-* ?%0aA: This can be achieved using [[page lists]].%0a%0a%0aQ: There appears to be a viewing issue when the included page contains the [=(:title:)=] directive.%0aA: As of version 2.2.0, the ''last'' title in the page overrides previous ones. In future versions, this may be configurable, but for the moment, best is to place your [=(:title :)=] directive at the bottom of the page, after any includes.%0a +time=1241584858 Index: wikilib.d/PmWiki.Images =================================================================== --- wikilib.d/PmWiki.Images (.../pmwiki-2.2.1) (revision 2344) +++ wikilib.d/PmWiki.Images (.../pmwiki-2.2.2) (revision 2344) @@ -6,7 +6,7 @@ host=81.65.14.164 keywords=graphics, pictures, photos name=PmWiki.Images -rev=165 +rev=167 targets=PmWiki.DocumentationIndex,PmWiki.Links,PmWiki.Uploads,PmWiki.InterMap,PmWiki.WikiStyles -text=(:Summary:Placing images in pages:)%0aTo place an image into a page, enter the address (url) of the image into the markup text. %0aAny ''alternate text'' (used for tooltips and for browsers that do not display images) is placed in double quotes immediately following the image url.%0aA caption can follow separated by a vertical bar (|), and may include simple formatting%0a%0a(:markup:)%0ahttp://pmichaud.com/img/misc/pc.jpg"Paper clips" | [- %25newwin%25 [[ (Wikipedia:Paper_clips | Paper clips ]] are ''fun'' to work with. -]%0a(:markupend:)%0a%0aImages can also be specified as [[upload(s)]]ed files (i.e., [@Attach:image.jpeg@]) and using [[InterMap]] links. %0aBy default PmWiki supports the following image types:%0a(:include PmWiki/Uploads#imagetypes#imagetypesend:)%0a%25note%25 (See also [[PmWiki/Uploads]] and [[#notes|Notes]] below for image files that lack extensions.)%0a%0aTo create a [[link(s)]] to an image (like [[http://pmichaud.com/img/misc/pc.jpg]] as opposed to displaying the image itself), use double brackets to mark the link, as in [@[[http://pmichaud.com/img/misc/pc.jpg]]@] or [@[[Attach:image.jpeg]]@].%0a%0aTo have an image link to another location, use the image as the link text as in %0a(:markup:)%0a[[http://pmwiki.org/ | http://pmichaud.com/img/misc/pc.jpg"PmWiki"]]|Visit '''PmWiki'''%0a(:markupend:)%0aor [@[[http://example.com|Attach:Groupname/image.jpeg]]@].%0a%0a[[#captions]]%0a!! Captions and floating images%0aA caption can be added to an image using a vertical brace and the caption text.%0a%0a(:markup class=horiz:)%0ahttp://pmichaud.com/img/misc/pc.jpg"Paper clips" | '''Figure 1'''%0a(:markupend:)%0a%0aNormally, images are displayed "in line" with the surrounding text. Use [@%25center%25@] to center an image. Use [@%25right%25@] to right-align an image.%0a%0a(:markup:)%0aLorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. %25center%25http://pmichaud.com/img/misc/pc.jpg"Paper clips"%25%25%0a%0aLorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. %25right%25 http://pmichaud.com/img/misc/gem.jpg%25%25%0a(:markupend:) %0a%0aTo left or right-align an image with text wrapping around it, use the [@%25lfloat%25@] or [@%25rfloat%25@] [[WikiStyles]]. %0a%0a(:markup:) [=%0a%25lfloat text-align=center margin-top=5px margin-right=25px margin-bottom=5px margin-left=25px%25 http://pmichaud.com/img/misc/gem.jpg | '''Rock on!'''%0a'''The image is left-aligned, with margins set; the caption is centered; the text wraps on the right side of the image.'''%0a%0aLorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim%0aveniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea%0acommodo consequat. %0a=]%0a%0aThe [@[[%3c%3c]]@] markup breaks floating text, and the text continues at the bottom of the image.%0a%0a(:markup:) [=%0a%25lfloat%25 http://pmichaud.com/img/misc/gem.jpg%0a'''The image is left-aligned, and the text wraps on the right side of the image. The text after the ''[@[[%3c%3c]]@]'' markup continues below the image.'''%0a[[%3c%3c]]%0aLorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. %0a=]%0a%0aUse the [@%25lframe%25@] or [@%25rframe%25@] styles to float an image and place a frame around the image and its caption. The frame can be formatted via wikistyles:%0a%0a(:markup:) [=%0a%25rframe%25 http://pmichaud.com/img/misc/gem.jpg | '''Rock on!'''%0a'''The image is right-aligned, and the text wraps on the left side of the image.'''%0a%0aLorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.%0a%0a%25cframe width=100px bgcolor=lightblue border='3px solid red' padding=20px%25 http://pmichaud.com/img/misc/gem.jpg%0a%0aExample to show failure to fully apply width setting:-%0a%25cframe width=50px bgcolor=lightblue border='3px solid red' padding=20px%25 http://pmichaud.com/img/misc/gem.jpg%0a=]%0a%0aUse [@%25block rframe%25@] to set off multiple images and caption text to be stacked vertically in a right-floating frame.%0a%0a(:markup:) [=%0a%25block rframe width=300px%25http://pmichaud.com/img/misc/gem.jpg\\%0aLorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\\\%0ahttp://pmichaud.com/img/misc/bubble.jpg\\%0aLorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.%25%25%0a%0aText subsequent to the defined block wraps to the left of the frame. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.%0a%0a=]%0a%0a!!Resizing images [[#resizing]]%0a%0aTo resize an image via wikistyles, use [@%25width=50px%25@] or [@%25height=50px%25@] in front of an image. The [@%25thumb%25@] wikistyle is a helpful shortcut for [@%25width=100px%25@].%0a%0a(:markup:) [=%0a%25width=50px%25 http://pmichaud.com/img/misc/bubble.jpg \%0a%25height=50px%25 http://pmichaud.com/img/misc/bubble.jpg \%0a%25thumb%25 http://pmichaud.com/img/misc/bubble.jpg%0a=]%0a%0aNote: Resizing an image via wikistyles only affects how it is displayed in a browser; it does not reduce the transfer size of the image itself - hence resizing via wikistyles is not an acceptable method of generating a page-full of images, or 'gallery'.%0a%0aIf you want a resized image within a link, you have to specify the size before the link as well as close it off with a [=%25%25=].%0a%0a(:markup:)%0a%25width=134 height=100%25[[http://pmwiki.org/ | http://pmichaud.com/img/misc/pc.jpg"PmWiki"]]%25%25%0a(:markupend:)%0a%0aTo open the link in new window, you place [=%25newwin%25=] before the size specification.%0a%0a(:markup:)%0a%25newwin%25%25width=134 height=100%25[[http://pmwiki.org/ | http://pmichaud.com/img/misc/pc.jpg"PmWiki"]]%25%25%0a(:markupend:)%0a%0aResized images using [@%25thumb%25@] can also be floated with frames, as well as made into links.%0a%0a(:markup:) %0a%25lframe thumb%25 [[http://pmichaud.com/img/misc/bubble.jpg | http://pmichaud.com/img/misc/bubble.jpg"Burst the bubble"]] | [-Bubble-]%0a%25lframe thumb%25 http://pmichaud.com/img/misc/pc.jpg"Clip the ticket" | [-Paper Clips-]%0a%25lframe thumb%25 [[DocumentationIndex | http://pmichaud.com/img/misc/gem.jpg"Visit the Documentation Index"]] | [[DocumentationIndex | [-Rock On-]]]%0a(:markupend:)%0a%0a[[#links]]%0a!!! Images as [[PmWiki/links]]%0aTo use an image as a link specify an image instead of text in the [[PmWiki/link(s)]] markup.%0a(:markup:)%0a[[PmWiki/Links | http://pmichaud.com/img/2003/atc-1.gif"Information about wiki links"]]%0a(:markupend:)%0a%0a[[#notes]]%0a!!!Notes%0a* '''An image file that lacks a correct extension''' can be displayed by addition of a "false" extension to the URL. For example, if the url is [@http://example.com/script/tux@], add a fake query string on the end with the desired extension (e.g., [@http://example.com/script/tux?format=.png@]). If query strings are unsuitable, a fragment identifier should work, e.g. [@http://example.com/script/tux#file.png@].%0a%0a* Relative width is possible by using percentages.%0a(:markup:)%0a%25width=10pct%25 http://pmichaud.com/img/misc/bubble.jpg \%0a%25height=30pct%25 http://pmichaud.com/img/misc/bubble.jpg %0a(:markupend:)%0a%0a* '''Flowing text is possible, like captions, within a frame'''%0a(:markup:)%0a>>lframe width=130px%3c%3c%0a%25thumb width=130%25 [[http://pmichaud.com/img/misc/bubble.jpg | http://pmichaud.com/img/misc/bubble.jpg"Burst the bubble"]] | [--Long caption for an image like [[http://pmichaud.com/img/misc/bubble.jpg | the bubble]]. This is just to show some text flowing within the frame.--]%0a>>%3c%3c%0a(:markupend:)%0a%0a%0a'''Unable to upload images?''' If you get messages telling you that the upload was not able to complete for some reason, here's something to check. If your web host has your web site%0a-> [=http://www.website.com=]%0awith username%0a-> ''username''%0athe system path (not http) to your website could be at%0a-> /home/users/~username/public_html%0aIf you have your wiki installed at what you think is the system's root directory%0a-> /pmwiki%0ayour system's path to the wiki uploads directory might actually be%0a-> /home/users/~username/public_html/pmwiki/uploads%0ainstead of the simpler%0a-> /pmwiki/uploads%0aThat's how I was able to get [[mine -> mailto:ispinn aatt gmail ddoott com]] working.%0a%0a!!!See also%0a* [[Cookbook:Images]] - adding image galleries, automatic thumbnails, background images and more. %0a%0a!!!Credits%0aThe images on this page were obtained from http://flickr.com and are redistributed under a Creative Commons License.%0a%0a(:keywords graphics, pictures, photos:)%0a%0a>>faq%3c%3c [[#faq]]%0a%0aQ: Is it possible to link an image on PmWiki without using a fully qualified URL?%0aA: Yes. For images that are attachments, the general format is [@Attach:Groupname/image.gif@]. To link to an image that is on the same server, use [@Path:/path/to/image.gif@].%0a%0aQ: Can I attach a client image file on PmWiki?%0aA: Yes, see [[PmWiki/Uploads]] .%0a%0aQ: How can I include a page from another group that contains an attached image?%0aA: Include the page in the normal way, ie [@(:include GroupName.Pagename:)@]. In the page to be included (that contains the image) change [@Attach:filename.ext@] to [@Attach:{$Group}./filename.ext@]. %0a%0aQ: Why, if I put an image with rframe or rfloat and immediatly after that I open a new page section with ! the section title row is below the image instead of on the left side?%0aA: Because the CSS for '''headings''' such as ! contains an element '''clear:both''' which forces this behaviour. Redefine the CSS locally if you want to stop this happening, but I think the bottom border (that underlines the heading) would need further re-definition. I just use bolding for the title, and 4 dashes below [=-=]--- to separate a new section, and it saves the effort of fiddling with the core definitions.%0a%0aUnlike the '''lframe''' and '''rframe''' directives, '''cframe''' does not fully honour the width setting. While the frame itself resizes to match the request, the enclosed image does not, and retains its original width. Effect is the same in IE and Fx. I've added an example beneath the standard example above.%0a%0aQ: Is it possible to disallow all images? I already disabled uploads but I also want to disallow external images from being shown on my wiki pages.%0a%0aA: Yes, add to config.php @@DisableMarkup('img');@@%0a%0aQ: How can I make it so that when I place an image in a page, the block of text it is in is a %3cp> (paragraph) rather than a %3cdiv> (division)?%0a%0aA: If you just want it to happen for a single image (instead of all), then%0atry putting [@[==]@] at the beginning of the line, as in:%0a%0a->[@[==] http://www.pmwiki.org/pub/pmwiki/pmwiki-32.gif@]%0a%0aHaving [@[==]@] at the beginning of a line forces whatever follows to%0abe part of a paragraph.%0a%0aQ: Is there any way to use relative paths for images?%0aA: See Cookbook:RelativeLinks and $EnableLinkPageRelative.%0a%0aQ: Is there a way to attach a BMP and have it display rather than link?%0aA: PmWiki supports @@.bmp@@ images out of the box. If you insist on using an uppercase extension see Cookbook:AddImageType.%0a%0aQ: Is there a way to have a table to the left or right of an image?%0aA: Yes, see [[(http://www.pmwiki.org/wiki/Test/)TableAndImage]].%0a -time=1238271218 +text=(:Summary:Placing images in pages:)%0aTo place an image into a page, enter the address (url) of the image into the markup text. %0aAny ''alternate text'' (used for tooltips and for browsers that do not display images) is placed in double quotes immediately following the image url.%0aA caption can follow separated by a vertical bar (|), and may include simple formatting%0a%0a(:markup:)%0ahttp://pmichaud.com/img/misc/pc.jpg"Paper clips" | [- %25newwin%25 [[ (Wikipedia:Paper_clips | Paper clips ]] are ''fun'' to work with. -]%0a(:markupend:)%0a%0aImages can also be specified as [[upload(s)]]ed files (i.e., [@Attach:image.jpeg@]) and using [[InterMap]] links. %0aBy default PmWiki supports the following image types:%0a(:include PmWiki/Uploads#imagetypes#imagetypesend:)%0a%25note%25 (See also [[PmWiki/Uploads]] and [[#notes|Notes]] below for image files that lack extensions.)%0a%0aTo create a [[link(s)]] to an image (like [[http://pmichaud.com/img/misc/pc.jpg]] as opposed to displaying the image itself), use double brackets to mark the link, as in [@[[http://pmichaud.com/img/misc/pc.jpg]]@] or [@[[Attach:image.jpeg]]@].%0a%0aTo have an image link to another location, use the image as the link text as in %0a(:markup:)%0a[[http://pmwiki.org/ | http://pmichaud.com/img/misc/pc.jpg"PmWiki"]]|Visit '''PmWiki'''%0a(:markupend:)%0aor [@[[http://example.com|Attach:Groupname/image.jpeg]]@].%0a%0a[[#captions]]%0a!! Captions and floating images%0aA caption can be added to an image using a vertical brace and the caption text.%0a%0a(:markup class=horiz:)%0ahttp://pmichaud.com/img/misc/pc.jpg"Paper clips" | '''Figure 1'''%0a(:markupend:)%0a%0aNormally, images are displayed "in line" with the surrounding text. Use [@%25center%25@] to center an image. Use [@%25right%25@] to right-align an image.%0a%0a(:markup:)%0aLorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. %25center%25http://pmichaud.com/img/misc/pc.jpg"Paper clips"%25%25%0a%0aLorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. %25right%25 http://pmichaud.com/img/misc/gem.jpg%25%25%0a(:markupend:) %0a%0aTo left or right-align an image with text wrapping around it, use the [@%25lfloat%25@] or [@%25rfloat%25@] [[WikiStyles]]. %0a%0a(:markup:) [=%0a%25lfloat text-align=center margin-top=5px margin-right=25px margin-bottom=5px margin-left=25px%25 http://pmichaud.com/img/misc/gem.jpg | '''Rock on!'''%0a'''The image is left-aligned, with margins set; the caption is centered; the text wraps on the right side of the image.'''%0a%0aLorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim%0aveniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea%0acommodo consequat. %0a=]%0a%0aThe [@[[%3c%3c]]@] markup breaks floating text, and the text continues at the bottom of the image.%0a%0a(:markup:) [=%0a%25lfloat%25 http://pmichaud.com/img/misc/gem.jpg%0a'''The image is left-aligned, and the text wraps on the right side of the image. The text after the ''[@[[%3c%3c]]@]'' markup continues below the image.'''%0a[[%3c%3c]]%0aLorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. %0a=]%0a%0aUse the [@%25lframe%25@] or [@%25rframe%25@] styles to float an image and place a frame around the image and its caption. The frame can be formatted via wikistyles:%0a%0a(:markup:) [=%0a%25rframe%25 http://pmichaud.com/img/misc/gem.jpg | '''Rock on!'''%0a'''The image is right-aligned, and the text wraps on the left side of the image.'''%0a%0aLorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.%0a%0a%25cframe width=100px bgcolor=lightblue border='3px solid red' padding=20px%25 http://pmichaud.com/img/misc/gem.jpg%0a%0aExample to show failure to fully apply width setting:-%0a%25cframe width=50px bgcolor=lightblue border='3px solid red' padding=20px%25 http://pmichaud.com/img/misc/gem.jpg%0a=]%0a%0aUse [@%25block rframe%25@] to set off multiple images and caption text to be stacked vertically in a right-floating frame.%0a%0a(:markup:) [=%0a%25block rframe width=300px%25http://pmichaud.com/img/misc/gem.jpg\\%0aLorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\\\%0ahttp://pmichaud.com/img/misc/bubble.jpg\\%0aLorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.%25%25%0a%0aText subsequent to the defined block wraps to the left of the frame. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.%0a%0a=]%0a%0a!!Resizing images [[#resizing]]%0a%0aTo resize an image via wikistyles, use [@%25width=50px%25@] or [@%25height=50px%25@] in front of an image. The [@%25thumb%25@] wikistyle is a helpful shortcut for [@%25width=100px%25@].%0a%0a(:markup:) [=%0a%25width=50px%25 http://pmichaud.com/img/misc/bubble.jpg \%0a%25height=50px%25 http://pmichaud.com/img/misc/bubble.jpg \%0a%25thumb%25 http://pmichaud.com/img/misc/bubble.jpg%0a=]%0a%0aNote: Resizing an image via wikistyles only affects how it is displayed in a browser; it does not reduce the transfer size of the image itself - hence resizing via wikistyles is not an acceptable method of generating a page-full of images, or 'gallery'.%0a%0aIf you want a resized image within a link, you have to specify the size before the link as well as close it off with a [=%25%25=].%0a%0a(:markup:)%0a%25width=134 height=100%25[[http://pmwiki.org/ | http://pmichaud.com/img/misc/pc.jpg"PmWiki"]]%25%25%0a(:markupend:)%0a%0aTo open the link in new window, you place [=%25newwin%25=] before the size specification.%0a%0a(:markup:)%0a%25newwin%25%25width=134 height=100%25[[http://pmwiki.org/ | http://pmichaud.com/img/misc/pc.jpg"PmWiki"]]%25%25%0a(:markupend:)%0a%0aResized images using [@%25thumb%25@] can also be floated with frames, as well as made into links.%0a%0a(:markup:) %0a%25lframe thumb%25 [[http://pmichaud.com/img/misc/bubble.jpg | http://pmichaud.com/img/misc/bubble.jpg"Burst the bubble"]] | [-Bubble-]%0a%25lframe thumb%25 http://pmichaud.com/img/misc/pc.jpg"Clip the ticket" | [-Paper Clips-]%0a%25lframe thumb%25 [[DocumentationIndex | http://pmichaud.com/img/misc/gem.jpg"Visit the Documentation Index"]] | [[DocumentationIndex | [-Rock On-]]]%0a(:markupend:)%0a%0a[[#links]]%0a!!! Images as [[PmWiki/links]]%0aTo use an image as a link specify an image instead of text in the [[PmWiki/link(s)]] markup.%0a(:markup:)%0a[[PmWiki/Links | http://pmichaud.com/img/2003/atc-1.gif"Information about wiki links"]]%0a(:markupend:)%0a%0a[[#notes]]%0a!!!Notes%0a* '''An image file that lacks a correct extension''' can be displayed by addition of a "false" extension to the URL. For example, if the url is [@http://example.com/script/tux@], add a fake query string on the end with the desired extension (e.g., [@http://example.com/script/tux?format=.png@]). If query strings are unsuitable, a fragment identifier should work, e.g. [@http://example.com/script/tux#file.png@].%0a%0a* Relative width is possible by using percentages.%0a(:markup:)%0a%25width=10pct%25 http://pmichaud.com/img/misc/bubble.jpg \%0a%25height=30pct%25 http://pmichaud.com/img/misc/bubble.jpg %0a(:markupend:)%0a%0a* '''Flowing text is possible, like captions, within a frame'''%0a(:markup:)%0a>>lframe width=130px%3c%3c%0a%25thumb width=130%25 [[http://pmichaud.com/img/misc/bubble.jpg | http://pmichaud.com/img/misc/bubble.jpg"Burst the bubble"]] | [--Long caption for an image like [[http://pmichaud.com/img/misc/bubble.jpg | the bubble]]. This is just to show some text flowing within the frame.--]%0a>>%3c%3c%0a(:markupend:)%0a%0a%0a'''Unable to upload images?''' If you get messages telling you that the upload was not able to complete for some reason, here's something to check. If your web host has your web site%0a-> [=http://www.website.com=]%0awith username%0a-> ''username''%0athe system path (not http) to your website could be at%0a-> /home/users/~username/public_html%0aIf you have your wiki installed at what you think is the system's root directory%0a-> /pmwiki%0ayour system's path to the wiki uploads directory might actually be%0a-> /home/users/~username/public_html/pmwiki/uploads%0ainstead of the simpler%0a-> /pmwiki/uploads%0aThat's how I was able to get [[mine -> mailto:ispinn aatt gmail ddoott com]] working.%0a%0a!!!See also%0a* [[Cookbook:Images]] - adding image galleries, automatic thumbnails, background images and more. %0a%0a!!!Credits%0aThe images on this page were obtained from http://flickr.com and are redistributed under a Creative Commons License.%0a%0a(:keywords graphics, pictures, photos:)%0a%0a>>faq%3c%3c [[#faq]]%0a%0aQ: Is it possible to link an image on PmWiki without using a fully qualified URL?%0aA: Yes. For images that are attachments, the general format is [@Attach:Groupname/image.gif@]. To link to an image that is on the same server, use [@Path:/path/to/image.gif@].%0a%0aQ: Can I attach a client image file on PmWiki?%0aA: Yes, see [[PmWiki/Uploads]] .%0a%0aQ: How can I include a page from another group that contains an attached image?%0aA: Include the page in the normal way, ie [@(:include GroupName.Pagename:)@]. In the page to be included (that contains the image) change [@Attach:filename.ext@] to [@Attach:{$Group}./filename.ext@]. %0a%0aQ: Why, if I put an image with rframe or rfloat and immediatly after that I open a new page section with ! the section title row is below the image instead of on the left side?%0aA: Because the CSS for '''headings''' such as ! contains an element '''clear:both''' which forces this behaviour. Redefine the CSS locally if you want to stop this happening, but I think the bottom border (that underlines the heading) would need further re-definition. I just use bolding for the title, and 4 dashes below [=-=]--- to separate a new section, and it saves the effort of fiddling with the core definitions.%0a%0aUnlike the '''lframe''' and '''rframe''' directives, '''cframe''' does not fully honour the width setting. While the frame itself resizes to match the request, the enclosed image does not, and retains its original width. Effect is the same in IE and Fx. I've added an example beneath the standard example above.%0a%0aQ: Is it possible to disallow all images? I already disabled uploads but I also want to disallow external images from being shown on my wiki pages.%0a%0aA: Yes, add to config.php [@DisableMarkup('img');%0a$ImgExtPattern = "$^";@]%0a%0aQ: How can I make it so that when I place an image in a page, the block of text it is in is a %3cp> (paragraph) rather than a %3cdiv> (division)?%0a%0aA: If you just want it to happen for a single image (instead of all), then%0atry putting [@[==]@] at the beginning of the line, as in:%0a%0a->[@[==] http://www.pmwiki.org/pub/pmwiki/pmwiki-32.gif@]%0a%0aHaving [@[==]@] at the beginning of a line forces whatever follows to%0abe part of a paragraph.%0a%0aQ: Is there any way to use relative paths for images?%0aA: See Cookbook:RelativeLinks and $EnableLinkPageRelative.%0a%0aQ: Is there a way to attach a BMP and have it display rather than link?%0aA: PmWiki supports @@.bmp@@ images out of the box. If you insist on using an uppercase extension see Cookbook:AddImageType.%0a%0aQ: Is there a way to have a table to the left or right of an image?%0aA: Yes, see [[(http://www.pmwiki.org/wiki/Test/)TableAndImage]].%0a +time=1242008793 Index: wikilib.d/PmWiki.LocalCustomizations =================================================================== --- wikilib.d/PmWiki.LocalCustomizations (.../pmwiki-2.2.1) (revision 2344) +++ wikilib.d/PmWiki.LocalCustomizations (.../pmwiki-2.2.2) (revision 2344) @@ -1,11 +1,11 @@ -version=pmwiki-2.2.0 ordered=1 urlencoded=1 +version=pmwiki-2.2.1 ordered=1 urlencoded=1 agent=Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.19) Gecko/20081216 Ubuntu/8.04 (hardy) Firefox/2.0.0.19 author=Petko charset=ISO-8859-1 -csum=refactores, moved important Q up +csum=refactored +each part is not required host=81.65.14.164 name=PmWiki.LocalCustomizations -rev=45 +rev=47 targets=PmWiki.PerGroupCustomizations,PmWiki.WikiAdministrator,PmWiki.PmWikiPhilosophy,PmWiki.Variables,PmWiki.DocumentationIndex,PmWiki.Skins,PmWiki.Internationalizations,PmWiki.CustomMarkup,PmWiki.CustomInterMap,PmWiki.InterMap,PmWiki.MailingLists,PmWiki.Upgrades,Site.PageNotFound -text=(:Summary:Customize your PmWiki installation through @@config.php@@ and @@local.css@@:)%0aA [[Wiki Administrator]] can make a lot of customizations simply by setting variables in the ''/local/config.php'' and defining cascading style sheets in ''/pub/css/local.css'' files. Any group or page can also have [[PerGroupCustomizations|its own configuration file and configuration css file]].%0a%0aFrom its inception, PmWiki has been designed so that [[Wiki Administrator]]s can greatly customize the way PmWiki displays pages and the markup sequences used to generate pages. (This is even mentioned explicitly in [[PmWiki Philosophy]] #4.) As a result, the core ''pmwiki.php'' script makes extensive use of [[PmWiki.Variables]] to determine how markup sequences will be processed and what each individual page will output.%0a%0aThe bulk of this page describes how customizations work in general, see [[PmWiki.Documentation Index]] for specific customizations that are commonly performed at many PmWiki installations, including:%0a%0a* [[Skins]] - {Skins$:Summary}%0a* [[Internationalizations]] - {Internationalizations$:Summary}%0a* [[Custom Markup]] - {CustomMarkup$:Summary}%0a* [[Custom InterMap]]s - {CustomInterMap$:Summary}%0a%0aThe simplest type of customization is merely setting a variable to 1 (or TRUE). Here's an example that enables ?action=diag and ?action=phpinfo actions:%0a%0a->[@$EnableDiag = 1;@]%0a%0aYou can begin a line with a "#" (an octothorpe, a.k.a. a hash symbol or pound sign) to add a comment. Additionally, some built-in PmWiki variables take values other than 1 or 0 (true or false). Here's another example that customizes the wiki's behavior with respect to search engine web robots (see [[Cookbook:ControllingWebRobots]]):%0a%0a->[@%0a# Remove the default "rel='nofollow'" attribute for external links.%0a$UrlLinkFmt = "%3ca class='urllink' href='\$LinkUrl'>\$LinkText%3c/a>";%0a@]%0a%0aThe ''scripts/'' subdirectory (below the directory holding the ''pmwiki.php'' script) has many customizations.%0aThe PmWiki [[(Cookbook:)Cookbook]] contains many example customizations (recipes) that you can download into the ''cookbook/'' subdirectory,%0aThe first few lines of each of these scripts generally contain instructions about how to enable (and use) the feature provided by the script.%0a%0aThese customizations are included in your ''config.php'' site configuration. For most scripts this is done by simply adding lines like:%0a->[@include_once("cookbook/recipefile.php");@]%0aand%0a->[@include_once("scripts/scriptfile.php");@]%0aat the end of the ''config.php'' file to enable them. %0a%0aSome of the scripts are automatically enabled for you via the ''scripts/stdconfig.php'' script unless you disable it by setting @@$EnableStdConfig=0;@@ in ''local/config.php''.%0a%0aNote that you should strongly resist the temptation to directly modify the ''pmwiki.php'' script or the files in the ''scripts/'' subdirectory. Any modifications you make to these files will probably be overwritten whenever you perform a [[PmWiki.Upgrade(s)]]. Instead, look at some of the sample scripts for examples of customizations that can be performed from ''config.php''. You can even create your own script to do a customization and use @@include_once(...)@@ to include it from ''config.php''. If you do make your own customization script, you can safely put it in the ''cookbook/'' subdirectory--it won't get overwritten by an upgrade there. You might also want to submit your customization to the [[MailingLists|pmwiki-users mailing list]] or the [[(Cookbook:)Cookbook]] so that others can benefit from your effort and so that it can perhaps be included in future releases of PmWiki.%0a%0a>>faq%3c%3c [[#faq]]%0aQ: There's no "config.php"; it's not even clear what a "local customisation file" is!%0aA: The "sample-config.php" file in the "docs" folder, is given as an example. Copy it to the "local" folder and rename it to "config.php". You can then remove the "#" symbols or add other commands shown in the documentation. See also [[PerGroup Customizations]].%0a%0aQ: Can I change the default page something other than Main.HomePage ($DefaultPage)?%0aA: Yes, just set the $DefaultPage variable to the name of the page you want to be the default. You might also look at the $DefaultGroup and $DefaultName configuration variables.%0a%0a->[@$DefaultPage = 'ABC.StartPage';@]%0a%0aQ: How do I get the group / page name in a local configuration file (e.g. ''local/config.php'')?%0aA: Use the following markup in pmwiki-2.1.beta21 or newer:%0a%0a->[@%0a## Get the group and page name%0a$pagename = ResolvePageName($pagename);%0a$page = PageVar($pagename, '$FullName');%0a$group = PageVar($pagename, '$Group');%0a$name = PageVar($pagename, '$Name');%0a@]%0a%0a%0aQ: Can I remove items from the wikilib.d folder on my site?%0aA: Yes, the files in ''wikilib.d/'' can be safely removed. They'll reappear again when you upgrade, however.%0a%0a%0aQ: How do I customize my own 404 error page for non-existent pages?%0aA: To change the text of the message, try editing the [[Site.PageNotFound]] page.%0a%0a -time=1234646628 +text=(:Summary:Customize your PmWiki installation through @@config.php@@ and @@local.css@@:)%0aA [[Wiki Administrator]] can make a lot of customizations simply by setting variables in the ''/local/config.php'' and defining cascading style sheets in ''/pub/css/local.css'' files. Any group or page can also have [[PerGroupCustomizations|its own configuration file and configuration css file]].%0a%0aFrom its inception, PmWiki has been designed so that [[Wiki Administrator]]s can greatly customize the way PmWiki displays pages and the markup sequences used to generate pages. (This is even mentioned explicitly in [[PmWiki Philosophy]] #4.) As a result, the core ''pmwiki.php'' script makes extensive use of [[PmWiki.Variables]] to determine how markup sequences will be processed and what each individual page will output.%0a%0aThe bulk of this page describes how customizations work in general, see [[PmWiki.Documentation Index]] for specific customizations that are commonly performed at many PmWiki installations, including:%0a%0a* [[Skins]] - {Skins$:Summary}%0a* [[Internationalizations]] - {Internationalizations$:Summary}%0a* [[Custom Markup]] - {CustomMarkup$:Summary}%0a* [[Custom InterMap]]s - {CustomInterMap$:Summary}%0a%0aThe simplest type of customization is merely setting a variable to 1 (or TRUE). Here's an example that enables ?action=diag and ?action=phpinfo actions:%0a%0a->[@$EnableDiag = 1;@]%0a%0aYou can begin a line with a "#" (an octothorpe, a.k.a. a hash symbol or pound sign) to add a comment. Additionally, some built-in PmWiki variables take values other than 1 or 0 (true or false). Here's another example that customizes the wiki's behavior with respect to search engine web robots (see [[Cookbook:ControllingWebRobots]]):%0a%0a->[@%0a# Remove the default "rel='nofollow'" attribute for external links.%0a$UrlLinkFmt = "%3ca class='urllink' href='\$LinkUrl'>\$LinkText%3c/a>";%0a@]%0a%0aThe ''scripts/'' subdirectory (below the directory holding the ''pmwiki.php'' script) has many customizations.%0aThe PmWiki [[(Cookbook:)Cookbook]] contains many example customizations (recipes) that you can download into the ''cookbook/'' subdirectory,%0aThe first few lines of each of these scripts generally contain instructions about how to enable (and use) the feature provided by the script.%0a%0aThese customizations are included in your ''config.php'' site configuration. For most scripts this is done by simply adding lines like:%0a->[@include_once("cookbook/recipefile.php");@]%0aand%0a->[@include_once("scripts/scriptfile.php");@]%0aat the end of the ''config.php'' file to enable them. %0a%0aSome of the scripts are automatically enabled for you via the ''scripts/stdconfig.php'' script unless you disable it by setting @@$EnableStdConfig=0;@@ in ''local/config.php''.%0a%0aNote that you should strongly resist the temptation to directly modify the ''pmwiki.php'' script or the files in the ''scripts/'' subdirectory. Any modifications you make to these files will probably be overwritten whenever you perform a [[PmWiki.Upgrade(s)]]. Instead, look at some of the sample scripts for examples of customizations that can be performed from ''config.php''. You can even create your own script to do a customization and use @@include_once(...)@@ to include it from ''config.php''. If you do make your own customization script, you can safely put it in the ''cookbook/'' subdirectory--it won't get overwritten by an upgrade there. You might also want to submit your customization to the [[MailingLists|pmwiki-users mailing list]] or the [[(Cookbook:)Cookbook]] so that others can benefit from your effort and so that it can perhaps be included in future releases of PmWiki.%0a%0a>>faq%3c%3c [[#faq]]%0aQ: There's no "config.php"; it's not even clear what a "local customisation file" is!%0aA: The "sample-config.php" file in the "docs" folder, is given as an example. Copy it to the "local" folder and rename it to "config.php". You can then remove the "#" symbols or add other commands shown in the documentation. See also [[PerGroup Customizations]].%0a%0aQ: Can I change the default page something other than Main.HomePage ($DefaultPage)?%0aA: Yes, just set the $DefaultPage variable to the name of the page you want to be the default. You might also look at the $DefaultGroup and $DefaultName configuration variables.%0a%0a->[@$DefaultPage = 'ABC.StartPage';@]%0a%0aQ: How do I get the group / page name in a local configuration file (e.g. ''local/config.php'')?%0aA: Use the following markup in pmwiki-2.1.beta21 or newer:%0a%0a->[@%0a## Get the group and page name%0a$pagename = ResolvePageName($pagename);%0a$page = PageVar($pagename, '$FullName');%0a$group = PageVar($pagename, '$Group');%0a$name = PageVar($pagename, '$Name');%0a@]%0a%0a%0aQ: Can I remove items from the wikilib.d folder on my site?%0aA: Yes, the files in ''wikilib.d/'' can be safely removed. They'll reappear again when you upgrade, however.%0a%0a%0aQ: How do I customize my own 404 error page for non-existent pages?%0aA: To change the text of the message, try editing the [[Site.PageNotFound]] page.%0a%0aQ: Is the order of customizations in config.php important? Are their certain things that should come before or after others in that file?%0aA: Yes, the following has been recommended on the mailing list:%0a%0a* first define any custom PageStore class, like SQLite, CompressedPageStore or PerGroupSubDirectories,%0a* next include_once scripts/xlpage-utf-8.php,%0a* next call XLPage() which needs the definitive (rw) $WikiDir already set in order to find the wiki page containing the translations,%0a* next include any other scripts and recipes.%0a%0a''Note, each part is '''not''' required, but if your wiki needs it, this is the recommended order in config.php.'' +time=1240660813 Index: wikilib.d/PmWiki.WikiStyles =================================================================== --- wikilib.d/PmWiki.WikiStyles (.../pmwiki-2.2.1) (revision 2344) +++ wikilib.d/PmWiki.WikiStyles (.../pmwiki-2.2.2) (revision 2344) @@ -1,12 +1,12 @@ version=pmwiki-2.2.1 ordered=1 urlencoded=1 -agent=Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.19) Gecko/20081216 Ubuntu/8.04 (hardy) Firefox/2.0.0.19 -author=Petko +agent=Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.19) Gecko/20080703 Mandriva/2.0.0.19-1.1mdv2008.1 (2008.1) Firefox/2.0.0.19 +author=nikos papadopoulos charset=ISO-8859-1 -csum=fix link -host=81.65.14.164 +csum=removed the "commands within commands" from the example, as to make it less confusing to new users +host=94.67.227.2 name=PmWiki.WikiStyles post= Save -rev=178 +rev=179 targets=PmWiki.WikiStyles,PmWiki.WikiWord,PmWiki.WikiStyleColors,PmWiki.Tables,PmWiki.TableDirectives,PmWiki.GroupHeaders,PmWiki.WikiAdministrator,PmWiki.LocalCustomizations,PmWiki.CustomWikiStyles,PmWiki.WikiStyleExamples,PmWiki.TextFormattingRules -text=(:Summary: Modifying the style of page contents:)%0a(:div class='rfloat frame' style='clear:right; font-size:small;':)%0a'''Contents'''%0a*[[#Basics|Basics]]%0a*[[#Scopes|Scopes]]%0a*[[#Attributes|Attributes]]%0a*[[#Styles|Enabling Styles]]%0a*[[#Shortcuts|Custom style shortcuts]]%0a*[[#predefined|Predefined Style Shortcuts]]%0a*[[#Examples|Examples]]%0a*[[#KnownIssues|Known Issues]]%0a*[[#SeeAlso|See Also]]%0a(:divend:)%0a(:Audience: authors (basic) :)%0a%0a[[#Basics]]%0a!! Wiki style basics%0a%0a[[Wiki styles]] allow authors to modify the color and other styling attributes of a page's contents. %0aA wikistyle is written using percent-signs, as in %25red%25[@%25red%25@]%25%25 or %25bgcolor=lightblue%25[@%25bgcolor=lightblue%25@]%25%25.%0a%0a!!! Text color and font%0aThe most basic use of wiki styles is to change text attributes such as color, background color, and font. %0aPmWiki defines several wikistyles for changing the text color to [=%25black%25, %25white%25, %25red%25, %25yellow%25, %25blue%25, %25gray%25, %25silver%25, %25maroon%25, %25green%25, %25navy%25, and %25purple%25=].%0a%0a(:markup class=horiz:)%0aThe basket contains %25red%25 apples, %25blue%25 blueberries, %25purple%25 eggplant, %25green%25 limes, %25%25 and more.%0a(:markupend:)%0a%0aFor colors other than the predefined colors, use the [@%25color=...%25@] wikistyle. (Note: RGB colors (#rrggbb) should always be specified with lowercase letters to avoid [[WikiWord]] conflicts.)%0a%0a(:markup class=horiz:)%0aI'd like to have some %25color=#ff7f00%25 tangerines%25%25, too!%0a(:markupend:)%0a%0aTo change the background color, use [@%25bgcolor=...%25@] as a wikistyle:%0a%0a%0a(:markup class=horiz:)%0aThis sentence contains %25bgcolor=green yellow%25 yellow text on a green background.%0a(:markupend:)%0a%0aSee [[PmWiki/Wiki Style Colors]] for more color help.%0a%0a!!!Text justification%0aStyles are used to control the text justification%0a%0a(:markup class=horiz:)%0a%25center%25 This text is centered. %0a%0a%25right%25 Right justified.%0a(:markupend:)%0a%0aand to create floating text:%0a%0a(:markup class=horiz:)%0a%25rfloat%25 This text floats to the right%0a%0a%25rframe%25 floats to the right with a frame%0a%0aLorem ipsum dolor sit amet, consectetuer sadipscing elitr%0a(:markupend:)%0a%0a%0a[[#Scopes]]%0a!! Scopes%0a%0aWikistyles can also specify a ''scope''; with no scope, the style is applied to any text that follows up to the next wikistyle specification or the end of the paragraph, whichever comes first. The '''apply=''' attribute and its shortcuts allow to change the scope as follows:%0a%0a||border=1 cellpadding=3 cellspacing=0%0a||apply attribute ||shortcut ||style applies to... ||%0a||[@%25apply=img ...%25@] ||- ||any image that ''follows''||%0a||[@%25apply=p ...%25@] ||[@%25p ...%25@] ||the current paragraph||%0a||[@%25apply=pre ...%25@] ||- ||the current preformatted text||%0a||[@%25apply=list ...%25@] ||[@%25list ...%25@] ||the current list||%0a||[@%25apply=item ...%25@] ||[@%25item ...%25@] ||the current list item||%0a||[@%25apply=div ...%25@] ||- ||the current div||%0a||[@%25apply=block ...%25@] ||[@%25block ...%25@] ||to the current block, whether it's a paragraph, list, list item, heading, or division.||%0a%0athus '''[@%25p color=blue%25@]''' is the same as '''[@%25apply=p color=blue%25@]''', and '''[@%25list ROMAN%25@]''' is the same as '''[@%25apply=list list-style=upper-roman%25@]'''.%0a%0aSome [[#predefined|predefined style shortcuts]] also make use of apply, thus '''[@%25right%25@]''' is a shortcut for '''[@%25text-align=right apply=block%25@]'''.%0a%0aExample: Apply a style to a paragraph:%0a(:markup:)%0a%25p bgcolor=#ffeeee%25 The wikistyle specification at the beginning of this line applies to the entire paragraph, even if there are %25blue%25 other wikistyle specifications %25%25 in the middle of the paragraph.%0a(:markupend:)%0a%0aWiki styles can also be applied to [[PmWiki/tables]] and [[PmWiki/table directives]]:%0a(:markup class=horiz:)%0a||class="green" style="font-style:italic; border:1px solid blue; background-color:#ffffcc"%0a||Everything after the above line is styled with green italic text, ||%0a|| ||%0a||This includes ||%0a|| preformatted text ||%0a||* lists ||%0a||-> indented items ||%0a(:markupend:)%0a%0a(:markup class=horiz:)%0a(:table class="green" style="font-style:italic; border:1px solid blue; background-color:#ffffcc":)%0a(:cellnr:)%0aEverything after the above line is styled with green italic text,%0a%0aThis includes%0a preformatted text%0a* lists%0a-> indented items%0a(:tableend:)%0a(:markupend:)%0a%0a%0aThe '''[@>>style%3c%3c@]''' block can be used to apply a wikistyle to a large block of items. %0aThe style is applied until the next [@>>%3c%3c@] is encountered.%0a%0a(:markup class=horiz:)%0a>>blue font-style:italic bgcolor=#ffffcc%3c%3c%0aEverything after the above line is styled with blue italic text,%0a%0aThis includes%0a preformatted text%0a* lists%0a-> indented items%0a>>%3c%3c%0a(:markupend:)%0a%0aThe '''[@(:div style:)@]''' works in ''almost'' the same way as [@>>style%3c%3c@],%0abut the style information is encapsulated in a @@style=""@@ attribute and nested div blocks are possible.%0a(:markup class=horiz:)%0a(:div class="green" style="font-style:italic; border:1px solid blue; background-color:#ffffcc":)%0aEverything after the above line is styled with green italic text,%0a%0aThis includes%0a preformatted text%0a* lists%0a-> indented items%0a(:divend:)%0a(:markupend:)%0a%0a(:markup class=horiz:)%0a(:div1 style="font-style:italic; background-color:#ffffcc":)%0aouter style%0a(:div2 style="color:red; background-color:lightblue":)%0anested style%0a(:div2end:)%0aagain outer style%0a(:div1end:)%0a(:markupend:)%0a%0a%0a'''Caveat''': An applied wikistyle will only take effect if it's on the%0aline that starts the thing it's supposed to modify. In other%0awords, a wikistyle in the third markup line of a paragraph%0acan't change the attributes of the paragraph:%0a%0a(:markup class=horiz:) %0aafter the first line of the paragraph,%0awe try to %25apply=p color=blue%25 change color.%0aThis does't work because the style comes%0a(:markupend:)%0a%0a(:markup class=horiz:)%0aHowever, this %25p color=red%25 paragraph%0a''will'' be in red because its block style does%0aoccur in the first line of its text.%0a(:markupend:)%0a%0a(:markup class=horiz:) %0a* Here's a list item%0a* %25list red%25 Oops, too late to affect the list!%0a(:markupend:)%0a%0a%0a[[#Attributes]]%0a!! Wikistyle attributes%0a%0aThe style attributes recognized within a wikistyle specification are:%0a%0a ------------ CSS ------------- --HTML--%0a color bgcolor class %0a background-color margin id%0a text-align padding hspace%0a text-decoration border vspace%0a font-size float target%0a font-family list-style rel%0a font-weight width* accesskey%0a font-style height* value%0a display%0a%0a Special: define, apply%0a%0aThe attributes in the first two columns correspond to the ''[[cascading style sheet -> http://blooberry.com/indexdot/css/propindex/all.htm]]'' (CSS) properties of the same name. The attributes in the last column apply only to specific items:%0a%0a* '''[@class=@]''' and '''[@id=@]''' assign a CSS class or identifier to an HTML element%0a* '''[@target=name@]''' opens links that follow in a browser window called "name"%0a* '''[@rel=name@]''' in a link identifies the relationship of a target page%0a* '''[@accesskey=x@]''' uses 'x' as a shortcut key for the link that follows%0a* '''[@value=9@]''' sets the number of the current ordered list item%0a%0a[=*=] The width and height attributes have asterisks because they are handled specially for %3cimg .../> tags. If used by themselves (i.e., without anything providing an "apply=" parameter to the wikistyle), then they set the 'width=' and 'height=' attributes of any %3cimg ... /> tags that follow. Otherwise, they set the 'width:' and 'height:' properties of the element being styled.%0a%0a[[#Styles]]%0a!! Enabling Styles%0aStyles not listed above can be enabled by a PmWiki Administrator by modifying the local/config.php file. %0aFor instance to enable the "line-height" style attribute add the line %0a%0a->$WikiStyleCSS[] = 'line-height';%0a%0ato the local/config.php file.%0a%0a[[#Shortcuts]]%0a!! Custom style shortcuts%0a%0aThe '''[@define=@]''' attribute can be used to assign a shorthand name to any wikistyle specification. %0aThis shorthand name can then be reused in later wikistyle specifications.%0a%0a(:markup class=horiz:)%0a%25define=box block bgcolor=#ddddff border="2px dotted blue"%25%0a%0a%25box%25 [@%0a$ echo "Hello world"%0aHello World%0a$ exit%0a@]%0a%0a%25box font-weight=bold color=green%25 [@%0a$ echo "I said, HELLO"%0a@]%0a(:markupend:)%0a%0a-%3c '''Tip:''' It's often a good idea to put common style definitions into [[Group Header(s)]] pages so that they can be shared among multiple pages in a group. Or, the [[wiki administrator]] can predefine styles site-wide as a [[local customization(s)]] (see [[Custom Wiki Styles]]).%0a%0a-%3c '''Tip:''' Use custom style definitions to associate meanings with text instead of just colors. For example, if warnings are to be displayed as green text, set [@%25define=warn green%25@] and then use [@%25warn%25@] instead of [@%25green%25@] in the document. Then, if you later decide that warnings should be styled differently, it's much easier to change the (one) definition than many occurrences of [@%25green%25@] in the text.%0a%0a-%3c '''Tip:''' Any undefined WikiStyle is automatically treated as a request for a class, thus [@%25pre%25@] is the same as saying [@%25class=pre%25@].%0a%0a!![[#predefined]] Predefined style shortcuts%0a%0aPmWiki defines a number of style shortcuts.%0a%0a* Text colors: %25black%25black%25%25, %25white bgcolor=black%25white%25%25, %25red%25red%25%25, %25yellow%25yellow%25%25, %25blue%25blue%25%25, %25gray%25gray%25%25, %25silver%25silver%25%25, %25maroon%25maroon%25%25, %25green%25green%25%25, %25navy%25navy%25%25, %25purple%25purple%25%25 (shortcut for [@%25color=...%25@])%0a* Justification: [@%25center%25@] and [@%25right%25@]%0a* Images and boxes%0a** Floating left or right: [@%25rfloat%25@] and [@%25lfloat%25@]%0a** Framed items: [@%25frame%25@], [@%25rframe%25@], and [@%25lframe%25@]%0a** Thumbnail sizing: [@%25thumb%25@]%0a* Open link in new window: [@%25newwin%25@] (shortcut for [@%25target=_blank%25@])%0a* Comments: [@%25comment%25@] (shortcut for [@%25display=none%25@])%0a* Ordered lists: [@%25decimal%25@], [@%25roman%25@], [@%25ROMAN%25@], [@%25alpha%25@], [@%25ALPHA%25@] (see also Cookbook:OutlineLists)%0a%0a[[#Examples]]%0a!! Examples%0a%0a[[Wiki Style Examples]] contains a number of examples of ways to use wikistyles in pages.%0a%0a[[#KnownIssues]]%0a!! Known Issues%0a* Percents in style definitions (like: [@%25block width=50%25 %25@]) require the use of "pct" instead of "%25".%0a* If you specify multiple values for an attribute, like @@border="2px solid blue"@@ make sure you place the values in quotes.%0a* Be sure to use lowercase letters for red-green-blue hex colors, [@%25color=#aa3333%25@] will work, [@%25color=#AA3333%25@] may not.%0a%0a[[#SeeAlso]]%0a!!See Also%0a* [[PmWiki/Custom Wiki Styles]] {PmWiki/CustomWikiStyles$:Summary}%0a* [[PmWiki:List Styles]] {PmWiki/ListStyles$:Summary}%0a%0a>>faq%3c%3c [[#faq]]%0aQ: %0aA:%0a -time=1238271766 +text=(:Summary: Modifying the style of page contents:)%0a(:div class='rfloat frame' style='clear:right; font-size:small;':)%0a'''Contents'''%0a*[[#Basics|Basics]]%0a*[[#Scopes|Scopes]]%0a*[[#Attributes|Attributes]]%0a*[[#Styles|Enabling Styles]]%0a*[[#Shortcuts|Custom style shortcuts]]%0a*[[#predefined|Predefined Style Shortcuts]]%0a*[[#Examples|Examples]]%0a*[[#KnownIssues|Known Issues]]%0a*[[#SeeAlso|See Also]]%0a(:divend:)%0a(:Audience: authors (basic) :)%0a%0a[[#Basics]]%0a!! Wiki style basics%0a%0a[[Wiki styles]] allow authors to modify the color and other styling attributes of a page's contents. %0aA wikistyle is written using percent-signs, as in %25red%25[@%25red%25@]%25%25 or %25bgcolor=lightblue%25[@%25bgcolor=lightblue%25@]%25%25.%0a%0a!!! Text color and font%0aThe most basic use of wiki styles is to change text attributes such as color, background color, and font. %0aPmWiki defines several wikistyles for changing the text color to [=%25black%25, %25white%25, %25red%25, %25yellow%25, %25blue%25, %25gray%25, %25silver%25, %25maroon%25, %25green%25, %25navy%25, and %25purple%25=].%0a%0a(:markup class=horiz:)%0aThe basket contains %25red%25 apples, %25blue%25 blueberries, %25purple%25 eggplant, %25green%25 limes, %25%25 and more.%0a(:markupend:)%0a%0aFor colors other than the predefined colors, use the [@%25color=...%25@] wikistyle. (Note: RGB colors (#rrggbb) should always be specified with lowercase letters to avoid [[WikiWord]] conflicts.)%0a%0a(:markup class=horiz:)%0aI'd like to have some %25color=#ff7f00%25 tangerines%25%25, too!%0a(:markupend:)%0a%0aTo change the background color, use [@%25bgcolor=...%25@] as a wikistyle:%0a%0a%0a(:markup class=horiz:)%0aThis sentence contains %25bgcolor=green yellow%25 yellow text on a green background.%0a(:markupend:)%0a%0aSee [[PmWiki/Wiki Style Colors]] for more color help.%0a%0a!!!Text justification%0aStyles are used to control the text justification%0a%0a(:markup class=horiz:)%0a%25center%25 This text is centered. %0a%0a%25right%25 Right justified.%0a(:markupend:)%0a%0aand to create floating text:%0a%0a(:markup class=horiz:)%0a%25rfloat%25 This text floats to the right%0a%0a%25rframe%25 floats to the right with a frame%0a%0aLorem ipsum dolor sit amet, consectetuer sadipscing elitr%0a(:markupend:)%0a%0a%0a[[#Scopes]]%0a!! Scopes%0a%0aWikistyles can also specify a ''scope''; with no scope, the style is applied to any text that follows up to the next wikistyle specification or the end of the paragraph, whichever comes first. The '''apply=''' attribute and its shortcuts allow to change the scope as follows:%0a%0a||border=1 cellpadding=3 cellspacing=0%0a||apply attribute ||shortcut ||style applies to... ||%0a||[@%25apply=img ...%25@] ||- ||any image that ''follows''||%0a||[@%25apply=p ...%25@] ||[@%25p ...%25@] ||the current paragraph||%0a||[@%25apply=pre ...%25@] ||- ||the current preformatted text||%0a||[@%25apply=list ...%25@] ||[@%25list ...%25@] ||the current list||%0a||[@%25apply=item ...%25@] ||[@%25item ...%25@] ||the current list item||%0a||[@%25apply=div ...%25@] ||- ||the current div||%0a||[@%25apply=block ...%25@] ||[@%25block ...%25@] ||to the current block, whether it's a paragraph, list, list item, heading, or division.||%0a%0athus '''[@%25p color=blue%25@]''' is the same as '''[@%25apply=p color=blue%25@]''', and '''[@%25list ROMAN%25@]''' is the same as '''[@%25apply=list list-style=upper-roman%25@]'''.%0a%0aSome [[#predefined|predefined style shortcuts]] also make use of apply, thus '''[@%25right%25@]''' is a shortcut for '''[@%25text-align=right apply=block%25@]'''.%0a%0aExample: Apply a style to a paragraph:%0a(:markup:)%0a%25p bgcolor=#ffeeee%25 The wikistyle specification at the beginning of this line applies to the entire paragraph, even if there are %25blue%25 other wikistyle specifications %25%25 in the middle of the paragraph.%0a(:markupend:)%0a%0aWiki styles can also be applied to [[PmWiki/tables]] and [[PmWiki/table directives]]:%0a(:markup class=horiz:)%0a||class="green" style="font-style:italic; border:1px solid blue; background-color:#ffffcc"%0a||Everything after the above line is styled with green italic text, ||%0a|| ||%0a||This includes ||%0a|| preformatted text ||%0a||* lists ||%0a||-> indented items ||%0a(:markupend:)%0a%0a(:markup class=horiz:)%0a(:table class="green" style="font-style:italic; border:1px solid blue; background-color:#ffffcc":)%0a(:cellnr:)%0aEverything after the above line is styled with green italic text,%0a%0aThis includes%0a preformatted text%0a* lists%0a-> indented items%0a(:tableend:)%0a(:markupend:)%0a%0a%0aThe '''[@>>style%3c%3c@]''' block can be used to apply a wikistyle to a large block of items. %0aThe style is applied until the next [@>>%3c%3c@] is encountered.%0a%0a(:markup class=horiz:)%0a>>blue font-style:italic bgcolor=#ffffcc%3c%3c%0aEverything after the above line is styled with blue italic text,%0a%0aThis includes%0a preformatted text%0a* lists%0a-> indented items%0a>>%3c%3c%0a(:markupend:)%0a%0aThe '''[@(:div style:)@]''' works in ''almost'' the same way as [@>>style%3c%3c@],%0abut the style information is encapsulated in a @@style=""@@ attribute and nested div blocks are possible.%0a(:markup class=horiz:)%0a(:div class="green" style="font-style:italic; border:1px solid blue; background-color:#ffffcc":)%0aEverything after the above line is styled with green italic text,%0a%0aThis includes%0a preformatted text%0a* lists%0a-> indented items%0a(:divend:)%0a(:markupend:)%0a%0a(:markup class=horiz:)%0a(:div1 style="font-style:italic; background-color:#ffffcc":)%0aouter style%0a(:div2 style="color:red; background-color:lightblue":)%0anested style%0a(:div2end:)%0aagain outer style%0a(:div1end:)%0a(:markupend:)%0a%0a%0a'''Caveat''': An applied wikistyle will only take effect if it's on the%0aline that starts the thing it's supposed to modify. In other%0awords, a wikistyle in the third markup line of a paragraph%0acan't change the attributes of the paragraph:%0a%0a(:markup class=horiz:) %0aafter the first line of the paragraph,%0awe try to %25apply=p color=blue%25 change color.%0aThis does't work because the style comes%0a(:markupend:)%0a%0a(:markup class=horiz:)%0aHowever, this %25p color=red%25 paragraph%0a''will'' be in red because its block style does%0aoccur in the first line of its text.%0a(:markupend:)%0a%0a(:markup class=horiz:) %0a* Here's a list item%0a* %25list red%25 Oops, too late to affect the list!%0a(:markupend:)%0a%0a%0a[[#Attributes]]%0a!! Wikistyle attributes%0a%0aThe style attributes recognized within a wikistyle specification are:%0a%0a ------------ CSS ------------- --HTML--%0a color bgcolor class %0a background-color margin id%0a text-align padding hspace%0a text-decoration border vspace%0a font-size float target%0a font-family list-style rel%0a font-weight width* accesskey%0a font-style height* value%0a display%0a%0a Special: define, apply%0a%0aThe attributes in the first two columns correspond to the ''[[cascading style sheet -> http://blooberry.com/indexdot/css/propindex/all.htm]]'' (CSS) properties of the same name. The attributes in the last column apply only to specific items:%0a%0a* '''[@class=@]''' and '''[@id=@]''' assign a CSS class or identifier to an HTML element%0a* '''[@target=name@]''' opens links that follow in a browser window called "name"%0a* '''[@rel=name@]''' in a link identifies the relationship of a target page%0a* '''[@accesskey=x@]''' uses 'x' as a shortcut key for the link that follows%0a* '''[@value=9@]''' sets the number of the current ordered list item%0a%0a[=*=] The width and height attributes have asterisks because they are handled specially for %3cimg .../> tags. If used by themselves (i.e., without anything providing an "apply=" parameter to the wikistyle), then they set the 'width=' and 'height=' attributes of any %3cimg ... /> tags that follow. Otherwise, they set the 'width:' and 'height:' properties of the element being styled.%0a%0a[[#Styles]]%0a!! Enabling Styles%0aStyles not listed above can be enabled by a PmWiki Administrator by modifying the local/config.php file. %0aFor instance to enable the "line-height" style attribute add the line %0a%0a->$WikiStyleCSS[] = 'line-height';%0a%0ato the local/config.php file.%0a%0a[[#Shortcuts]]%0a!! Custom style shortcuts%0a%0aThe '''[@define=@]''' attribute can be used to assign a shorthand name to any wikistyle specification.\\ %0aThis shorthand name can then be reused in later wikistyle specifications.%0a%0a(:markup class=horiz:)%0a%25define=box block bgcolor=#ddddff border="2px dotted blue"%25%0a%0a%25box%25 [@some sort of text@]%0a%0a%25box font-weight=bold color=green%25 [@some sort of text@]%0a(:markupend:)%0a%0a-%3c '''Tip:''' It's often a good idea to put common style definitions into [[Group Header(s)]] pages so that they can be shared among multiple pages in a group. Or, the [[wiki administrator]] can predefine styles site-wide as a [[local customization(s)]] (see [[Custom Wiki Styles]]).%0a%0a-%3c '''Tip:''' Use custom style definitions to associate meanings with text instead of just colors. For example, if warnings are to be displayed as green text, set [@%25define=warn green%25@] and then use [@%25warn%25@] instead of [@%25green%25@] in the document. Then, if you later decide that warnings should be styled differently, it's much easier to change the (one) definition than many occurrences of [@%25green%25@] in the text.%0a%0a-%3c '''Tip:''' Any undefined WikiStyle is automatically treated as a request for a class, thus [@%25pre%25@] is the same as saying [@%25class=pre%25@].%0a%0a!![[#predefined]] Predefined style shortcuts%0a%0aPmWiki defines a number of style shortcuts.%0a%0a* Text colors: %25black%25black%25%25, %25white bgcolor=black%25white%25%25, %25red%25red%25%25, %25yellow%25yellow%25%25, %25blue%25blue%25%25, %25gray%25gray%25%25, %25silver%25silver%25%25, %25maroon%25maroon%25%25, %25green%25green%25%25, %25navy%25navy%25%25, %25purple%25purple%25%25 (shortcut for [@%25color=...%25@])%0a* Justification: [@%25center%25@] and [@%25right%25@]%0a* Images and boxes%0a** Floating left or right: [@%25rfloat%25@] and [@%25lfloat%25@]%0a** Framed items: [@%25frame%25@], [@%25rframe%25@], and [@%25lframe%25@]%0a** Thumbnail sizing: [@%25thumb%25@]%0a* Open link in new window: [@%25newwin%25@] (shortcut for [@%25target=_blank%25@])%0a* Comments: [@%25comment%25@] (shortcut for [@%25display=none%25@])%0a* Ordered lists: [@%25decimal%25@], [@%25roman%25@], [@%25ROMAN%25@], [@%25alpha%25@], [@%25ALPHA%25@] (see also Cookbook:OutlineLists)%0a%0a[[#Examples]]%0a!! Examples%0a%0a[[Wiki Style Examples]] contains a number of examples of ways to use wikistyles in pages.%0a%0a[[#KnownIssues]]%0a!! Known Issues%0a* Percents in style definitions (like: [@%25block width=50%25 %25@]) require the use of "pct" instead of "%25".%0a* If you specify multiple values for an attribute, like @@border="2px solid blue"@@ make sure you place the values in quotes.%0a* Be sure to use lowercase letters for red-green-blue hex colors, [@%25color=#aa3333%25@] will work, [@%25color=#AA3333%25@] may not.%0a%0a[[#SeeAlso]]%0a!!See Also%0a* [[PmWiki/Custom Wiki Styles]] {PmWiki/CustomWikiStyles$:Summary}%0a* [[PmWiki:List Styles]] {PmWiki/ListStyles$:Summary}%0a%0a>>faq%3c%3c [[#faq]]%0aQ: %0aA:%0a +time=1238929241 Index: wikilib.d/PmWiki.Notify =================================================================== --- wikilib.d/PmWiki.Notify (.../pmwiki-2.2.1) (revision 2344) +++ wikilib.d/PmWiki.Notify (.../pmwiki-2.2.2) (revision 2344) @@ -4,9 +4,9 @@ charset=ISO-8859-1 csum= ctime=1149115706 -host=81.65.14.164 +host=77.195.128.91 name=PmWiki.Notify -rev=62 -targets=PmWiki.LocalCustomizations,SiteAdmin.NotifyList,PmWiki.PageLists,PmWiki.WikiTrails -text=(:Summary:Allows a site administrator to configure PmWiki to send email messages whenever pages are changed on the wiki site:)%0a(:Audience: administrators (basic) :)%0aThe ''notify.php'' script allows a site administrator to configure PmWiki to send email messages whenever pages are changed on the wiki site. Notifications can be configured so that multiple page changes over a short period of time are combined into a single email message (to avoid flooding mailboxes).%0a%0aThis feature is useful for sites and pages that have infrequent updates, as it eliminates the need to frequently check `RecentChanges pages just to see if anything has changed.%0a%0aIn order for notifications to work, the notify.php script must be enabled in the site's [[local customization(s)]]. Usually this is as simple as placing the following in ''local/config.php'':%0a%0a->$EnableNotify = 1;%0a%0aIf you have safe_mode enabled in your PHP configuration, notify.php will fail silently. See the [[PITS:00976]] for a little hack that fixes the issue.%0a%0a!! Notification configuration%0aOnce enabled, the notification system gets its configuration from the [[SiteAdmin.NotifyList]] wiki page. The SiteAdmin.NotifyList page contains entries of the form:%0a%0a->notify=alice@example.com%0a%0aThis says that information about page changes should be periodically emailed to ''alice@example.com''. The SiteAdmin.NotifyList page can contain multiple "notify=" lines to cause notifications to be sent to multiple addresses; the "notify=" lines can be concealed by placing them inside of an [@(:if false:)@] conditional section on the page.%0a%0aNOTE: Do not put any spaces around the equal sign! Notifications will fail silently if you have%0a->notify = fred@example.com%0arather than%0a->notify=fred@example.com%0a(:comment this is a really easy mistake to make because all of the other assignments have spaces around the equal sign.:)%0a%0a!! Notification options%0aThe basic syntax is %0a->@@notify=''email@address'' \%0a [[#notifyname|name]]=''abc'' \%0a [[#notifygroup|group]]=''def'' \%0a [[#notifytrail|trail]]=''ghi'' \%0a [[#notifysquelch|squelch]]=''123'' \%0a [[#notifydelay|delay]]=''123'' \%0a @@%0a%0aA number of options exist for limiting the pages that result in a notification. The [@group=@] and [@name=@] parameters can be used to restrict notifications to specific pages or groups:%0a%0a[[#notifygroup]]%0a-># send notifications about the Main group to alice@example.com%0a->notify=alice@example.com '''group'''=Main%0a%0a[[#notifyname]]%0a-># notify bob@example.com of any changes to the home page%0a->notify=bob@example.com '''name'''=Main.HomePage%0a%0a-># notify charles@example.com of changes to pages except in Main%0a->notify=charles@example.com '''group'''=-Main%0a%0a(Note: The options are similar to [[PmWiki/PageLists | the PageList syntax]].)%0a%0a[[#notifytrail]]%0aFor maintaining arbitrary lists of pages, i.e., "watchlists", it's generally easier to build a [[trail -> WikiTrails]] of pages to be watched. The following entry in SiteAdmin.NotifyList will send alice@example.com an email containing changes to any of the pages listed in the Profiles.Alice trail:%0a%0a-># notify Alice of changes to pages listed in Profiles.Alice%0a->notify=alice@example.com '''trail'''=Profiles.Alice%0a%0aNote that once this entry has been added to SiteAdmin.NotifyList, Alice can easily change her watchlist by editing the Profiles.Alice page, and doesn't need to edit the SiteAdmin.NotifyList page. In particular, this means that an administrator can restrict editing of SiteAdmin.NotifyList, yet allow individuals to maintain custom watchlists in other pages. %0a%0aLimitations of this feature:%0a* only manually-added links on a trail will be acknowledged by the Notify List (no "group=" or other pagelist syntax, nor any "Group.RecentChanges" links, will generate notifications)%0a* using an [@(:include:)@] directive on the page SiteAdmin.NotifyList is not an operational work-around.%0a%0aThis is probably a good place to point out that edit access to SiteAdmin.NotifyList should be controlled, otherwise malicious persons can use the notification capability to flood others' electronic mailboxes. By default, SiteAdmin.Notify is blocked against reading or edits except by the admin (as is the case for most pages in the SiteAdmin group).%0a%0a!! Adding notification entries via local customizations%0a%0aNotification entries can also be added via the $NotifyList array in ''local/config.php''. Simply add a line like the following:%0a->$EnableNotify = 1;%0a->$NotifyList[] = 'notify=alice@example.com group=Main';%0a->$NotifyList[] = 'notify=bob@example.com name=Main.HomePage';%0a%0a[[#controlling_notification_frequency]]%0a[[#notifysquelch]]%0a!! Controlling notification frequency%0a%0aTo prevent flooding of recipients' mailboxes, the notify script uses a "'''squelch'''" value as the minimum amount of time that must elapse between messages sent to any given email address. The ''default squelch setting is 10800 seconds (three hours)'', which means that once a recipient address is sent a notification message, it will not receive another for at least three hours. Any edits that occur during the squelch interval are queued for the next notification message.%0a%0aThe site administrator can change the default squelch interval via the $NotifySquelch parameter %0a%0a-># enable notifications%0a->$EnableNotify = 1;%0a->$NotifySquelch = 86400; # wait at least one day (in seconds) between notifications%0a%0aIn addition, individual addresses can specify a custom squelch parameter in the SiteAdmin.NotifyList page:%0a%0a-># Alice receives at most one email per day%0a->notify=alice@example.com '''squelch'''=86400%0a%0a-># Bob can get notifications hourly%0a->notify=bob@example.com trail=Profiles.Bob '''squelch'''=3600%0a%0a-># Charles uses the site default squelch%0a->notify=charles@example.com %0a%0a[[#notifydelay]]%0a!! Controlling notification delay%0aBecause a page will often receive several edits in rapid succession (e.g., a long post followed by several minor edits), a site administrator can also set a $NotifyDelay value that specifies how long to wait after an initial post before sending notifications:%0a%0a-># enable notifications%0a->$EnableNotify = 1;%0a->$NotifySquelch = 86400; # wait at least one day between notifications%0a->$NotifyDelay = 300; # wait five minutes after initial post%0a%0aNote that the squelch and delay values are minimums; notifications are sent on the first execution of PmWiki after the delay period has expired. For inactive sites, this could be much longer than the specified delay periods. This isn't really considered an issue since timely notifications are less important on relatively inactive sites. However, changes within the squelch time after the last notification will remain unnoticed if the wiki is not even visited for a long period after. If this matters it might be necessary to make the server call pmwiki.php regularly (e.g. [[Wikipedia:Cron | cron job]]).%0a%0aCustom delay parameters cannot be specified for individual addresses in the [[SiteAdmin.NotifyList]] page:%0a%0a-># the @@delay=@@ parameter will be ignored%0a->notify=edgar@example.com trail=Profiles.Edgar '''delay'''=600%0a%0a!! Note for Windows installations%0a%0aSites running PHP under Windows may not have PHP's [[http://php.net/mail | mail]] function configured correctly. Such sites may need to add a line like%0a%0a->ini_set('SMTP','smtp.server.com');%0a%0ato ''config.php'', where ''smtp.server.com'' is the name of your host's preferred outgoing mail server. You may also need to set the sendmail_from value if that is not configured:%0a%0a->ini_set('sendmail_from','noreply@foo.com');%0a%0a%0a!![[#variables]] Notify Variables%0a%0a:$EnableNotify:Tells ''stdconfig.php'' to enable the notify script.%0a: :$EnableNotify = 1; # enable notify%0a: :$EnableNotify = 0; # disable notify%0a%0a:$NotifyFrom:Return email address to be used in the sent email.%0a: :$NotifyFrom = 'wiki@example.com';%0a: :$NotifyFrom = 'Wiki server %3cwiki@example.com>';%0a%0a:$NotifyDelay:The length of time (seconds) to wait before sending mail after the first post. Defaults to zero - posts are sent as soon as any squelch period has expired.%0a: :$NotifyDelay = 300; # send mail 5+ min after first post%0a%0a:$NotifySquelch:The default minimum time (seconds) that must elapse between sending mail messages. Useful when $NotifyDelay is set to a small value to keep the number of mail notification messages down. Defaults to 10800 (three hours). Individual recipients can override this value in the SiteAdmin.NotifyList page.%0a: :$NotifySquelch = 43200; # wait 12+ hours between mailings%0a%0a:$NotifyItemFmt:The text to be sent for each changed item in the post. The string "$PostTime" is substituted with the time of the post (controlled by $NotifyTimeFmt below).%0a: :# default%0a: :$NotifyItemFmt = ' * $FullName . . . $PostTime by $Author';%0a%0a: :# include the page's URL in the message%0a: :$NotifyItemFmt =%0a: :" * \$FullName . . . \$PostTime by \$Author\n \$PageUrl";%0a%0a: :# include the change summary and link to the page's history in the message%0a: :$NotifyItemFmt = %0a: :" * {\$FullName} . . . \$PostTime by {\$Author}%0a: :\n Summary: {\$LastModifiedSummary}\n {\$PageUrl}?action=diff";%0a%0a%0a:$NotifyTimeFmt:The format for dates/times in $PostTime above. Defaults to the value of $TimeFmt.%0a: :$NotifyTimeFmt = [='%25Y-%25m-%25d %25H:%25M'=]; # 2004-03-20 17:44%0a%0a:$NotifyBodyFmt:The body of the message to be sent. The string "$NotifyItems" is replaced with the list of posts (as formatted by $NotifyItemFmt above). Use single quotation marks ' to prevent substring "$NotifyItems" from being untimely evaluated as variable in config.php. %0a: :$NotifyBodyFmt = "Changed items:\n\n" . '$NotifyItems' . "\n\n Best regards...";%0a%0a:$NotifySubjectFmt:The subject line of the mail to be sent.%0a%0a:$NotifyHeaders:String of extra mail headers to be passed to the mail() function.%0a%0a:$NotifyParameters:String of additional parameters to be passed to PHP's mail() function [[http://www.php.net/mail|#]].%0a%0a:$NotifyFile:The scratch file where Notify keeps track of recent posting information. Defaults to @@[="$WorkDir/.notifylist"=]@@. Note that this file must generally be writable by the webserver process.%0a%0a:$NotifyListPageFmt:The name of the page containing [@notify=@] lines for use by ''notify.php''. Defaults to [@$SiteAdminGroup.NotifyList@].%0a%0a:$NotifyList:An array of [@notify=@] specifications that can be specified from a local customization file (used in addition to entries in SiteAdmin.NotifyList).%0a: :# send notifications to alice@example.com%0a: :$NotifyList[] = 'notify=alice@example.com';%0a%0a%0a!! Notification only for minor edits%0a%0aIt is possible to send notifications only in case of major edits. In your config.php, recplace "$EnabelNotify=1;" with the following: %0a%0aif ( @$_POST['diffclass'] != 'minor' ) $EnableNotify=1;%0a%0aThis way, only 'major' edits send notify messages (when the author doesn't select the checkbox for minor edit). If you want minor edits and not major edits to send the message then you would use:%0a%0aif ( @$_POST['diffclass'] == 'minor' ) $EnableNotify=1;%0a%0ainstead. %0a -time=1238268675 +rev=64 +targets=PmWiki.LocalCustomizations,SiteAdmin.NotifyList,PmWiki.PageLists,PmWiki.WikiTrails,PmWiki.UTF-8 +text=(:Summary:Allows a site administrator to configure PmWiki to send email messages whenever pages are changed on the wiki site:)%0a(:Audience: administrators (basic) :)%0aThe ''notify.php'' script allows a site administrator to configure PmWiki to send email messages whenever pages are changed on the wiki site. Notifications can be configured so that multiple page changes over a short period of time are combined into a single email message (to avoid flooding mailboxes).%0a%0aThis feature is useful for sites and pages that have infrequent updates, as it eliminates the need to frequently check `RecentChanges pages just to see if anything has changed.%0a%0aIn order for notifications to work, the notify.php script must be enabled in the site's [[local customization(s)]]. Usually this is as simple as placing the following in ''local/config.php'':%0a%0a->$EnableNotify = 1;%0a%0aIf you have safe_mode enabled in your PHP configuration, notify.php will fail silently. See the [[PITS:00976]] for a little hack that fixes the issue.%0a%0a!! Notification configuration%0aOnce enabled, the notification system gets its configuration from the [[SiteAdmin.NotifyList]] wiki page. The SiteAdmin.NotifyList page contains entries of the form:%0a%0a->notify=alice@example.com%0a%0aThis says that information about page changes should be periodically emailed to ''alice@example.com''. The SiteAdmin.NotifyList page can contain multiple "notify=" lines to cause notifications to be sent to multiple addresses; the "notify=" lines can be concealed by placing them inside of an [@(:if false:)@] conditional section on the page.%0a%0aNOTE: Do not put any spaces around the equal sign! Notifications will fail silently if you have%0a->notify = fred@example.com%0arather than%0a->notify=fred@example.com%0a(:comment this is a really easy mistake to make because all of the other assignments have spaces around the equal sign.:)%0a%0a!! Notification options%0aThe basic syntax is %0a->@@notify=''email@address'' \%0a [[#notifyname|name]]=''abc'' \%0a [[#notifygroup|group]]=''def'' \%0a [[#notifytrail|trail]]=''ghi'' \%0a [[#notifysquelch|squelch]]=''123'' \%0a [[#notifydelay|delay]]=''123'' \%0a @@%0a%0aA number of options exist for limiting the pages that result in a notification. The [@group=@] and [@name=@] parameters can be used to restrict notifications to specific pages or groups:%0a%0a[[#notifygroup]]%0a-># send notifications about the Main group to alice@example.com%0a->notify=alice@example.com '''group'''=Main%0a%0a[[#notifyname]]%0a-># notify bob@example.com of any changes to the home page%0a->notify=bob@example.com '''name'''=Main.HomePage%0a%0a-># notify charles@example.com of changes to pages except in Main%0a->notify=charles@example.com '''group'''=-Main%0a%0a(Note: The options are similar to [[PmWiki/PageLists | the PageList syntax]].)%0a%0a[[#notifytrail]]%0aFor maintaining arbitrary lists of pages, i.e., "watchlists", it's generally easier to build a [[trail -> WikiTrails]] of pages to be watched. The following entry in SiteAdmin.NotifyList will send alice@example.com an email containing changes to any of the pages listed in the Profiles.Alice trail:%0a%0a-># notify Alice of changes to pages listed in Profiles.Alice%0a->notify=alice@example.com '''trail'''=Profiles.Alice%0a%0aNote that once this entry has been added to SiteAdmin.NotifyList, Alice can easily change her watchlist by editing the Profiles.Alice page, and doesn't need to edit the SiteAdmin.NotifyList page. In particular, this means that an administrator can restrict editing of SiteAdmin.NotifyList, yet allow individuals to maintain custom watchlists in other pages. %0a%0aLimitations of this feature:%0a* only manually-added links on a trail will be acknowledged by the Notify List (no "group=" or other pagelist syntax, nor any "Group.RecentChanges" links, will generate notifications)%0a* using an [@(:include:)@] directive on the page SiteAdmin.NotifyList is not an operational work-around.%0a%0aThis is probably a good place to point out that edit access to SiteAdmin.NotifyList should be controlled, otherwise malicious persons can use the notification capability to flood others' electronic mailboxes. By default, SiteAdmin.Notify is blocked against reading or edits except by the admin (as is the case for most pages in the SiteAdmin group).%0a%0a!! Adding notification entries via local customizations%0a%0aNotification entries can also be added via the $NotifyList array in ''local/config.php''. Simply add a line like the following:%0a->$EnableNotify = 1;%0a->$NotifyList[] = 'notify=alice@example.com group=Main';%0a->$NotifyList[] = 'notify=bob@example.com name=Main.HomePage';%0a%0a[[#controlling_notification_frequency]]%0a[[#notifysquelch]]%0a!! Controlling notification frequency%0a%0aTo prevent flooding of recipients' mailboxes, the notify script uses a "'''squelch'''" value as the minimum amount of time that must elapse between messages sent to any given email address. The ''default squelch setting is 10800 seconds (three hours)'', which means that once a recipient address is sent a notification message, it will not receive another for at least three hours. Any edits that occur during the squelch interval are queued for the next notification message.%0a%0aThe site administrator can change the default squelch interval via the $NotifySquelch parameter %0a%0a-># enable notifications%0a->$EnableNotify = 1;%0a->$NotifySquelch = 86400; # wait at least one day (in seconds) between notifications%0a%0aIn addition, individual addresses can specify a custom squelch parameter in the SiteAdmin.NotifyList page:%0a%0a-># Alice receives at most one email per day%0a->notify=alice@example.com '''squelch'''=86400%0a%0a-># Bob can get notifications hourly%0a->notify=bob@example.com trail=Profiles.Bob '''squelch'''=3600%0a%0a-># Charles uses the site default squelch%0a->notify=charles@example.com %0a%0a[[#notifydelay]]%0a!! Controlling notification delay%0aBecause a page will often receive several edits in rapid succession (e.g., a long post followed by several minor edits), a site administrator can also set a $NotifyDelay value that specifies how long to wait after an initial post before sending notifications:%0a%0a-># enable notifications%0a->$EnableNotify = 1;%0a->$NotifySquelch = 86400; # wait at least one day between notifications%0a->$NotifyDelay = 300; # wait five minutes after initial post%0a%0aNote that the squelch and delay values are minimums; notifications are sent on the first execution of PmWiki after the delay period has expired. For inactive sites, this could be much longer than the specified delay periods. This isn't really considered an issue since timely notifications are less important on relatively inactive sites. However, changes within the squelch time after the last notification will remain unnoticed if the wiki is not even visited for a long period after. If this matters it might be necessary to make the server call pmwiki.php regularly (e.g. [[Wikipedia:Cron | cron job]]).%0a%0aCustom delay parameters cannot be specified for individual addresses in the [[SiteAdmin.NotifyList]] page:%0a%0a-># the @@delay=@@ parameter will be ignored%0a->notify=edgar@example.com trail=Profiles.Edgar '''delay'''=600%0a%0a!! Note for Windows installations%0a%0aSites running PHP under Windows may not have PHP's [[http://php.net/mail | mail]] function configured correctly. Such sites may need to add a line like%0a%0a->ini_set('SMTP','smtp.server.com');%0a%0ato ''config.php'', where ''smtp.server.com'' is the name of your host's preferred outgoing mail server. You may also need to set the sendmail_from value if that is not configured:%0a%0a->ini_set('sendmail_from','noreply@foo.com');%0a%0a%0a!![[#variables]] Notify Variables%0a%0a:$EnableNotify:Tells ''stdconfig.php'' to enable the notify script.%0a: :$EnableNotify = 1; # enable notify%0a: :$EnableNotify = 0; # disable notify%0a%0a:$NotifyFrom:Return email address to be used in the sent email.%0a: :$NotifyFrom = 'wiki@example.com';%0a: :$NotifyFrom = 'Wiki server %3cwiki@example.com>';%0a%0a:$NotifyDelay:The length of time (seconds) to wait before sending mail after the first post. Defaults to zero - posts are sent as soon as any squelch period has expired.%0a: :$NotifyDelay = 300; # send mail 5+ min after first post%0a%0a:$NotifySquelch:The default minimum time (seconds) that must elapse between sending mail messages. Useful when $NotifyDelay is set to a small value to keep the number of mail notification messages down. Defaults to 10800 (three hours). Individual recipients can override this value in the SiteAdmin.NotifyList page.%0a: :$NotifySquelch = 43200; # wait 12+ hours between mailings%0a%0a:$NotifyItemFmt:The text to be sent for each changed item in the post. The string "$PostTime" is substituted with the time of the post (controlled by $NotifyTimeFmt below).%0a: :# default%0a: :$NotifyItemFmt = ' * $FullName . . . $PostTime by $Author';%0a%0a: :# include the page's URL in the message%0a: :$NotifyItemFmt =%0a: :" * \$FullName . . . \$PostTime by \$Author\n \$PageUrl";%0a%0a: :# include the change summary and link to the page's history in the message%0a: :$NotifyItemFmt = %0a: :" * {\$FullName} . . . \$PostTime by {\$Author}%0a: :\n Summary: {\$LastModifiedSummary}\n {\$PageUrl}?action=diff";%0a%0a%0a:$NotifyTimeFmt:The format for dates/times in $PostTime above. Defaults to the value of $TimeFmt.%0a: :$NotifyTimeFmt = [='%25Y-%25m-%25d %25H:%25M'=]; # 2004-03-20 17:44%0a%0a:$NotifyBodyFmt:The body of the message to be sent. The string "$NotifyItems" is replaced with the list of posts (as formatted by $NotifyItemFmt above). Use single quotation marks ' to prevent substring "$NotifyItems" from being untimely evaluated as variable in config.php. %0a: :$NotifyBodyFmt = "Changed items:\n\n" . '$NotifyItems' . "\n\n Best regards...";%0a%0a:$NotifySubjectFmt:The subject line of the mail to be sent.%0a%0a:$NotifyHeaders:String of extra mail headers to be passed to the mail() function.%0a%0a:$NotifyParameters:String of additional parameters to be passed to PHP's mail() function [[http://www.php.net/mail|#]].%0a%0a:$NotifyFile:The scratch file where Notify keeps track of recent posting information. Defaults to @@[="$WorkDir/.notifylist"=]@@. Note that this file must generally be writable by the webserver process.%0a%0a:$NotifyListPageFmt:The name of the page containing [@notify=@] lines for use by ''notify.php''. Defaults to [@$SiteAdminGroup.NotifyList@].%0a%0a:$NotifyList:An array of [@notify=@] specifications that can be specified from a local customization file (used in addition to entries in SiteAdmin.NotifyList).%0a: :# send notifications to alice@example.com%0a: :$NotifyList[] = 'notify=alice@example.com';%0a%0a:$EnableNotifySubjectEncode:Apply a standard (base64) encoding for the e-mail subject. Notify e-mails from international wikis may otherwise have unreadable subjects (added for version 2.2.2).%0a: :$EnableNotifySubjectEncode = 1; # encode subject%0a: :$EnableNotifySubjectEncode = 0; # use subject as is (default)%0a: : To fix encodings with the message body, add to config.php the following line (after XLPage and/or [[UTF-8]]):\\%0a @@$NotifyHeaders = "Content-type: text/plain; charset=$Charset";@@%0a%0a!! Notification only for minor edits%0a%0aIt is possible to send notifications only in case of major edits. In your config.php, recplace "$EnabelNotify=1;" with the following: %0a%0aif ( @$_POST['diffclass'] != 'minor' ) $EnableNotify=1;%0a%0aThis way, only 'major' edits send notify messages (when the author doesn't select the checkbox for minor edit). If you want minor edits and not major edits to send the message then you would use:%0a%0aif ( @$_POST['diffclass'] == 'minor' ) $EnableNotify=1;%0a%0ainstead. %0a +time=1242924137 Index: wikilib.d/PmWiki.Tables =================================================================== --- wikilib.d/PmWiki.Tables (.../pmwiki-2.2.1) (revision 2344) +++ wikilib.d/PmWiki.Tables (.../pmwiki-2.2.2) (revision 2344) @@ -2,11 +2,11 @@ agent=Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.19) Gecko/20081216 Ubuntu/8.04 (hardy) Firefox/2.0.0.19 author=Petko charset=ISO-8859-1 -csum=-complicated example, mv to talk +csum=refactor ctime=1141945978 -host=81.65.14.164 +host=77.195.128.91 name=PmWiki.Tables -rev=51 +rev=54 targets=PmWiki.TableDirectives -text=(:Audience: authors (basic) :)%0a(:Summary:Simple tables with double pipe markup, one row per line:)%0a!! Table basics%0a%0aPmWiki has two types of table markup; the markup described in this page is useful for creating ''simple'' tables with lots of small cells, while [[table directive(s)]] markups help with larger scale tables. For more possibilities with table formatting see [[Cookbook:Rowspan in simple tables]] and [[Cookbook:Formatting tables]].%0a%0aTables are created via use of the double pipe character: @@||@@. Lines beginning with this markup denote rows in a table; within such lines the double-pipe is used to delimit cells. In the examples below a border is added for illustration (the default is no border).%0a%0a(:markup caption='Basic table' class=horiz:)%0a|| border=1%0a|| cell 1 || cell 2 || cell 3 ||%0a|| cell 1 || cell 2 ||%0a(:markupend:)%0a%0aHeader cells can be created by placing ! as the first character of a cell. Note that these are ''table headers'', not ''headings'', so it doesn't extend to !!, !!!, etc.%0a%0a(:markup caption='Table headers' class=horiz:)%0a|| border=1%0a||! cell 1 ||! cell 2 ||! cell 3 ||%0a|| cell 1 || cell 2 || cell 3 ||%0a(:markupend:)%0a%0aA table can have a caption, indicated by [@||!caption!||@]. Any caption must appear prior to other rows of the table.%0a%0a(:markup caption='Table caption' class=horiz:)%0a|| border=1%0a||! A special table !||%0a||! cell 1 ||! cell 2 ||! cell 3 ||%0a|| cell 1 || cell 2 || cell 3 ||%0a(:markupend:)%0a%0a%0a!! Formatting cell contents%0a%0aCell contents may be aligned left, centered, or aligned right. %0a* To left-align contents, place the cell contents next to the leading @@||@@.%0a* To center contents, add a space before and after the cell contents.%0a* To right-align contents, place a space before the cell contents and leave the cell contents next to the trailing @@||@@.%0a%0a(:markup caption='Cell alignments':)%0a|| border=1 width=100%25%0a||!cell 1 ||! cell 2 ||! cell 3||%0a||left-aligned || centered || right-aligned||%0a(:markupend:)%0a%0a(:markup caption='Default cell alignments':)%0a|| border=1 width=100%25%0a||!cell default||!cell left ||%0a||default-aligned||left-aligned ||%0a(:markupend:)%0a%0aNote that header and detail cells have different default alignments.%0a%0aTo get a cell to span multiple columns, follow the cell with empty cells.%0a(At present there is no markup for spanning rows.)%0a%0a(:markup caption='Column spanning':)%0a|| border=1 width=100%25%0a|| |||| right column ||%0a|| || middle column ||||%0a|| left column ||||||%0a|| left column || middle column || right column ||%0a(:markupend:)%0a%0a!! Table attributes%0a%0aAny line that begins with [@||@] but doesn't have a closing [@||@] sets the ''table attributes'' for any tables that follow. These attributes can control the size and position of the table, borders, background color, and cell spacing. (In fact these are just standard HTML attributes that are placed in the %3ctable> tag.)%0a%0aUse the [@width=@] attribute to set a table's width, using either a percentage value, an absolute size, or '''*'''.%0a%0a(:markup caption='Table width':)%0a|| border=1 width=100%25 %0a|| cell 1 || cell 2 || cell 3 ||%0a|| c1 || cellcellcellcell2 || cell 3 ||%0a(:markupend:)%0a%0aThe [@border=@] attribute sets the size of a table's borders.%0a%0a(:markup caption='Bordered table' class=horiz:)%0a|| border=10 width=70%25%0a||!cell 1 ||! cell 2 ||! cell 3||%0a||left-aligned || centered || right-aligned||%0a(:markupend:)%0a%0a(:markup caption='Borderless table' class=horiz:)%0a|| border=0 width=70%25%0a||!cell 1 ||! cell 2 ||! cell 3||%0a||left-aligned || centered || right-aligned||%0a(:markupend:)%0a%0aUse [@align=center@], [@align=left@], and [@align=right@] to center, left, or right align a table. Note that [@align=left@] and [@align=right@] create a ''floating table'', such that text wraps around the table.%0a%0a(:markup caption='Table alignment: center':)%0a|| border=1 align=center width=50%25%0a||!cell 1 ||! cell 2 ||! cell 3||%0a||left-aligned || centered || right-aligned||%0aNotice how text does not wrap with a table using "align=center".%0a(:markupend:)%0a%0a(:markup caption='Table alignment: left':)%0a|| border=1 align=left width=50%25%0a||!cell 1 ||! cell 2 ||! cell 3||%0a||left-aligned || centered || right-aligned||%0aNotice how text wraps to the right of a table using "align=left".%0a(:markupend:)%0a%0a(:markup caption='Table alignment: right':)%0a|| border=1 align=right width=50%25%0a||!cell 1 ||! cell 2 ||! cell 3||%0a||left-aligned || centered || right-aligned||%0aNotice how text wraps to the left of a table using "align=right".%0a(:markupend:)%0a%0aNote: to get a table to align left (but not "float left") requires CSS, as in%0a->[@||style="margin-left:0px;"@]%0a%0aThe [@bgcolor=@] attribute sets the background color for a table. At present there is no way to specify the color of individual rows or cells in this type of table (but see Cookbook:FormattingTables).%0a%0a(:markup class=horiz:)%0a|| border=1 align=center bgcolor=yellow width=70%25%0a||!cell 1 ||! cell 2 ||! cell 3||%0a||left-align || center || right-align||%0a(:markupend:)%0a%0a>>faq%3c%3c [[#faq]]%0aQ: How do I create a basic table? %0aA: Tables are created via use of the double pipe character: @@||@@. Lines beginning with this markup denote rows in a table; within such lines the double-pipe is used to delimit cells. In the examples below a border is added for illustration (the default is no border).%0a%0a(:markup caption='Basic table' class=horiz:)%0a|| border=1 rules=rows frame=hsides%0a|| cell 1 || cell 2 || cell 3 ||%0a|| cell 1 || cell 2 || cell 3 ||%0a(:markupend:)%0a%0aQ: How do I create cell headers?%0aA: Header cells can be created by placing ! as the first character of a cell. Note that these are ''table headers'', not ''headings'', so it doesn't extend to !!, !!!, etc.%0a%0a(:markup caption='Table headers' class=horiz:)%0a|| border=1 rules=cols frame=vsides%0a||! cell 1 ||! cell 2 ||! cell 3 ||%0a|| cell 1 || cell 2 || cell 3 ||%0a(:markupend:)%0a%0aQ: How do I create an advanced table? %0aA: See [[PmWiki.TableDirectives | table directives]]%0a%0aQ: My tables are by default centered. When I try to use '||align=left' they don't align left as expected. %0aA: Use ||style="margin-left:0px;" instead. %0a%0aQ: How can I specify the width of columns?%0aA: You can define the widths via custom styles, see Cookbook:FormattingTables and $TableCellAttrFmt. Add in config.php :[@%0a$TableCellAttrFmt = 'class=col\$TableCellCount';@]%0a-> And add in pub/css/local.css : [@%0atable.column td.col1 { width: 120px; }%0atable.column td.col3 { width: 40px; }%0a@]%0a%0aQ: How can I display a double pipe "||" in cell text using basic table markup?%0aA: Escape it with [@[=||=]@] to display || unchanged.%0a -time=1238271574 +text=(:Audience: authors (basic) :)%0a(:Summary:Simple tables with double pipe markup, one row per line:)%0a!! Table basics%0a%0aPmWiki has two types of table markup; the markup described in this page is useful for creating ''simple'' tables with lots of small cells, while [[table directive(s)]] markups help with larger scale tables. For more possibilities with table formatting see [[Cookbook:Rowspan in simple tables]] and [[Cookbook:Formatting tables]].%0a%0aTables are created via use of double pipe characters: @@||@@. Lines beginning with this markup denote rows in a table or a formatting line. Within table row lines the double-pipe is used to delimit cells. In the examples below a border is added for illustration (the default is no border).%0a%0aThe first line in the markup contains formatting commands for the table. It only has double pipe characters at the start of the line.%0a%0a(:markup caption='Basic table' class=horiz:)%0a|| border=1%0a|| cell 1 || cell 2 || cell 3 ||%0a|| cell 1 || cell 2 ||%0a(:markupend:)%0a%0aHeader cells can be created by placing ! as the first character of a cell. Note that these are ''table headers'', not ''headings'', so it doesn't extend to !!, !!!, etc.%0a%0a(:markup caption='Table headers' class=horiz:)%0a|| border=1%0a||! cell 1 ||! cell 2 ||! cell 3 ||%0a|| cell 1 || cell 2 || cell 3 ||%0a(:markupend:)%0a%0aA table can have a caption, indicated by [@||!caption!||@]. Any caption must appear prior to other rows of the table.%0a%0a(:markup caption='Table caption' class=horiz:)%0a|| border=1%0a||! A special table !||%0a||! cell 1 ||! cell 2 ||! cell 3 ||%0a|| cell 1 || cell 2 || cell 3 ||%0a(:markupend:)%0a%0a%0a!! Formatting cell contents%0a%0aCell contents may be aligned left, centered, or aligned right. %0a* To left-align contents, place the cell contents next to the leading @@||@@.%0a* To center contents, add a space before and after the cell contents.%0a* To right-align contents, place a space before the cell contents and leave the cell contents next to the trailing @@||@@.%0a%0a(:markup caption='Cell alignments':)%0a|| border=1 width=100%25%0a||!cell 1 ||! cell 2 ||! cell 3||%0a||left-aligned || centered || right-aligned||%0a(:markupend:)%0a%0a(:markup caption='Default cell alignments':)%0a|| border=1 width=100%25%0a||!cell default||!cell left ||%0a||default-aligned||left-aligned ||%0a(:markupend:)%0a%0aNote that header and detail cells have different default alignments.%0a%0aTo get a cell to span multiple columns, follow the cell with empty cells.%0a(At present there is no markup for spanning rows.)%0a%0a(:markup caption='Column spanning':)%0a|| border=1 width=100%25%0a|| |||| right column ||%0a|| || middle column ||||%0a|| left column ||||||%0a|| left column || middle column || right column ||%0a(:markupend:)%0a%0a!! Table attributes%0a%0aAny line that begins with [@||@] but doesn't have a closing [@||@] sets the ''table attributes'' for any tables that follow. These attributes can control the size and position of the table, borders, background color, and cell spacing. (In fact these are just standard HTML attributes that are placed in the %3ctable> tag.)%0a%0aUse the [@width=@] attribute to set a table's width, using either a percentage value, an absolute size, or '''*'''.%0a%0a(:markup caption='Table width':)%0a|| border=1 width=100%25 %0a|| cell 1 || cell 2 || cell 3 ||%0a|| c1 || cellcellcellcell2 || cell 3 ||%0a(:markupend:)%0a%0aThe [@border=@] attribute sets the size of a table's borders.%0a%0a(:markup caption='Bordered table' class=horiz:)%0a|| border=10 width=70%25%0a||!cell 1 ||! cell 2 ||! cell 3||%0a||left-aligned || centered || right-aligned||%0a(:markupend:)%0a%0a(:markup caption='Borderless table' class=horiz:)%0a|| border=0 width=70%25%0a||!cell 1 ||! cell 2 ||! cell 3||%0a||left-aligned || centered || right-aligned||%0a(:markupend:)%0a%0aUse [@align=center@], [@align=left@], and [@align=right@] to center, left, or right align a table. Note that [@align=left@] and [@align=right@] create a ''floating table'', such that text wraps around the table.%0a%0a(:markup caption='Table alignment: center':)%0a|| border=1 align=center width=50%25%0a||!cell 1 ||! cell 2 ||! cell 3||%0a||left-aligned || centered || right-aligned||%0aNotice how text does not wrap with a table using "align=center".%0a(:markupend:)%0a%0a(:markup caption='Table alignment: left':)%0a|| border=1 align=left width=50%25%0a||!cell 1 ||! cell 2 ||! cell 3||%0a||left-aligned || centered || right-aligned||%0aNotice how text wraps to the right of a table using "align=left".%0a(:markupend:)%0a%0a(:markup caption='Table alignment: right':)%0a|| border=1 align=right width=50%25%0a||!cell 1 ||! cell 2 ||! cell 3||%0a||left-aligned || centered || right-aligned||%0aNotice how text wraps to the left of a table using "align=right".%0a(:markupend:)%0a%0aNote: to get a table to align left (but not "float left") requires CSS, as in%0a->[@||style="margin-left:0px;"@]%0a%0aThe [@bgcolor=@] attribute sets the background color for a table. At present there is no way to specify the color of individual rows or cells in this type of table (but see Cookbook:FormattingTables).%0a%0a(:markup class=horiz:)%0a|| border=1 align=center bgcolor=yellow width=70%25%0a||!cell 1 ||! cell 2 ||! cell 3||%0a||left-align || center || right-align||%0a(:markupend:)%0a%0a>>faq%3c%3c [[#faq]]%0aQ: How do I create a basic table? %0aA: Tables are created via use of the double pipe character: @@||@@. Lines beginning with this markup denote rows in a table; within such lines the double-pipe is used to delimit cells. In the examples below a border is added for illustration (the default is no border).%0a%0a(:markup caption='Basic table' class=horiz:)%0a|| border=1 rules=rows frame=hsides%0a|| cell 1 || cell 2 || cell 3 ||%0a|| cell 1 || cell 2 || cell 3 ||%0a(:markupend:)%0a%0aQ: How do I create cell headers?%0aA: Header cells can be created by placing ! as the first character of a cell. Note that these are ''table headers'', not ''headings'', so it doesn't extend to !!, !!!, etc.%0a%0a(:markup caption='Table headers' class=horiz:)%0a|| border=1 rules=cols frame=vsides%0a||! cell 1 ||! cell 2 ||! cell 3 ||%0a|| cell 1 || cell 2 || cell 3 ||%0a(:markupend:)%0a%0aQ: How do I create an advanced table? %0aA: See [[PmWiki.TableDirectives | table directives]]%0a%0aQ: My tables are by default centered. When I try to use '||align=left' they don't align left as expected. %0aA: Use ||style="margin-left:0px;" instead. %0a%0aQ: How can I specify the width of columns?%0aA: You can define the widths via custom styles, see Cookbook:FormattingTables and $TableCellAttrFmt. Add in config.php :%0a[@$TableCellAttrFmt = 'class=col\$TableCellCount';@]%0a-> And add in pub/css/local.css : %0a[@%0atable.column td.col1 { width: 120px; }%0atable.column td.col3 { width: 40px; }%0a@]%0a%0aQ: How can I display a double pipe "||" in cell text using basic table markup?%0aA: Escape it with [@[=||=]@] to display || unchanged.%0a +time=1242924562 Index: wikilib.d/PmWiki.DeletingPages =================================================================== --- wikilib.d/PmWiki.DeletingPages (.../pmwiki-2.2.1) (revision 2344) +++ wikilib.d/PmWiki.DeletingPages (.../pmwiki-2.2.2) (revision 2344) @@ -1,11 +1,11 @@ version=pmwiki-2.2.1 ordered=1 urlencoded=1 -agent=Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.19) Gecko/20081216 Ubuntu/8.04 (hardy) Firefox/2.0.0.19 -author=Petko +agent=Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/1.0.154.53 Safari/525.19 +author=simon charset=ISO-8859-1 -csum=fix link -host=81.65.14.164 +csum=correct link +host=203.97.214.12 name=PmWiki.DeletingPages -rev=27 -targets=PmWiki.WikiAdministrator,Site.AllRecentChanges,PmWiki.EditVariables,PmWiki.WikiGroups,PmWiki.Categories,PmWiki.RecentChanges -text=(:Summary: Page maintenance:)%0aTo delete a page, edit the page, select (highlight) all text in the edit textarea and replace it with the single word%0a%0a->[@delete@]%0a%0aNote that it may be a good idea to add a comment to the field @@summary@@%0aexplaining why you deleted the page. (The field @@summary@@ is usually found%0ajust below the edit textarea).%0a%0aAfter saving the changes the page is deleted. As an added safety feature, the deleted page still exists on the server (with a timestamp) and can be restored to the former page by the [[wiki administrator]].%0a%0aIf you suspect that a page has been deleted but aren't sure, have a look at the wikigroup's [=RecentChanges=]. Erasing a page counts as editing the page, and the activity is recorded there and on [[{$SiteGroup}.AllRecentChanges]].%0a%0aThe default word used for page deletion ("delete") can be changed in config.php by setting the variable $DeleteKeyPattern (see [[Edit Variables]]). If there is a danger of malicious page deletion it may be a good idea to change the delete word to something more obscure. There is also a recipe for creating a separate delete action at Cookbook:DeleteAction.%0a%0a%0a>>faq%3c%3c [[#faq]]%0a%0aQ: Deleting [[Wiki Groups]] & [[Categories]]: Once I create a Group or Category, how can I get rid of that group or category?%0aA: An admin can just remove the unwanted pages from wiki.d/ . Normally, doing it via the wiki%0adoesn't resolve the problem, since it counts as an "update" which causes the [[Recent Changes]] page to be re-created, but it is possible to modify the site's configuration to allow deletion of the group's RecentChanges page -- see Cookbook:RecentChangesDeletion.%0a -time=1238274200 +rev=28 +targets=PmWiki.WikiAdministrator,Site.AllRecentChanges,PmWiki.EditVariables,PmWiki.WikiGroup,PmWiki.Categories,PmWiki.RecentChanges +text=(:Summary: Page maintenance:)%0aTo delete a page, edit the page, select (highlight) all text in the edit textarea and replace it with the single word%0a%0a->[@delete@]%0a%0aNote that it may be a good idea to add a comment to the field @@summary@@%0aexplaining why you deleted the page. (The field @@summary@@ is usually found%0ajust below the edit textarea).%0a%0aAfter saving the changes the page is deleted. As an added safety feature, the deleted page still exists on the server (with a timestamp) and can be restored to the former page by the [[wiki administrator]].%0a%0aIf you suspect that a page has been deleted but aren't sure, have a look at the wikigroup's [=RecentChanges=]. Erasing a page counts as editing the page, and the activity is recorded there and on [[{$SiteGroup}.AllRecentChanges]].%0a%0aThe default word used for page deletion ("delete") can be changed in config.php by setting the variable $DeleteKeyPattern (see [[Edit Variables]]). If there is a danger of malicious page deletion it may be a good idea to change the delete word to something more obscure. There is also a recipe for creating a separate delete action at Cookbook:DeleteAction.%0a%0a%0a>>faq%3c%3c [[#faq]]%0a%0aQ: Deleting [[Wiki Group]]s & [[Categories]]: Once I create a Group or Category, how can I get rid of that group or category?%0aA: An admin can just remove the unwanted pages from wiki.d/ . Normally, doing it via the wiki%0adoesn't resolve the problem, since it counts as an "update" which causes the [[Recent Changes]] page to be re-created, but it is possible to modify the site's configuration to allow deletion of the group's RecentChanges page -- see Cookbook:RecentChangesDeletion.%0a +time=1238888092 Index: wikilib.d/PmWiki.GroupFooter =================================================================== --- wikilib.d/PmWiki.GroupFooter (.../pmwiki-2.2.1) (revision 2344) +++ wikilib.d/PmWiki.GroupFooter (.../pmwiki-2.2.2) (revision 2344) @@ -1,12 +1,12 @@ version=pmwiki-2.2.1 ordered=1 urlencoded=1 -agent=Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.7) Gecko/2009030422 Ubuntu/8.04 (hardy) Firefox/3.0.7 -author=Pm +agent=Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.172.30 Safari/530.5 +author=Simon charset=ISO-8859-1 -csum= +csum=add summary ctime=1219202352 -host=72.181.176.220 +host=202.37.32.2 name=PmWiki.GroupFooter -rev=55 +rev=57 targets=PmWiki.DocumentationIndex,PmWiki.Variables,PmWiki.GroupF -text=%0a[[#trailstart]] (:comment included in PmWiki localisation headers and footers :)%0a(:if ontrail {*$Group}.DocumentationIndex#trailstart#trailend {*$Name}:) %0a(:div style="clear:right; float:right; font-size:smaller; background-color:#eee;":)%0a%3c|[[{*$Group}/Documentation index(#trailstart#trailend)]]|> %25%25%0a(:divend:)%0a(:ifend:)%0a(:if ontrail {*$Group}.Variables {*$Name}:) %0a(:div style="clear:right; float:right; font-size:smaller; background-color:#ddd;":)%0a%3c|[[{*$Group}/Variables]]|> %25%25%0a(:divend:)%0a(:ifend:)%0a[[#trailend]]%0a[[%3c%3c]]%0a>>bgcolor=#ffe border-top="1px solid black" font-size=.8em%3c%3c%0a(:if name *-Talk:)%0aThis is a talk page for improving [[{(substr "{*$FullName}" 0 -5)}]].%0a(:else:)%0aThis page may have %25commentout-pmwikiorg%25 a more recent version on [[(http://www.)pmwiki.org]]: [[PmWiki:{*$Name}]], and %25%25 a talk page: [[PmWiki:{*$Name}-Talk]].%0a(:ifend:)%0a -time=1238277478 +text=(:Summary:Trail and talk page links:)%0a[[#trailstart]] (:comment included in PmWiki localisation headers and footers :)%0a(:if ontrail {*$Group}.DocumentationIndex#trailstart#trailend {*$Name}:) %0a(:div style="clear:right; float:right; font-size:smaller; background-color:#eee;":)%0a%3c|[[{*$Group}/Documentation index(#trailstart#trailend)]]|> %25%25%0a(:divend:)%0a(:ifend:)%0a(:if ontrail {*$Group}.Variables {*$Name}:) %0a(:div style="clear:right; float:right; font-size:smaller; background-color:#ddd;":)%0a%3c|[[{*$Group}/Variables]]|> %25%25%0a(:divend:)%0a(:ifend:)%0a[[#trailend]]%0a[[%3c%3c]]%0a>>bgcolor=#ffe border-top="1px solid black" font-size=.8em%3c%3c%0a(:if name *-Talk:)%0aThis is a talk page for improving [[{(substr "{*$FullName}" 0 -5)}]].%0a(:else:)%0aThis page may have %25commentout-pmwikiorg%25 a more recent version on [[(http://www.)pmwiki.org]]: [[PmWiki:{*$Name}]], and %25%25 a talk page: [[PmWiki:{*$Name}-Talk]].%0a(:ifend:)%0a>>%3c%3c%0a +time=1244408716 Index: wikilib.d/PmWiki.ChangeLog =================================================================== --- wikilib.d/PmWiki.ChangeLog (.../pmwiki-2.2.1) (revision 2344) +++ wikilib.d/PmWiki.ChangeLog (.../pmwiki-2.2.2) (revision 2344) @@ -3,9 +3,9 @@ author=Petko charset=ISO-8859-1 csum= -host=81.65.14.164 +host=86.69.109.11 name=PmWiki.ChangeLog -rev=879 -targets=PmWiki.MailingLists,PmWiki.WikiFarms,SiteAdmin.SiteAdmin,PmWiki.Version,SiteAdmin.Status,SiteAdmin.AuthList,PmWiki.PageTextVariables,PmWiki.Links,PmWiki.WikiStyles,PmWiki.PageLists,PmWiki.Forms,PmWiki.PageListTemplates,PmWiki.FAQ,Site.AuthList,PmWiki.Passwords,PmWiki.Skins,PmWiki.PageVariables,PmWiki.MarkupExpressions,Site.PageListTemplates,PmWiki.PageDirectives,PmWiki.ConditionalMarkup,PmWiki.AuthUser,PmWiki.PagelistVariables,PmWiki.Uploads,PmWiki.WikiTrails,PmWiki.TableDirectives -text=(:Summary: Log of changes made to PmWiki by [[Release(Notes)]]:)%0aSee [[Cookbook:RecentChanges | the cookbook recent changes page]] for additional updates and activity by other developers, or join the [[PmWiki/MailingLists | pmwiki mailing lists]] to discuss feature development with us.%0a%0a!!! Version 2.2.1 (2009-03-28)%0a* Fix $FPLTemplateMarkupFunction which somehow didn't get in the 2.2.0 archive.%0a* Fix wikitrails to work cross-group (PITS:00407).%0a* Add $EnableRedirectQuiet variable (PITS:00919).%0a* Fix [={$Title}=] could display global variables (reported by HansB).%0a* Fix reloaded form submissions could lose values (reported by DaveG).%0a* Fix preview while restoring a version from history (PITS:01081).%0a* Fix relative links with international characters (reported by G. Hermanowicz).%0a* Add in sample-config.php example call to xlpage-utf-8.php (PITS:01066).%0a* Update documentation.%0a* Fix guiedit.php to produce valid HTML.%0a%0a!! Version 2.2.0 (2009-01-18)%0a* Convert beta series to official release series.%0a* Add $FPLTemplateMarkupFunction (PITS:00984, requested by John Rankin).%0a%0a!!! [[#beta68]] Version 2.2.0-beta68 (2008-08-14)%0a* Fix E_NOTICE errors reported by Dominique Faure.%0a* Enable [@(:redirect:)@] directives in pagelists.%0a%0a!!! [[#beta67]] Version 2.2.0-beta67 (2008-07-13)%0a* Add [={$LastModifiedTime}=] page variable.%0a* Add $EnableSessionPasswords variable to control session password usage.%0a* Add $SessionEncode and $SessionDecode variables to specify functions for encoding/decoding sensitive session data.%0a* Updated httpauth.php to use SessionAuth instead of poking in session guts directly.%0a%0a!!! [[#beta66]] Version 2.2.0-beta66 (2008-07-04)%0a* Add content-type/charset to Abort() output (suggested by Petko).%0a* Close minor XSS vulnerability (PITS:01030).%0a* Add "nested if" capability.%0a* Fix bug in $Transition handling that would enable all transitions if any were set (reported by John Rankin).%0a %0a%0a!!! [[#beta65]] Version 2.2.0-beta65 (2007-11-17)%0a* Fix SiteAdmin.AuthList so that it defaults to list=all (reported by Roman).%0a* Fix pmwiki skin to include xmlns= attribute in %3chtml> tag (PITS:00989, reported by Mateusz Czaplinski and Petko Yotov).%0a%0a!!! [[#beta64]] Version 2.2.0-beta64 (2007-11-13)%0a* Add times to PmWiki date parsing (e.g., 2007-08-09T12:22:04).%0a* Suppress warning from ini_set in diag.php (suggested by Petko).%0a* Fix handling of -> links in trails (reported by Eemeli Aro).%0a* Add .kml and .kmz as valid attachment types. %0a* Fix handling of [=&=] in markup (PITS:00988, reported by Stirling Westrup).%0a* Fix duplication of language markers in $XLLangs (PITS:00987, reported by Stirling Westrup).%0a* Correct typo in DRange() call in stdmarkup.php (reported by Stirling Westrup).%0a* Turn on error displays when diagnostics are enabled.%0a* Default PHP's pcre.backtrack_limit to at least 1000000.%0a%0a!!! [[#beta63]] Version 2.2.0-beta63 (2007-07-31)%0a* Added $SkinDirectivesPattern to allow adjustments to available skin directives (requested by Petko).%0a* Fix default permissions on Site.AuthUser and Site.AuthList (reported by Scott Connard).%0a* Add "monospace" to pmwiki.css default (reported by Joshua Timberman, with assistance from H. Fox)%0a* Fix problem with slashes in wildcards to name= and group= parameters (reported by Ian MacGregor).%0a%0a!!! Version 2.2.0-beta62 (2007-07-21)%0a* Fix bug in trails introduced by beta61 (reported by charlequin).%0a%0a!!! Version 2.2.0-beta61 (2007-07-19)%0a* Add ability to grab trails by section.%0a* Add an "ontrail" condition (from suggestions by charlequin).%0a%0a!!!Version 2.2.0-beta59, 2.2.0-beta60 (2007-07-18)%0a* Fix problem with upgrade.php on [[wiki farms]] (reported by Scott Connard).%0a* Fix problem with distributed version of Site.AuthUser (reported by Jon Haupt).%0a%0a!!!Version 2.2.0-beta58 (2007-07-17)%0a* Significant change: Site.AuthUser, Site.Blocklist, Site.ApprovedUrls, and Site.NotifyList now appear in the [[SiteAdmin]] group by default.%0a** Note: if you limit groups by setting $GroupPattern, you now need to include SiteAdmin (see [[Cookbook:LimitWikiGroups]])%0a* Abort if ldap: authentication requested and libraries aren't present.%0a* Added "upgrades.php" script to handle various migration issues.%0a* Current PmWiki [[version]] is now held in [[SiteAdmin.Status]] .%0a* Fix ?action=postupload to follow ?action=upload settings.%0a* Improvements to [[SiteAdmin.AuthList]] page (suggestions and fixes from Ian MacGregor).%0a* Allow leading underscores in attachment names (requested by Christophe David).%0a%0a!!!Version 2.2.0-beta57 (2007-06-15)%0a* Fix AsSpacedUTF8() to work like AsSpaced() (reported by Petko).%0a* Qualify page links that contain parentheses (reported by Petko).%0a* Fix bug in [@(:input default $:var ... :)@] (reported by Crisses).%0a%0a!!!Version 2.2.0-beta56 (2007-06-13)%0a* Fix AsSpaced() to not add spaces before leading digit, and treat hyphenated digits as complete numbers.%0a* Fix infinite recursion in self-referencing [[page text variables]] (PITS:00915).%0a* Fix bug introduced in beta55 not handling end [[links|anchors]] correctly (reported by Roman).%0a%0a!!!Version 2.2.0-beta55 (2007-06-11)%0a* Fix attributes to [@(:input e_form:)@] (PITS:00387, re-reported by Crisses).%0a* UpdatePage() now calls StopWatch() to record posting.%0a* Display stopwatch output as part of redirect.%0a* Fix [[wiki styles]] bug when $EnableLinkPageRelative is set (reported by Petko).%0a* Revise TextSection() code to hopefully avoid %25newwin%25[[http://pcre.org/|pcre]] limits (reported by Kathryn Andersen, Knut Alboldt).%0a* Add wrap=inline and wrap=none options to [[page list(s#pagelistwrap)]].%0a%0a!!!Version 2.2.0-beta53, 2.2.0-beta54 (2007-06-02)%0a* Improve error message reporting for markup rules (suggestion by Knut Alboldt).%0a* Clean up more E_NOTICE warnings (reported by Ian MacGregor).%0a* Add focus= option to [=(:=][[forms|input]]:) controls.%0a* Added CSS [@.faqtoc@] class, to be able to display only the questions coming from the #includefaq [[page list template(s)]].%0a* Changed [[PmWiki.FAQ]] to use .faqtoc class.%0a* Fix bug in TextSection (PITS:00935, reported by Jean-Fabrice).%0a* Fix bug in [[page list(s#pagelisttrail)]] caching of trails.%0a%0a!!!Version 2.2.0-beta52 (2007-05-26)%0a* Add per-PageStore attributes (from a suggestion by Tobias Thelen).%0a* Add [@{$PasswdRead}@], [@{$PasswdEdit}@], etc. to display page password settings.%0a* Add [[Site.AuthList]] to display all password permissions on a site.%0a* Reorder $PageListFilters slightly.%0a* Add "passwd=" option to [[page list(s#pagelistpasswd)]], to return only those pages that have some sort of [[password(s)]] attribute on them.%0a* Add line numbers to StopWatchHTML output.%0a* Clean up handling of $AuthCascade.%0a%0a!!!Version 2.2.0-beta51 (2007-05-23)%0a* Add fmt=count to [[page list(s#pagelistcount)]] (reminder from Hans).%0a* Ignore hidden files in [[skin(s)]] directories when searching for .tmpl (suggestion by Stephan Becker).%0a* Clean up queuing of pages to be updated in .pageindex .%0a* Reset $LinkTargets() at beginning of each UpdatePage() sequence.%0a%0a!!!Version 2.2.0-beta50 (2007-05-22)%0a* Fix HTML cache when drafts are enabled, or other recipes using CondAuth().%0a* Prevent [[page lists]] with protected pages from HTML cache.%0a%0a!!!Version 2.2.0-beta48, 2.2.0-beta49 (2007-05-21)%0a* Fix spurious value= attribute in %3ctextarea> tag generated by [@(:input textarea ... :)@].%0a* Allow either [@(:input default ...:)@] or [@(:input defaults ...:)@].%0a* Fix problem with page text variable handling in [@(:input defaults:)@].%0a* Allow either [@(:template default:)@] or [@(:template defaults:)@] in [[page list templates]].%0a* Fix a bug handling dates with suffixes (reported by Crisses).%0a%0a!!!Version 2.2.0-beta47 (2007-05-20)%0a* Fix bug with quote handling in [@(:include:)@] options (reported by Hans).%0a%0a!!!Version 2.2.0-beta46 (2007-05-19)%0a* Moved $PageTextVarPatterns definition from scripts/stdmarkup.php to pmwiki.php.%0a* Ignore Markup() rules that have unresolved $when parameters.%0a* Fix issue in authuser.php when $auth array isn't set (contributed by Ben Stallings).%0a* The [@(:include:)@] directive now performs template argument processing on the included text.%0a* Optimized [@(:pagelist:)@] slightly when sorting on [[page variables]].%0a* Refactored [@(:input ... :)@] markups.%0a* Added HandleDispatch(), which allows action handlers to easily redispatch to other actions (and add messages).%0a* Added FmtTemplateVars(), to perform various template-substitutions.%0a%0a%0a!!!Version 2.2.0-beta45 (2007-05-02)%0a* Update pmwiki's date parsing to use a common routine, recognizing dates within strings and restricting range to 1900-2039.%0a* Add additional parameter to "date" conditional.%0a* Add if= option to [[page list(s#pagelistif)]] (suggested by Crisses).%0a* Refactor code to use TextSection() and RetrieveAuthSection() functions.%0a* The value= parameter to [@(:input textarea:)@] now works properly (including values loaded from $InputValues).%0a* The [@(:input default:)@] directive now allows loading input control defaults from another page via the [@source=@] parameter.%0a* Remove automatic call to FmtPageName() in $ROSPatterns. Add $ROEPatterns (from suggestions by JB and others).%0a* Fix minor variable bugs in scripts/crypt.php.%0a* Remove E_NOTICE errors (reported by Hans).%0a* Fix handling of page variables when pagename is empty or not provided.%0a* Add $EnableLinkPageRelative configuration option.%0a* Clean up handling of arguments to [@{(ftime ...)}@].%0a* Remove mailposts.php call in stdconfig.php (reported by Christophe David).%0a%0a!!!Version 2.2.0-beta44 (2007-04-16)%0a* Fix case conversion of U+027D and U+026B (reported by Petko).%0a* Add $FTimeFmt to set default formatting for [@{(ftime)}@].%0a* Add %25s conversion to [@{(ftime)}@] for systems that don't have it by default.%0a* Report an error if edit [[form(s)]] cannot be read (suggested by Hans).%0a* Don't report ?cannot acquire lockfile when simply browsing pages.%0a* Add $EnableReadOnly flag to signal when PmWiki is to be run in read-only mode.%0a%0a!!!Version 2.2.0-beta43 (2007-04-15)%0a* Update drafts code to add $EnablePublishAttr and change button labels when drafts are enabled (PITS:00755).%0a* Removed no-longer-needed 'compat1x.php' and 'mailposts.php' from distribution.%0a* Added $DraftRecentChangesFmt.%0a* Added "[[markup expressions]]" [@{(...)}@] into the core.%0a* Added charset= attribute to saved pages.%0a* Update pagelist.php and xlpage-utf-8.php to handle case-insensitive searches.%0a* Added some optimizations to phpdiff.php script to produce more useful history information.%0a%0a!!!Version 2.2.0-beta42 (2007-03-27)%0a* Fix a bug with order=title in pagelists (reported by Anno).%0a%0a!!!Version 2.2.0-beta41 (2007-03-26)%0a* Added $EnableWSPre option, which allows easy adjustment of the "leading space -> preformatted text" (or "whitespace") rule.%0a* Added a new "pre" wikistyle, to designate blocks that are to be treated as preformatted text.%0a%0a!!!Version 2.2.0-beta40 (2007-03-24)%0a* Fix bug with order=title in pagelists when using $Titlespaced (PITS:00906, reported by Feral).%0a* Report state of allow_url_fopen when downloads fail in blocklist.php.%0a%0a!!!Version 2.2.0-beta39 (2007-03-23)%0a* Allow page variable filters to appear as options in [@(:template defaults:)@] (reported by SteP).%0a* Updated [[Site.PageListTemplates]] to use [@(:template:)@] directives.%0a* Remove '#wikileft h1' and '#wikileft h5' from pmwiki default stylesheet.%0a%0a!!!Version 2.2.0-beta38 (2007-03-22)%0a* Strip control characters from $ChangeSummary.%0a* Fix problem with count=m..n where m..n is outside the range of available pages (reported by SteP).%0a* Allow [@(:template default ...:)@] to specify a class= option.%0a* [[PmWiki/PageDirectives#redirect|Redirect]] pagename can now include an anchor (PITS:00558)%0a%0a!!!Version 2.2.0-beta37 (2007-03-16)%0a* Allow an optional space after comma separators in wildcard patterns (reported by Han Baas).%0a%0a!!!Version 2.2.0-beta36 (2007-03-16)%0a* Allow nested [[page text variables]] to work, remove extraneous ENT_NOQUOTES parameter.%0a* Add new [@(:template ...:)@] directives for pagelist templates.%0a* Modify count= option to pagelists to allow for alternate ranges.%0a%0a!!!Version 2.2.0-beta35 (2007-03-05)%0a* Fix bug in [[conditional markup]] parsing (reported by Christophe David).%0a%0a!!!Version 2.2.0-beta33, 2.2.0-beta34 (2007-03-01)%0a* Refactor wildcard handling into its own GlobToPCRE function.%0a* Allow negated wildcards for page variable filters in pagelists (PITS:00878, reported by Jiri)%0a* Fix wildcards so that spaces no longer separate patterns (use commas).%0a* Fix handling of '&' prior to [@(:input:)@] and other directives (reported by Luigi).%0a* Adjust position of [@%25define=...%25@] [[wiki styles]] to occur after ampersands.%0a* Adjust copyright dates on many files.%0a* Allow spaces around text variable names in [[page text variable(s)]] markups.%0a%0a!!! [[#beta32]] Version 2.2.0-beta32 (2007-02-28)%0a* Fix erroneous $EnableCreole item in docs/sample-config.php (reported by Sigurd).%0a* Added [@(:elseif:)@] and [@(:else:)@] markups (PITS:00787).%0a* Fix global $Skin variable handling when using SetSkin from within markup.%0a* Make sure directives aren't treated like [[page text variables]] (reported by Petko).%0a* Remove call to ResolvePageName() from authuser.php .%0a* Simplify [[PmWiki/AuthUser#LDAP|LDAP]] authentication for Active Directory sites.%0a* Cache lowercase/uppercase patterns in AsSpacedUTF8().%0a%0a!!!Version 2.2.0-beta31 (2007-02-11)%0a* Fix bug with sorting on [[pagelist variables]] (reported by Kathryn Andersen).%0a%0a!!!Version 2.2.0-beta29, 2.2.0-beta30 (2007-02-09)%0a* MakePageName now uses the first matching entry of $PagePathFmt as the home page of groups without a home page.%0a* Add AsSpacedUTF8() to handle title spacing in utf-8 (PITS:00875, contributed by Petko, Celok)%0a* Fix $RequestedPage when running with utf-8.%0a* Add %3cmeta> content-type tag for utf-8.%0a* Add an experimental caching system for pagelists.%0a* Fix $SuffixPattern and link suffixes for utf-8 (PITS:00881, reported by ppip).%0a%0a!!!Version 2.2.0-beta28 (2007-02-03)%0a* Update blocklist.php so that all posted fields are checked for block values (PITS:00850).%0a%0a!!!Version 2.2.0-beta27 (2007-01-25)%0a* Fix markup processing sequence for [@(:input default:), (:input select:)@], etc. (problem noted by Marc).%0a* Fix default value of [@order=@] parameter to MakePageList().%0a%0a!!!Version 2.2.0-beta26 (2007-01-23)%0a* Fix a bug where pagelist list= option had no effect when reading from trails (from an rss problem noted by Russ Fink).%0a%0a!!!Version 2.2.0-beta24, 2.2.0-beta25 (2007-01-22)%0a* Add a scripts/creole.php module for Creole markup (http://www.wikicreole.org/).%0a* Move WikiWords out of the core defaults -- can be enabled via $EnableWikiWords.%0a* Fix handling of WikiWords following & or #, as in [=Æ and #FFFF00=] (reported by Moni Kellermann).%0a* Adjust FormatTableRow() to support Creole-style tables (using single |'s).%0a* Update docs/sample-config.php with new configurations and options.%0a* Added code to allow Abort() to refer to additional information on pmwiki.org.%0a* Added $EnableSkinDiag, which checks templates for required %3c!--HTMLHeader--> and %3c!--HTMLFooter--> directives.%0a* Removed deprecated $BasicLayoutVars support from skins.php.%0a%0a!!!Version 2.2.0-beta22, 2.2.0-beta23 (2007-01-17)%0a* Added $EnableActions, to allow pmwiki.php to be included without generating output (from a suggestion by Wouter Groeneveld).%0a* Fix bug in "order=" option to [@(:pagelist:)@] (reported by Mike Bishop).%0a* Change DisplayStopWatch() function to StopWatchHTML().%0a* Allow multiple lines for markup:, wiki:, and page: template directives (reported by Marc)%0a%0a!!!Version 2.2.0-beta21 (2007-01-12)%0a* Fix %3cvspace> bug in searchresults output (PITS:00846, reported by M. Czaplinski, marc, and others).%0a* Fix numerous E_NOTICE warnings and incorrect constants (PITS:00853, contributed by AndrewFyfe).%0a%0a!!!Version 2.2.0-beta20 (2007-01-11)%0a* $FeedPageListOpt needs to be declared global in feeds.php.%0a* Add "404 Not Found" status code to ?invalid page name aborts (PITS:00854, suggested by Athan).%0a* Remove stale entries from $PageExistsCache when a new PageStore is added (reported by Hans).%0a%0a!!!Version 2.2.0-beta19 (2006-12-29)%0a* Have blocklist check $_POST['text'] only when it is set (from a report by Simon).%0a%0a!!!Version 2.2.0-beta18 (2006-12-28)%0a* Change $pagename parameter in UpdatePage() to be passed by reference (suggestion by J. Meijer).%0a* Fix $EnableRobotsCloakActions so that it works again with page variables.%0a* Add "XML Sitemaps" to $RobotPattern.%0a* Change $MetaRobots to return "nofollow,noindex" for non-existent pages.%0a* Prefer "404 Not Found" to "403 Forbidden" for [[(PmWiki:)robots]] attempting to do invalid actions on non-existent pages.%0a* Add rel='nofollow' to "create attachment" links.%0a* Added class='inputbox' to select boxes (suggested by Hans).%0a* Added .odt, .ods, and .odp file extensions to allowed [[uploads]] (suggested by Algis Kabaila, Robin Sheat, and others).%0a* Clean up some error warnings (PITS:00801, contributed by psvo).%0a* Set $ScriptUrl to 'https:' when accessed via SSL link (suggestions from C. Ridderström, H. Fox, PITS:00410, PITS:00527, PITS:00595).%0a* Fix bug in link= and trail= options to [@(:pagelist:)@] (reported by C. Ridderström).%0a%0a!!!Version 2.2.0-beta17 (2006-12-13)%0a* Fix spurious hidden field in [@(:searchbox:)@] output (reported by Hans).%0a* Fix $CaseConversions array for \xc4\xb1 and \xc5\xbf (reported by Petko Yotov).%0a* Refactor [@(:input:)@] markup handling.%0a* Add [@(:input select ...:)@] markup (PITS:00567).%0a* Add [@(:input default ...:)@] markup -- may change before 2.2.0 release.%0a* Add ability to set defaults for radio/checkbox/select controls.%0a%0a%0a!!!Version 2.2.0-beta16 (2006-11-10)%0a* Fix problem with [@(:e_preview:)@] directive when viewing an edit form (reported by Dominique Faure).%0a* Fix out-of-memory problem in scripts/compat1x.php when dealing with large pages to be converted (contributed by Donald Gordon).%0a* Fix problem of Variable: lines immediately followed by newline (reported by Hans).%0a* Fix uninitialized variable errors in FormatTableRow() (reported by Bob Sanders).%0a* Fix second argument of MakeBaseName() (provided by Stirling Westrup).%0a%0a!!!Version 2.2.0-beta15 (2006-10-16)%0a* Fix bug with displaying multi-line [@(:var:value:)@] [[page text variables]] (reported by Pico).%0a* Improve PageStore ls() method slightly, to restrict pagename searches to directories of a given depth (based on an issue reported by Chris Cox).%0a* Added $IsBlocked status variable to scripts/blocklist.php.%0a* Added $UnapprovedLink array to report unapproved links.%0a* Added $TimeISOFmt, $TimeISOZFmt, and $CurrentTimeISO variables.%0a* Switched scripts/feeds.php to use $TimeISOZFmt instead of $ISOTimeFmt.%0a* Added [@request=@] option to [@(:pagelist:)@], switched pagelist to default to not use url/form parameters.%0a* Fixed bug with array [@{$$options}@] in pagelist.%0a%0a!!!Version 2.2.0-beta14 (2006-10-06)%0a* Fix problem with extra parameter to mail when $NotifyParameters is empty (reported by Tom Lederer).%0a* Improve configurability of $SearchPatterns (from suggestions by Stirling Westrup).%0a* Add ability for $WikiWordCount to disable wikiword spacing (PITS:00327).%0a%0a!!!Version 2.2.0-beta13 (2006-10-04)%0a* Fix handling of angle brackets (and potential XSS) in pagelists combined with page text variables (noted by Pico).%0a%0a!!!Version 2.2.0-beta12 (2006-10-03)%0a* Added the UpdatePage() function into the core. %0a%0a!!!Version 2.2.0-beta11 (2006-10-03)%0a* Added ability to automatically create targets.%0a* Added sample code to docs/sample-config.php for automatic generation of Category.* pages.%0a* Fixed character escapes in pagelist [@{$$option}@] variables.%0a%0a!!!Version 2.2.0-beta10 (2006-10-02)%0a* Added [@{$$option}@] variables to get option values from [@(:pagelist:)@] (based on a recipe from Martin Fick).%0a* Changed [@{$PageCount}, {$GroupPageCount}, and {$GroupCount}@] to be [@{$$PageCount}, {$$GroupPageCount}, and {$$GroupCount}@].%0a* Added [@{$BaseName}@] page variable and $BaseNamePatterns.%0a%0a!!!Version 2.2.0-beta9 (2006-10-01)%0a* Fix bug with $EnablePageListProtect (reported by Brent Zupp).%0a* Added ability to select based on page variables in [@(:pagelist:)@].%0a%0a!!!Version 2.2.0-beta8 (2006-09-30)%0a* Update scripts/blocklist.php to check only $_POST['text'] instead of entire markup text.%0a* Fix bug in pagelist.php that wouldn't return correctly formatted array in certain circumstances (noted by Florian Fischer and JDem).%0a%0a!!!Version 2.2.0-beta7 (2006-09-30)%0a* Added scripts/blocklist.php to core.%0a* Updated handling of $PageTextVarPatterns.%0a* Eliminated need for extra flush() steps in notify.php, pagelist.php.%0a%0a!!!Version 2.2.0-beta6 (2006-09-27)%0a* Fix bug with initialization of $FeedPageListOpt in scripts/feeds.php (reported by Roman).%0a* Fix bug with over-eager [@(:textvar:value:)@] markup (from a bug reported by Chris Cox).%0a%0a!!!Version 2.2.0-beta4, 2.2.0-beta5 (2006-09-27)%0a* Fix bug with name= option in pagelist (reported by Ben Wilson).%0a* Fix bug with array_merge under PHP 5 (reported by Kathryn Andersen).%0a%0a!!!Version 2.2.0-beta3 (2006-09-26)%0a* Remove extra %3c!----> comment at end of table directives (noted by Ben Stallings).%0a* Fix directive form of page text variables (reported by Kathryn Andersen).%0a* Add first version of new modular pagelist code.%0a%0a!!!Version 2.2.0-beta2 (2006-09-25)%0a* Add support for [@{$:var}@] page text variables, and [@(:var:...:)@] markup.%0a* Fix default setting of $EnableRelativePageVars in docs/sample-config.php .%0a%0a!!!Version 2.2.0-beta1 (2006-09-25)%0a* Added [@{*$var}@] page variables (always the currently browsed page).%0a* Convert link and page variable handling in [=(:include:)=] to be relative to the included page.%0a* Added $EnableRelativePageVars and $EnableRelativePageLinks variables, as well as transition options.%0a* Added basepage= option to [=(:include:)=].%0a* Updated $GroupHeaderFmt and $GroupFooterFmt to use basepage= option.%0a* Adjusted $MakePageNamePatterns to automatically strip any #... or ?... from the end of a pagename input string (solution to a problem reported by J. Meijer).%0a%0a!!!Version 2.1.27 (2006-12-11)%0a* Backport in bug fix for TableRowFormat (from 2.2.0-beta16).%0a* Add support for [@{*$Variable}@] syntax (from 2.2.0 page variables).%0a%0a!!!Version 2.1.26 (2006-09-11)%0a* Fix a bug with variable referencing that caused feeds.php to get a confused PCache (reported by Helge Larsen).%0a%0a!!!Version 2.1.25 (2006-09-08)%0a* Fixed a bug in authuser.php that would fail if $AuthUser isn't defined (reported by Hans Huijgen).%0a* Added %3c!--XMLHeader--> and %3c!--XMLFooter--> aliases to %3c!--HTMLHeader--> and %3c!--HTMLFooter--> directives in skin templates (suggested by John Rankin).%0a* Added $PageExistsCache (suggested by John Rankin).%0a%0a!!!Version 2.1.24 (2006-09-06)%0a* Fixed a bug in authuser.php that had trouble dealing with non-array entries in $AuthUser (reported by Udo).%0a* Can now specify authorization groups using $AuthUser['@group'] entries.%0a* Can now specify an Apache .htgroup-formatted file for authorization groups via $AuthUser['htgroup'].%0a%0a!!!Versions 2.1.21, 2.1.22, 2.1.23 (2006-09-05, 2006-09-06)%0a* Close a potential security hole with $FarmD when register_globals is set "On".%0a* Correct a syntax error in feeds.php (noted by Ben Wilson).%0a* Fix a bug that prevented PmWiki from reading page files generated by versions prior to 0.5.6 (discovered by Milan Avramovic).%0a%0a!!!Version 2.1.20 (2006-09-04)%0a* Fixed a bug in [[PageDirectives#attachlist| [@(:attachlist:)@] ]] when passed a wikiword argument (reported by Kathryn Andersen).%0a* Changed $HTMLStylesFmt['markup'] to honor config.php setting (reported by Hans).%0a%0a!!!Version 2.1.19 (2006-08-30)%0a* Corrected a bug in the pageindex code that was causing the .pageindex to not update as quickly as it should.%0a* Slightly changed the handling of 'width' and 'height' in wikistyles.php, so that they can be be applied as attributes to %3cobject> and %3cembed> tags.%0a* Updated the Keep() function to recognize closing block tags as being in the 'B' block pool.%0a* Fixed a bug with wikistyles and form tags.%0a%0a!!!Version 2.1.18 (2006-08-28)%0a* Closed a potential cross-site scripting vulnerability in table markups (reported by JB).%0a* Added [@(:input image:)@] markup (requested by JB).%0a* Fixed problem with ?action=print failing to set [@{$Action}@] (reported by Bart).%0a%0a!!!Version 2.1.17 (2006-08-26)%0a* Added some improvements to IMS caching to better handle logout and authorization actions (PITS:00573, reported by floozy and Henrik Bechmann).%0a%0a!!!Version 2.1.16 (2006-08-26)%0a* Added $SkinLibDirs variable, to select filesystem and url locations where skins may be found (resolves PITS:00708, as reported by Hagan Fox, with additional suggestions from Ben Wilson).%0a* Changed [@%3c!--HeaderText-->@] to [@%3c!--HTMLHeader-->@] in skin templates, and added an optional [@%3c!--HTMLFooter-->@] directive (PITS:00767).%0a* Adjusted the pmwiki and print skins to use the new directives.%0a%0a!!!Version 2.1.15 (2006-08-25)%0a* Fixed issue dealing with order of [@@_site_*@] passwords (reported by Jean-Fabrice and others).%0a* Added $LocalDir variable (requested by John Rankin).%0a* Removed an unnecessary setting of $DefaultPage in ''scripts/pgcust.php'' (it's now handled by ResolvePageName() ).%0a* Added some variables and changes in wikistyles.php to better support wikipublisher (contributed by John Rankin).%0a* RetrieveAuthPage (PmWikiAuth) now recognizes a $level of 'ALWAYS' as indicating that access should always be allowed, regardless of current passwords or identities.%0a* Added filter specifier for AuthUser LDAP authentication (contributed by Balu).%0a%0a!!!Version 2.1.13, 2.1.14 (2006-08-15, 2006-08-16)%0a* Updated scripts/authuser.php to allow ldaps://... authentications (contributed by Michael Brenner).%0a* Fixed problem with numeric passwords introduced in 2.1.beta20 (reported by Christophe David and Dirk Blaas).%0a%0a!!!Version 2.1.12 (2006-08-07)%0a* Corrected typo in Site.SideBar file (reported by Judith Zacharie).%0a* Suppressed warning message for search on sites without a wikilib.d/ directory.%0a* Added capability for nested divs.%0a* Use $Transition['nodivnest'] to restore previous non-nesting div/table behavior.%0a* Including authuser.php now automatically resolves pagename.%0a* Added [@(:noaction:)@] directive to turn off actions.%0a* Fixed bug in wikistyles prior to image blocks.%0a* Added white-space as allowed wikistyle (suggested by C. Ridderström).%0a* Allow colons, hyphens, and dots in id= tags.%0a%0a!!!Version 2.1.11 (2006-06-09)%0a* Fixed generation of empty paragraphs around [@%25define=...%25@] wikistyles (PITS:00753).%0a%0a!!!Version 2.1.10 (2006-06-04)%0a* Added a %3cspan> around the RecentChanges link in the pmwiki skin (PITS:00750, suggested by Hagan Fox).%0a* Changed the $Action variable to $ActionTitle (PITS:00749, reported by Hagan Fox).%0a* Changed $FPLTemplatePageFmt to be an array of pages to be searched for page templates, enabled searching of current page and Site.LocalTemplates page.%0a* Updated .vspace margin in sidebar for pmwiki skin (PITS:00751, by Hagan Fox).%0a%0a%0a!!!Version 2.1.9 (2006-06-02)%0a* Fixed a bug with [@[[~Author]]@] links (PITS:00530 reported by Klonk, PITS:00611 reported by weijang, PITS:00671 reported by Stirling Westrup, and helpful clues provided by Clayton Curtis).%0a%0a!!!Version 2.1.8 (2006-06-01)%0a* Added ability to specify notification entries from ''local/config.php'' as well as Site.Notify (suggested by Christophe David).%0a* Fixed $Transition['vspace'] from 2.1.7.%0a%0a!!!Version 2.1.7 (2006-05-31)%0a* Adjusted width of edit form for IE browsers (contributed by Roman and H. Fox).%0a* Suppress authentication failure error from LDAP (PITS:00739).%0a* Fixed problem with invalid page names resulting in redirect loop (PITS:00723, reported by jojoo).%0a* Added "Group." and "Group/" page name syntax, resolving PITS:00736 (from a suggestion by Pico).%0a* Changed handling of "vspace" paragraphs.%0a* Fixed some XSS vulnerabilities in uploads.php and url links (reported by Moritz Naumann, http://moritz-naumann.com).%0a* Added notify.php script, allowing finer control of email notifications.%0a%0a!!!Version 2.1.6 (2006-05-22)%0a* Optimized performance of urlapprove.php.%0a* Added [@(:if auth xyz PageName:)@] syntax.%0a* Corrected XSS bug in trails.php.%0a* Slightly improved performance of free links.%0a* Restore ability to use hyphens in InterMap links (reported by Henrik Bechmann).%0a%0a!!!Version 2.1.4, 2.1.5 (2006-03-29)%0a* Fixed problem with pagelist-based feeds (PITS:00709, reported by Jon Haupt).%0a* Added [@{$Action}@] page variable. (PITS:00696, reported by Sebastian Pipping).%0a* Added stripmagic() around variables submitted to authuser.php.%0a* Fixed problem with multi-term searches containing special characters (PITS:00713, reported by Leo).%0a* Switched [[PageDirectives#attachlist| [@(:attachlist:)@] ]] to use a natural case sort (suggested by H. Fox).%0a%0a!!!Version 2.1.3 (2006-03-17)%0a* Re-fixed problem with PHP 5.1.1 and lines= option to [@(:include:)@] (PITS:00620).%0a* Fixed empty LDAP password issue (reported by Thomas Lederer).%0a%0a!!!Version 2.1.2 (2006-03-16)%0a* Fixed %3ch1>/%3ch2> tag mismatches (PITS:00702, reported by Martin Hason).%0a* Fixed bug with $AllowPassword and "nopass" (reported by M. Weiner and bram brambring).%0a* Improved the speed of RSS and other web feeds when $EnablePageListProtect is not set.%0a%0a!!!Version 2.1.1 (2006-03-13)%0a* Fixed a bug with multiple authorization groups as a password (PITS:00699, reported by Ari Epstein).%0a* Updated the authorization code to be a bit more liberal with password/group settings.%0a* Updated PmWiki.FAQ page to be able to grab FAQ items from other pages in the documentation.%0a%0a!!Version 2.1.0 (2006-03-12)%0a* Many many documentation updates (special thanks to many authors).%0a* Allow trailing underscores in upload names (requested by Hans).%0a* Fixed 'ak_print' problem causing accesskey='a' for print (noted by Pico).%0a* Added code to make sure each anchor is generated only once per page (for XHTML validity).%0a* Added a $BlockPattern variable to recognize block HTML tags.%0a* Made an adjustment to Keep() so that it places strings with block HTML into the 'B' pool.%0a* Adjusted stdmarkup.php to not produce paragraphs for keep blocks in the 'B' pool.%0a* Corrected a variety of i18n phrases.%0a* Added class='escaped' to distinguish [=@@...@@=] from [=[@...@]=] (from a comment by Hans).%0a* Slightly changed styling of .faq divs.%0a* Made the edit textarea a couple of rows smaller to better fit on smaller displays (suggested by H. Fox).%0a%0a%0a!!!Version 2.1.beta38 (2006-03-09)%0a* Fixed auth bug in HandleSearchA (reported by noskule).%0a* Fixed print skin to be XHTML 1 compliant and use updated i18n phrases (PITS:00690, contributed by Athan).%0a* Fixed ?action=search to honor markup escapes when checking current page for ([==]:searchresults:).%0a* Fixed bug in handling blank lines in preformatted text.%0a* Fixed extra newlines appearing after [=[@...@]=] markups (reported by H. Fox).%0a* Added class= and caption= arguments for [@(:markup:)@] markup.%0a* Added apply=pre to wikistyles.%0a%0a!!!Version 2.1.beta37 (2006-03-08)%0a* Converted [@(:redirect:)@] to be a true markup, now honors conditional markup and includes. %0a* Added status= option to redirect.%0a* Allow redirecting to an anchor within a page (PITS:00558).%0a* Added experimental server-side page caching.%0a%0a!!!Version 2.1.beta36 (2006-03-06)%0a* Fixed problem with PmWiki under PHP 5.1.2 with lines= option to [@(:include:)@] (PITS:00620, thanks to Eric Wolleson for the fix).%0a* Added [@(:if exists PAGENAME:)@] conditional markup.%0a* Fixed bug with pages using 'nopass' as password (reported by H. Baas and J. Demartini).%0a%0a!!!Version 2.1.beta35 (2006-03-05)%0a* Revised authorization code to be faster/cleaner, and to support "@_site_edit" authorization.%0a* Adjusted Site.SideBar so that edit permissions default to site's edit permissions.%0a%0a!!!Version 2.1.beta34 (2006-03-04)%0a* Updated the simuledit.php script so that an author won't lose edits when the merge fails (PITS:00391).%0a%0a!!!Version 2.1.beta33 (2006-03-02)%0a* Added transparent button images (PITS:00347, suggested by Klonk).%0a* Added some new button images to pub/guiedit, including a button "blank" for creating new buttons.%0a* Added $EditRedirectFmt option to allow save/cancel in ?action=edit to redirect somewhere other than the current page (PITS:00674, requested by T. Dowling).%0a* Restored lost scripts/.htaccess and docs/.htaccess files.%0a* Added [@{$Description}@] page variable, changed feeds.php to use this instead of [@$ItemDesc@].%0a* Added conditional expressions, based on cookbook recipe from D. Faure (PITS:00531).%0a%0a!!!Version 2.1.beta32 (2006-02-27)%0a* Fixed minor glitch with call to flush() in pagelist.php causing spurious "headers already sent" warnings (reported by Robin Sheat and others).%0a%0a!!!Version 2.1.beta31 (2006-02-26)%0a* Changed "inputbox" to "inputbutton" in [@(:searchbox:)@] directive (reported by Hans).%0a* Switched setting of $SkinDir to include a leading "./".%0a* Added option to suppress fields in ?action=attr display.%0a%0a!!!Version 2.1.beta30 (2006-02-25)%0a* Fixed bug with custom $SearchBoxFmt (noticed by Hans and Han Baas).%0a%0a!!!Version 2.1.beta29 (2006-02-24)%0a* Restored default setting of $EnablePageListProtect to 1 (was inadvertently switched to zero in beta27).%0a* Fixed "group=" option in [@(:searchbox:)@], and added ability to pass other options to search results.%0a* Added rule to ignore a blank line immediately following a heading (suggested by J. Durcholz and H. Fox).%0a* Revised pmwiki skin stylesheet (contributed by H. Fox)%0a* Added [@%3c!--PageActionFmt-->@] section to pmwiki skin.%0a* Added [@target=@] option to [@(:searchbox:)@].%0a* Added change to use the current page for ?action=search if it has @@[=(:=]searchresults:)@@ in the page's markup.%0a* $PageSearchForm can now be an array of pages to possibly be used to display the results of ?action=search -- first one found is used (suggested by Hans).%0a* Fixed bug with pageindex not including page's name in list of terms to search.%0a%0a!!!Version 2.1.beta27-28 (2006-02-24)%0a* Removed .linkindex, converted to .pageindex for faster word searches.%0a* Fixed bug with setting of $AuthId after logins.%0a* Added order=group for pagelists (requested by B. Boltwood)%0a* Added appropriate settings for magic_quotes_runtime and magic_quotes_sybase PHP settings.%0a* Fixed problem with include lines=... chopping off last line of text when fewer than requested lines in page.%0a* Updated handling of links to non-existent pages and query strings.%0a* Added some useful comments to scripts/feeds.php.%0a%0a%0a!!!Version 2.1.beta26 (2006-02-16)%0a* Changed PmWiki's default pmwiki.css styles to look a little cleaner in various browsers (suggestions from H. Fox).%0a* The [@(:include:)@] directive now supports a self=0|1 parameter to tell the directive if it should include the current page.%0a* $GroupHeaderFmt and $GroupFooterFmt now have "self=0" added to prevent their contents from being displayed twice.%0a* Page links with query arguments are now treated as "existing page" links even if the page does not exist (from suggestions by Jon Haupt).%0a* Modified scripts/author.php so that $Author is automatically set from $AuthId (unless overridden by a local config or by the author).%0a* Added [@order=random@] option to [@(:pagelist:)@].%0a* Added $Transition['fplbygroup'] to restore FPLByGroup function.%0a* Changed $EnableDefaultWikiStyles to $EnableWikiStyles.%0a* Added $UploadNameChars to allow customization of characters in upload filenames.%0a%0a%0a!!!Version 2.1.beta24-25 (2006-02-08)%0a* Improved interface to transition.php code to allow better granularity.%0a* Changed default of $EnableTransitions to 0.%0a* Fixed problem with [=(:markup:)=] closing divs (reported by H. Fox).%0a* Added $Action value for ?action=search (suggested by H. Fox).%0a* Added class=inputbox and class=inputbutton to various input controls (PITS:00577, suggested by H. Fox, Hans, and others).%0a* Fixed bug with "list=normal" when drafts enabled.%0a%0a!!!Version 2.1.beta23 (2006-02-07)%0a* Fixed bug with PageExists("") returning true (reported by Sebastian Siedentopf and others).%0a* Fixed $InterMapFiles to allow fmt substitutions.%0a* Removed unused $DiffAuthorPageExistsFmt and $DiffAuthorPageMissingFmt from pagerev.php.%0a* Resolved some issues of "double-posts" and simultaneous edits.%0a* Added [@{$LastModifiedSummary}@] page variable.%0a* Allow spaces around '#' in [@[[target | # ]]@] links (suggested by Ryan Varick).%0a* Added docs/UPGRADE.txt (thanks to Hagan Fox).%0a* Added draft capabilities with $EnableDrafts = 1 .%0a* Changed default setting of $UploadUrlFmt to be based on $PubDirUrl (excellent suggestion by Hagan Fox).%0a* Removed problem of simultaneous edits interfering with reading of simple text files in wiki.d/ .%0a* Pressing "Save" with no text changes now actually performs a save.%0a%0a!!!Version 2.1.beta22 (2006-01-28)%0a* Fixed a bug in feeds.php with ?action=dc.%0a* Added code to be able to capture remainder of trail lines in trail index pages.%0a%0a!!!Version 2.1.beta21 (2006-01-27)%0a* Updated page variable code to better handle null values of $pagename.%0a* Improved guard against register_globals poisoning (courtesy of Francesco 'ascii' Ongaro).%0a* Added a %3cpubDate> tag to RSS feeds (from suggestions by Jean Demartini).%0a* Added wildcard capabilities for pagelists and conditional markups.%0a* Improved page-not-found handling, changed Site.PageNotFound (PITS:00556).%0a* Fixed bug in whitespace handling (reported by Christian Ridderstrom).%0a* Fixed handling of query strings and anchors in trail index pages.%0a* Null targets in links now produce null output.%0a%0a!!!Version 2.1.beta20 (2006-01-12)%0a* Redesigned/improved handling of session authorization variables.%0a* Suppressed warning from fileowner/filegroup in fixperms (courtesy Dominique Faure)%0a* Restored Last-Modified headers to algorithm used in 2.1.beta17, but the code now detects changes in configuration files and recipes.%0a* Added @@[=(=]:encrypt %3cphrase>:)@@ markup, to simplify generation of encrypted passwords in Site.AuthUser.%0a%0a!!!Version 2.1.beta18-19 (2006-01-10)%0a* Added 'class=' option to [@(:pagelist:)@] (based on suggestions from H. Bass).%0a* Changed `Site.InterMap to [@{$SiteGroup}.InterMap@].%0a* Fixed E_NOTICE errors.%0a* Corrected bug in $SaveAttrPatterns in scripts/stdmarkup.php.%0a* Removed $text global variable (use $_POST, $_GET, or $_REQUEST['text']).%0a* Removed saving of 'excerpt' attribute -- this is being reworked.%0a* Fixed bug with PageVar's handling of pagenames containing slashes (reported by Hans).%0a* Page action links in PmWiki skin no longer display with "non-existent page" decorations.%0a* Added more [[(PmWiki:)robots]] to $RobotPattern.%0a* Adjusted script to generate Last-Modified headers whenever $LastModFile is set.%0a* Added docs/ directory, several documentation files, and README.txt (courtesy H. Fox).%0a* Moved sample-config.php and COPYING to docs/ directory.%0a%0a!!!Version 2.1.beta16-17 (2005-12-29)%0a* Fixed bug with titled links (reported by blues).%0a* Restored $FPLFunctions variable.%0a* Restored [@(:if enabled:)@] conditional (PITS:00630).%0a* Fixed bug with PCache.%0a* Added rel='nofollow' to various links where [[(PmWiki:)robots]] should not be going (suggestion by H. Fox).%0a%0a!!!Version 2.1.beta15 (2005-12-28)%0a* Removed Main.GroupAttributes and PmWiki.GroupAttributes from the distribution.%0a* Switched to using _crypt() for AuthUserConfig (requested by D. Faure).%0a* Fixed bug in httpauth.php with double-prompting for passwords (noted by M. Weiner).%0a* Added new page variables code, adding PageVar() function and redesigning FmtPageName().%0a* Added [[PmWiki.PageVariables]], removed PmWiki.MarkupVariables.%0a* Added [@(:if equal ...:)@].%0a* Optimized processing of includes and conditional markup.%0a* Optimized PCache().%0a* Removed deprecated $NewlineXXX variable.%0a* Added 'ctime' page attribute.%0a* Redesigned pagelist.php to use pagelist templates.%0a* Changed $EnablePageListProtect to default to 1.%0a* Added Site.PageListTemplates.%0a* Removed FPLByGroup, FPLSimple, and FPLGroup.%0a* Added more conversions to scripts/compat1x.php (suggested by C. Ridderström).%0a%0a!!!Version 2.1.beta13-14 (2005-12-10)%0a* Added scripts/feeds.php, which replaces scripts/rss.php (now removed from the distribution).%0a* Trail links are no longer saved as part of targets=.%0a* Keywords and description markup are saved as meta values in page files, along with an initial portion (excerpt) of the rendered HTML for a page.%0a%0a!!!Version 2.1.beta12 (2005-12-07)%0a* Fixed bug with storing group authorizations via ?action=attr (discovered by Dan Weber).%0a%0a!!!Version 2.1.beta11 (2005-12-06)%0a* Fixed problem with ?action=login for admin password (PITS:00612, reported by Klonk).%0a* Updated xlpage-utf-8.php for sites that have pcre installations that don't understand /u (reported by Andres Kulikauskas).%0a%0a!!!Version 2.1.beta10 (2005-12-05)%0a* Class attributes in wikistyles are now additive.%0a* Added capability for shared pages in farms (PITS:00459).%0a* Fixed XHTML validation problem for empty pagelists (PITS:00601, reported by Mickael Nilsson).%0a%0a!!!Version 2.1.beta9 (2005-11-30)%0a* Added ?action=login.%0a%0a!!!Version 2.1.beta8 (2005-11-30)%0a* Fixed a problem with paragraphs after lists (reported by Bronwyn Boltwood).%0a* Added [[(PmWiki:)robot(s)]] controls to scripts/robots.php (PITS:00563).%0a%0a!!!Version 2.1.beta7 (2005-11-29)%0a* Added capability to load InterMap entries from Site.InterMap page (PITS:00522).%0a* Fixed bug with AuthList code (reported by Ilana Kingsley and others).%0a%0a!!!Version 2.1.beta6 (2005-11-29)%0a* Revised authuser.php to obtain configuration from Site.AuthUser page.%0a* Included capability for authorization groups.%0a%0a!!!Version 2.1.beta5 (2005-11-25)%0a* Fixed bug with read-protected Site.AuthForm (reported by Matt Strauser)%0a%0a!!!Version 2.1.beta4 (2005-11-24)%0a* Fixed bug with authentication after unsuccessful attempt (PITS:00551, reported by Uli and Bronwyn).%0a%0a!!!Version 2.1.beta3 (2005-11-23)%0a* Fixed bug with "id:*" authorization string (reported by Bronwyn).%0a%0a!!!Version 2.1.beta2 (2005-11-22)%0a* Fixed bug with formatting surrounding [=[@...@]=] code blocks.%0a* Added %3cspan class='wikiword'>...%3c/span> around wikiword links to provide additional wikiword formatting.%0a* Changed authorization prompt to default to Site.AuthForm.%0a* Revised PmWikiAuth function to be able to authorize against groups or multiple authentications.%0a* Fixed session handling in authorization code to create and open session only if needed.%0a* Fixed bug with display of directives in page history (PITS:00592, reported by floozy).%0a* Added [@white-space:nowrap@] to command section of pmwiki skin (PITS:00591, contributed by floozy).%0a* Fixed a possible bug with urls for direct-download attachments (PITS:00588, reported by Henning).%0a%0a!!!Version 2.1.beta1 (2005-11-18)%0a* WikiWords are now disabled by default (PITS:00520).%0a* Whitespace at the beginning of lines can be used for nesting within lists (PITS:00562).%0a* Added ability to specify percentages in wikistyles (use "pct" instead of "%25").%0a* Fixed problem with including to end of text (PITS:00560, thanks to Klonk).%0a* Added [@(:if enabled VAR:)@] conditional markup.%0a* Added [@[[target|+]]@] titled markup.%0a* Adjusted %3c/div> markup bug in [@(:markup:)@] (reported by Hans).%0a* Fixed problem of nested apostrophe markups (PITS:00590, reported by floozy).%0a* Added [@(:input file:)@] and $InputValues array (PITS:00566).%0a%0a!!!Version 2.0.13 (2005-11-10)%0a* Fixed PostPreview function to allow page preview even if page is saved.%0a* Fixed downloading code so that large files don't run into memory limits (reported by Daniel Scheibler).%0a* Changed urlapprove.php so that admins can always post.%0a* Fixed XSS bug in pagelist.php (reported by Mauritz Naumann, http://moritz-naumann.com).%0a%0a!!!Version 2.0.12 (19-Oct-2005)%0a* Fixed cast of $ApprovedUrlsFmt in transition.php (reported by Patrick Ogay).%0a* Changed PmWiki's exit() call to a return (PITS:00548, requested by Wesley Tanaka).%0a* Fixed bug that was erroneously converting '&' back to '&' in query fragments (from a bug report by Chris Cox).%0a%0a!!!Version 2.0.11 (17-Oct-2005)%0a* Fixed problem with blank passwords in LDAP authentication (PITS:00547, reported by Paul Eden).%0a* Added support for whitespace indent rules.%0a* Fixed problem with losing history on changing passwords (PITS:00555, thanks to floozy).%0a* Added support for [@(:linebreaks:)@] and [@(:nolinebreaks:)@] (PITS:00549).%0a* Added support for `MySQL passwords in authuser.php (suggestions from Ahmed Ibrahim).%0a* Added an [@(:if date:)@] condition to the markup.%0a%0a!!!Version 2.0.10 (29-Sep-2005)\\%0aVersion 2.0.9 (28-Sep-2005)%0a* Fixed oversight in xlpage-utf-8.php that doesn't upcase ASCII letters when mb_strtoupper isn't present.%0a* Updated copyright dates.%0a%0a!!! Version 2.0.8 (27-Sep-2005)%0a* Changed $Name to $Title in print skin (found by Robert Riebisch).%0a* Added capability to use quotes to enter pass phrases in ?action=attr (requested by Simon).%0a%0a!!! Version 2.0.7 (26-Sep-2005)%0a* Updated xlpage-utf-8.php to use a different case conversion algorithm, and completed tables for other character sets.%0a* Fixed $VersionNum variable.%0a* Added ak_textedit and default value of ',' (PITS:00528, offered by Christoph Lange).%0a* Added a time limit to generation of .linkindex files.%0a%0a!!! Version 2.0.6 (16-Sep-2005)%0a* Updated xlpage-utf-8.php so that mb_strtoupper() is no longer required.%0a* UTF-8 module now is able to handle UTF-8 characters in link suffixes (PITS:00432, reported by Schlaefer).%0a* Fixed a bug with vardoc.php when an empty $VarIndex is loaded (PITS:00491, reported by Jean-Dom).%0a* Improved the guiedit buttons for IE browsers -- selections now work more like one would hope they would (PITS:00515, suggested by floozy).%0a* Fixed %3cscript> tags for XHTML validation (PITS:00486, suggested by Jocke).%0a* Improved author cookie handling with UTF-8 (PITS:00450, noted by Schlaefer)%0a* Fixed author special character handling (PITS:00524, from Dave G) %0a* Added $LogoutCookies to tell ?action=logout which cookies to expire.%0a* Added $CookiePrefix a prefix for cookies set by PmWiki scripts and recipes.%0a* Added $VersionNum numeric variable and ([@{$VersionNum}@] markup to make testing for specific versions easier.%0a%0a!!! Version 2.0.5 (9-Sep-2005)%0a* Cleaned up code for internationalization support.%0a* Added ?action=logout.%0a* Deprecated $Newline for good. Sites that need $Newline set can use $NewlineXXX.%0a%0a!!! Version 2.0.4 (8-Sep-2005)%0a* Eliminated E_NOTICE warning from scripts/prefs.php (reported by Pierre-Marie Carette).%0a* Eliminated other E_NOTICE warnings in various other sections of code.%0a* Adjusted signature patterns (sequences of ~'s) to be more restrictive.%0a* Improved internationalization strings (PITS:00475, noted by Roman).%0a* Added maximum length to change summaries (reported by H. Fox).%0a* Added speed improvements to link= in pagelist, $EnableLinkIndex option.%0a%0a!!! Version 2.0.3 (6-Sep-2005)%0a* Corrected default value settings in scripts/urlapprove.php.%0a* Fixed bug in setting of $sub in authuser.php (PITS:00509, reported by Alexandre B).%0a* Added change summaries into page history display.%0a* Fixed search pages and skin to use $SiteGroup instead of "Site" for search pages.%0a* Added additional attributes to input forms (suggested by Jo Durchholz).%0a%0a!!! Version 2.0.2 (3-Sep-2005)%0a%0a* Fixed bugs in mailposts.php (reported by M. Weiner and D. Scheibler)%0a* Fixed bug in PageStore removing whitespace from end of pages (reported by K. Chan)%0a* Added $EnablePageListProtect option to sample-config.php.%0a%0a!!! Version 2.0.1 (2-Sep-2005)%0a%0a* Temporarily restored setting of $Newline variable for recipes that need it.%0a* Fixed WikiTrail in PmWiki.PageDirectives (submitted by H. Fox).%0a%0a!!! [+Version 2.0.0 (1-Sep-2005)+]%0a%0a* Added `PCache() call for ?action=search (recommended by John Rankin).%0a* Added Path: `InterMap entry for relative urls in links.%0a* Set Site.SideBar to default to no password required for editing (suggested by Hans and others).%0a* Deleted pages are now named [=Group.PageName,del-1234567890=].%0a* Deprecated use of $Newline in `PageStore, now uses urlencoded newlines.%0a* Added new default skin -- old skin is at Cookbook:PmWikiV1Skin.%0a* Added default accesskey values in scripts/prefs.php.%0a* Fixed problem with extra spaces appearing around cells of simple tables (PITS:00402, reported by Klonk).%0a* Fixed problem with wikistyles in search strings (PITS:00495, reported by Radu).%0a* Updated print skin (PITS:00490, reported by Jungle).%0a* Fixed problem with url approvals being included multiple times, case sensitivity (PITS:00466 contributed by Simon).%0a* Added cookbook/.htaccess (suggested by H. Fox).%0a%0a!!!Version 2.0.beta55 (25-Aug-2005)%0a* Added capability to retain previous versions of uploaded files (PITS:00386).%0a* Added LDAP authentication to authuser.php.%0a* Updated Q: and A: markups.%0a* Fixed bug with 'value=' style and numbered lists (reported by Crisses).%0a* Allow dots and parens in wikistyles.%0a* Fixed bug in link= parameter for pagelist markup (reported by W. Mueller).%0a* Changed handling of blank lines in wiki markup.%0a* Changed display characters of page history (suggestions from H. Fox).%0a* Adjusted handling of [=[@...@]=] markup.%0a* Fixed table cells to default to valign='top'.%0a* Fixed >>%3c%3c to generate (:divend:).%0a* Adjusted (:markup:) display.%0a* Added [@%25cframe%25@] wikistyle.%0a* Changed [@(:include:)@] markup to allow selection from multiple pages.%0a* Removed space that is generated as part of \\ joins.%0a%0a!!!Version 2.0.beta54 (1-Aug-2005)%0a* Fixed bug with handling of & in title, description, and keywords directives (reported by Anno).%0a* beta53 was released without several commits; these are now committed.%0a%0a!!!Version 2.0.beta53 (30-Jul-2005)%0a* Added ?action=search, and adjusted search routines to use the new action.%0a%0a!!!Version 2.0.beta52 (29-Jul-2005)%0a* Fixed problem with multiple [@(:nl:)@] directives in sequence (reported by C. Ridderström).%0a* Fixed problem with [@(:markup:)@] appearing at beginning of page.%0a* Fixed problem with escaped-quotes in change summary (reported by J. Durchholz).%0a* Adjusted displayed image syntax%0a* Added float, frame, rfloat, lfloat, rframe, lframe, thumb wikistyles.%0a* Converted [@(:markup:)@] to use tables instead of divs.%0a* Fixed bug with center-aligned images.%0a* Added Content-Style-Type tag to pmwiki.tmpl (suggested by V. Krishn).%0a* Added title= attribute to image tags.%0a%0a!!!Version 2.0.beta51 (22-Jul-2005)%0a* Adjusted posting algorithm, added $EnablePost.%0a* Added default parameter to `HandleDiff (noticed by Robert Riebisch).%0a* Adjusted Site.EditForm to use a \\ break instead of [=[[%3c%3c]]=].%0a%0a!!!Version 2.0.beta50 (20-Jul-2005)%0a* Added major improvements to authorization code, including PITS:00249. [is this the right link? "Summary: Classic skin missing in pmwiki 2.0", I think the right is PITS:00248 - CG]%0a* Support for cascading authorization levels.%0a* $HandleAuth array allows setting of authorization requirements on a per-action basis.%0a%0a!!!Version 2.0.beta49 (18-Jul-2005)%0a* Remove Keep() around trailing \\ markup results (based on a bug noticed by W. Mueller).%0a* Added Content-Disposition: and $DownloadDisposition to indirect downloads.%0a%0a!!!Version 2.0.beta48 (13-Jul-2005)%0a* Adjusted display of change summary in recent changes%0a* Corrected width of edit form%0a%0a!!!Version 2.0.beta47 (12-Jul-2005)%0a* Fixed incorrect manipulation of `GUIEdit/$EditTemplateFmt (reported by Ian Barton).%0a* Fixed magic quoting on $ChangeSummary (reported by Balu).%0a* Added $ChangeSummary to recent changes files.%0a%0a!!!Version 2.0.beta46 (11-Jul-2005)%0a* Fixed lossage in change summary and minor edit checkbox (reported by Balu).%0a%0a!!!Version 2.0.beta45 (10-Jul-2005)%0a* Adjusted "show changes to markup" display to avoid long non-wrapping lines %0a* Fixed wrap problem in guiedit button bar (reported by Des and L. Hausman).%0a%0a!!!Version 2.0.beta44 (10-Jul-2005)%0a* Added session_start() to ?action=diag (suggested by Joachim Durchholz).%0a* Added [@$[phrase]@], [@(:noleft:)@], [@(:noright:)@] markups.%0a* The $PageName substitution is no longer available in FmtPageName().%0a* Added %25accesskey=%25 wikistyle for links.%0a* Changed $ImgTagFmt, added border=0 style to all images in a page.%0a* Added ''transition.php'' script to assist with upgrading from previous releases.%0a* Added capability to create input forms.%0a* Added markup-based edit page form (PITS:00308).%0a* Added change summary capability (from cookbook script).%0a* Added "save and continue edit" and "cancel" options to edit forms (PITS:00290 and PITS:00261).%0a* Changed $EditMessageFmt to $MessagesFmt array, added [@(:messages:)@] markup.%0a* Modified GUI buttons to support accesskeys, added [@(:e_guibuttons:)@] markup.%0a* Added $SiteGroup variable.%0a* Moved `Main.AllRecentChanges to Site.AllRecentChanges .%0a* Moved `Main.SearchWiki to Site.Search.%0a* Moved `Main.ApprovedUrls to `Site.ApprovedUrls.%0a* Moved `Main.PageNotFound to `Site.PageNotFound.%0a* Set robots noindex,nofollow for pages in Site group.%0a* Moved `PmWiki.EditQuickReference and `PmWiki.UploadQuickReference to Site group.%0a* Deprecated `PmWiki.WikiHelp.%0a* Deprecated $PagePreviewFmt variable.%0a* Removed $PageNameFmt substitution.%0a* Added initial capability for user/browser preferences in ''scripts/prefs.php''.%0a%0a%0a%0a!!!Version 2.0.beta43 (8-Jul-2005)%0a* This version adds the long awaited [@(:div:)@] markups.%0a* Added [@%25id=...%25@] wikistyle.%0a%0a!!!Version 2.0.beta42 (7-Jul-2005)%0a* Added [@(:if attachments:)@] markup (suggested by Leigh Hausman and others).%0a%0a!!!Version 2.0.beta41 (7-Jul-2005)%0a* Added [@%25value%25@] wikistyle to set item value for ordered lists (PITS:00457, requested by Richard Rothwell)%0a* Adjusted the output of [[PageDirectives#attachlist| [@(:attachlist:)@] ]] to include thousands separators in file sizes.%0a* Fixed bug with '.' in $UploadDir (PITS:00439, contributed by Zoyo).%0a* Changed Keep() parameter name to $pool, handles nested Keeps() (suggested by Joachim Durchholz, Christian Ridderström, and others).%0a%0a!!!Version 2.0.beta40 (22-Jun-2005)%0a* Added Apache-compatible `MD5 passwords and SHA encryption to authuser.php (contributed by D. Faure).%0a%0a!!!Version 2.0.beta39 (20-Jun-2005)%0a* Adjusted handling of trailing spaces for simple table rows.%0a* Fixed problem with '%25' in simple tables (PITS:00437, PITS:00452, reported by Maxim, Hans, and others).%0a* Fixed problem with wikistyles spanning simple table cells (PITS:00172).%0a* Fixed problem with searches returning errors for open directories (PITS:00455, reported by Henning and Daniel Friedmann).%0a* Added definition lists to wiki trails.%0a* Removed unnecessary call to `LoadTemplate from print template (reported by Winfried Mueller).%0a* Added ''scripts/authuser.php'' -- documentation forthcoming.%0a%0a!!!Version 2.0.beta38 (14-Jun-2005)%0a* Fixed `ListPages() so that it would generate correct page lists when per-group subdirectories are used to store pages (reported by David Sovinski).%0a%0a!!!Version 2.0.beta37 (26-May-2005)%0a* Changed the location in which $SearchIncl, $SearchExcl, and $SearchGroup are set (requested by John Rankin).%0a* Fixed bug in setting of $SearchExcl (reported by H. Fox and others).%0a* Added filesize check after new page is saved but before replacing existing one (suggested by Radu).%0a* Added $LinkUrl and $LinkAlt to urlapprove.php (contributed by Balu).%0a%0a!!!Version 2.0.beta36 (30-Apr-2005)%0a* Fixed bug in search term exclusion (caught/fixed by Nate Cull).%0a* Eliminated trailing spaces problem in simple tables (caught by F. Johnson)%0a%0a!!!Version 2.0.beta35 (24-Apr-2005)%0a* Fixed bugs in [@(:pagelist:)@] (caught by John Coxon).%0a* Adjusted end of sample-config.php, copyright notices.%0a%0a!!!Version 2.0.beta34 (23-Apr-2005)%0a* Fixed group search bug (noted by Hans).%0a* Query string of last search now appears in searchbox.%0a* Removed ?> tags from ends of scripts to help VMS installations.%0a%0a!!!Version 2.0.beta33 (22-Apr-2005)%0a* Fixed performance bug in FmtPageName and `LinkPage.%0a* Redesigned scripts/pagelist to add new directives and features (major change -- see ReleaseNotes).%0a%0a!!!Version 2.0.beta32 (17-Apr-2005)%0a* Added $RCLinesMax, which can be used to limit the total number of lines in RecentChanges files.%0a%0a!!!Version 2.0.beta31 (15-Apr-2005)%0a* Added ability to password-protect uploads, via ?action=download and $EnableDirectDownload (PITS:00109).%0a* Added $EnableFixedUrlRedirect (requested by Monty and Fred Chittenden).%0a%0a!!!Version 2.0.beta30 (14-Apr-2005)%0a* Fixed issues with PHP sessions causing deadlock situations.%0a* Improved PmWiki's locking algorithms.%0a* Added $PageTextStartFmt and $PageTextEndFmt (requested by John Rankin)%0a* Fixed wiki link function so that wikiwords aren't automatically spaced if $LinkWikiWords = 0.%0a%0a!!!Version 2.0.beta29 (11-Apr-2005)%0a* Fixed bizarre bug with font scaling on European locales (PITS:00357, reported by Christian Schneider).%0a* Fixed %3cpre>...%3c/pre> bug with preformatted text (Cookbook:NoSpacePre, noted by Tom Holroyd).%0a* Improved page storage and reading algorithm for greater efficiency.%0a* Changed various actions to avoid reading page history if not needed.%0a* Changed `PageStore class to optimize generation of filenames for standard installations (from a suggestion by Martin Fick).%0a* Added preliminary code for %0a** user-based authorization (PITS:00010)%0a** form-based authorization (PITS:00026, PITS:00264)%0a** better display of password settings in attributes form (PITS:00301)%0a** webserver authentication%0a** .htpasswd authentication%0a** LDAP/Active Directory Server authentication%0a* Added conditional markups for authorization privileges and login status%0a%0a!!!Version 2.0.beta28 (27-Mar-2005)%0a* Added ability to link to other pages' attachments.%0a* Added ext= option to [[PageDirectives#attachlist| [@(:attachlist:)@] ]] to limit output to selected extensions (PITS:00389, requested by corqspy).%0a* Added option to [[PageDirectives#attachlist| [@(:attachlist:)@] ]] to request listing of attachments for a page other than the current one.%0a* Fixed incompatibility problem between `PmWiki.UploadQuickReference and markup extensions recipe (PITS:00377, reported by gaoj).%0a* Changed attachments code to force extensions to lowercase (PITS:00315, suggestions from Hagan Fox, Didier Lebrun, Henning, and PRZ).%0a* Added comment to pmwiki.php regarding comments in pmwiki.php.%0a%0a!!!Version 2.0.beta27 (26-Mar-2005)%0a* Made directives case-insensitive (requested by John Coxon).%0a* Fixed bug in `VarIndexLoad() (noticed by Dominique Faure).%0a* Added (:markup:) with [=[@...@]=] arguments (requested by Neil Herber).%0a* Added (:markupend:) syntax.%0a* Fixed bug in $MetaRobots (PITS:00393, noticed by Didier Lebrun).%0a* Added missing ?> to various script files (PITS:00403, reported by Schlaefer).%0a* Allow localmap.txt files to contain variable substitutions (requested by C. Ridderström).%0a* Fixed bug in Markup() with rule dependencies.%0a* Added missing [@{$FullName}@] markup.%0a* Fixed bug with preformatted markup eating leading spaces (repeatedly reported by C. Ridderström).%0a%0a%0a!!!Version 2.0.beta26 (5-Mar-2005)%0a* Added edit page templates (PITS:00113, requested by many administrators).%0a* Fixed bug with search box code in pmwiki template (noticed by mistyfire).%0a%0a!!!Version 2.0.beta25 (2-Mar-2005)%0a* Heading markups now consume an optional space following the markup chars (suggested by H. Fox).%0a* Added option to `ParseArgs() to allow capture of arguments in the order specified (suggested by C. Ridderström).%0a%0a!!!Version 2.0.beta24 (1-Mar-2005)%0a* Fixed loss of version number in wiki field (PITS:00217, found by Hugo Alrøe).%0a* Fixed bug with handling of '?'s encoded as %253f in incoming urls. %0a* Fixed mis-handling of "`PageNotFound" requests.%0a* Added $EnablePostAttrClearSession switch to control remembering of session's passwords when posting attributes (requested by Dirk Blaas).%0a* List markups now consume optional space following markup char.%0a* Added `ParseArgs() function for uniform handling of directive argument processing.%0a* Switched pagelist.php to use `ParseArgs().%0a%0a!!!Version 2.0.beta23 (24-Feb-2005)%0a* Fixed post attributes to clear "remembered" passwords so that password enabling and testing is more visible.%0a* Added $EnablePageListProtect -- when set to a true value it causes read-protected pages to not appear in page listings and search results unless the browser has already been authorized to read them (based on suggestions from Nils Knappmeier, Neil Herber, and PITS:00344).%0a%0a!!!Version 2.0.beta22 (23-Feb-2005)%0a* Fixed authorization form so that cursor is automatically placed in password box (contributed by Hans).%0a* Fixed bug with non-ASCII character sets in ?action=source (PITS:00336, noted by Hans B.).%0a* Updated scripts/guiedit.php to allow buttons with arbitrary HTML actions.%0a* Fixed permissions on .lastmod (PITS:00339, reported by Mark S. and others).%0a* Fixed bug in `PCache where variables weren't set correctly for RecentChanges pages.%0a* Made substantial changes to skins.php to ease control of page template sections.%0a%0a!!!Version 2.0.beta21 (13-Feb-2005)%0a* Changed width of edit box in pmwiki skin to be 98%25 for IE (suggested by Hans).%0a* Fixed bug in scripts/pgcust.php with checking wrong flag for loading local/default.php (PITS:00305, discovered by Joe Miller).%0a* Fixed bug with empty table heading (%3cth>) cells not generating [= =] (noticed by V. Krishn).%0a* Fixed bug with table attributes line generating empty %3cp>%3c/p> paragraphs (also noticed by V. Krishn).%0a* Fixed bug with settings of $AuthorPage and $AuthorLink (noticed by M. Weiner and John Rankin PITS:00247).%0a* Fixed a very minor bug in the `PageStore->ls() method.%0a* Added conversion of [@[[page:]]@] and [@[[linebreaks]]@] v1 markups from cookbook recipes (suggested by C. Ridderström and P. Ogay).%0a* Fixed rss.php to display $Title instead of just a page's name (suggested by G.J. De Bruin).%0a* Changed PmWiki's default umask to 002.%0a* Added the `DisableMarkup() function (suggested by C. Ridderström).%0a%0a!!!Version 2.0.beta20 (30-Jan-2005)%0a* Added ability to place comments in localmap.txt files (requested by C. Ridderström).%0a* Removed extra spacing before "Upload" button in upload form (suggested by H. Fox).%0a* Changed $UrlLinkFmt to have rel='nofollow' attribute in external links. %0a* Added %3cdiv id='wikidiff'> around page history output.%0a* Fixed global variable oddity in setting of $Skin in scripts/skins.php (discovered by N. Herber).%0a* Added ability to place wiki styles in heading markups.%0a%0a!!!Version 2.0.beta19 (17-Jan-2005)%0a* This version works around a problem with losing edits when a PHP session expires, or when browsers have cookies disabled (reported by C. Freeze).%0a%0a!!!Version 2.0.beta18 (17-Jan-2005)%0a* Fixed bug with incorrect call to setlocale() in pmwiki.php (noticed by Ciaran).%0a* Fixed bug with search results and other block markups being wrapped in %3cp>...%3c/p> tags (PITS:00074, reported by John Rankin).%0a* WikiTrails now allows alternate text in the trail page reference (PITS:00271, requested by Oneida Kincaid).%0a* Added "styles" index to default $HTMLHeaderFmt, to allow disabling of inlined styles.%0a* Added $GUIButtonDirUrlFmt variable to guiedit to make it easy to provide alternate guibutton sets.%0a* Added more guibuttons.%0a* Moved "Attach:" guibutton code into upload.php.%0a* Fixed bug with $LastModified timestamp in page history (noted by Neil Herber and others).%0a* Modified guiedit code so that the sample text is highlighted after hitting a button (makes it easy to locate and overwrite existing sample text).%0a%0a%0a!!!Version 2.0.beta17 (12-Jan-2005)%0a* Fixed bug in advanced tables not closing properly.%0a* Fixed wikistyles so that color changes extend to anchor tags (PITS:00282).%0a* Fixed a bug in handling arrayed default passwords.%0a* Added $Titlespaced conversion to compat1x.php.%0a%0a!!!Version 2.0.beta16 (11-Jan-2005)%0a* Fixed missing guiedit.js file in distribution.%0a%0a!!!Version 2.0.beta15 (10-Jan-2005)%0a* Fixed problem with [@{$Title}@] markup (PITS:00177, thanks to Neil Herber).%0a* Added $Titlespaced and [@{$Titlespaced}@] (requested by H. Fox).%0a* Fixed another bug in vardoc.php that was preventing some restore links from working.%0a* Fixed bug in compat1x.php that was incorrectly converting reference-style links (noticed by Christian Ridderström).%0a* Re-adjusted wikistyles again to allow styles to appear in link text.%0a* Cleaned up rss encodings of named character entities (PITS:00129 and PITS:00239, reported by Bronwyn, Graham L., and others).%0a* Fixed problem with block styling containing only links (PITS:00258, reported by Hans Bracker).%0a%0a!!!Version 2.0.beta14 (28-Dec-2004)%0a* Removed border= attribute from %3cimg ...> tags, now uses style='border:0px;' instead. (PITS:00169, reported by Balu).%0a* Removed extraneous $Fragment from print skin (PITS:00241, reported by `BrBrBr).%0a* Fixed ?action=crypt posting (reported by Hans Bracker)%0a* Added id='text' to $PageEditFmt.%0a* Cleaned up 'posteval' code for `MarkupToHTML() function.%0a* Optimized a number of patterns for (hopefully) faster pattern matching.%0a* Fixed urls to better encode non-ASCII characters.%0a* Converted substr() comparisons to more efficient expressions.%0a* Added a cache to `PageExists() function.%0a* Cleaned up `PrintFmt() function for better processing.%0a* Added Lock(0) to `PrintFmt to release locks prior to sending data to browser.%0a* Fixed bug with empty `StopWatch() function (reported by K. Alboldt).%0a* Changed ?action=diff to require 'read' permissions (Note: this will change to be admin configurable in another release).%0a%0a!!!Version 2.0.beta13 (22-Dec-2004)%0a* Fixed a bug introduced in 2.0.beta7 that causes ?action=refcount to produce incorrect links (thanks to Leo for reporting this).%0a%0a!!!Version 2.0.beta12 (21-Dec-2004)%0a* Added %3cdiv id='wikipreview'>, %3cdiv id='wikiupload'>, %3cdiv id='wikiattr'>, and %3cdiv class='wikisearch'> to appropriate forms and documents (suggested by Dominique Faure).%0a* Added the [@(:description:)@] markup for setting %3cmeta name='description' ...> (PITS:00016).%0a* Added $UnapprovedLinkCountMax to limit the number of unapproved external links that can appear in a post.%0a%0a!!!Version 2.0.beta11 (19-Dec-2004)%0a* Fixed bug with trailing punctuation in uris (PITS:00134, thanks to chr).%0a* Added note to sample-config.php about admin passwords (suggested by Hans Bracker)%0a* Cleaned up `StopWatch function, added $EnableStopWatch to control functionality.%0a* Fixed message where upload exceeds PHP maximum.%0a* Modified upload.php so that the "Upload name" field is blank after performing an upload.%0a* Changed upload functionality to use $LinkUpload instead of $LinkUrl (note, this affects $LinkUploadCreateFmt)%0a%0a!!!Version 2.0.beta10 (14-Dec-2004)%0a* Improved mkdirp() function to give more appropriate diagnostics with respect to PHP's safe_mode setting.%0a* Improved handling/permissions/recovery of wiki.d/.flock file.%0a%0a!!!Version 2.0.beta9 (14-Dec-2004)%0a* Fixed bug in [@[[target |#]]@] markup.%0a* Fixed bug in vardoc with substitution of old $FmtV into $LinkText.%0a* Fixed bug(?) in uploads.php not submitting urls to correct address.%0a%0a!!!Version 2.0.beta8 (13-Dec-2004)%0a* Changed ?pagename= to ?n= for urls.%0a* Changed PmWiki to default to not using PATH_INFO-style urls.%0a* Fixed bug where ?action=diff would disable external links and images in sidebar (PITS:00227, thanks to `BrBrBr).%0a* Changed (⇑) in uploads.php to (Δ) (PITS:00127, thanks to jr and Schlaefer).%0a* Fixed Q: and A: markups (PITS:00067).%0a* Added $TableRowAttr and $TableCellAttr, along with $TableRowCount, $TableRowIndex, and $TableCellCount for stylized tables (suggested by Ciaran).%0a* Fixed incorrect [=PmWiki:=] location in intermap.txt.%0a* Fixed likely hyphen bug in author.php that was removing spaces.%0a%0a!!!Version 2.0.beta7 (8-Dec-2004)%0a* Added PUE() function to handle specialized url encoding.%0a* Added code to work around $Newline in posted text.%0a* Fixed spelling of 'gray' in css (thanks to S. Andreozzi).%0a* Fixed .htaccess files in local/ and wiki.d/.%0a* Fixed bug in sample-config.php (PITS:00216, thanks to noe).%0a* Fixed %3c and > bugs in q= parameter to search.%0a* Fixed default width of edit textarea (PITS:00052).%0a* Restored link citation/reference markup [@[[target|#]]@] (PITS:00049).%0a* Restored [@(:keywords:)@] markup (PITS:00089).%0a* Fixed internationalization of $DefaultPageTextFmt.%0a* Updated/added xlpage-utf-8.php for UTF-8 support (PITS:00168).%0a%0a!!!Version 2.0.beta6 (5-Dec-2004)%0a* Fixed internationalization of `PmWiki.EditQuickReference (PITS:00159, thanks to PRZ and noe).%0a* Fixed bug in `FmtPageName() that was incorrectly converting all slashes to dots (PITS:00201, thanks to C. Bonamigo).%0a* Restored $DiffChangeSum variable in pagerev.php (PITS:00200).%0a* Fixed farmmap.txt (PITS:00207, thanks to Keith Campbell).%0a* Changed $MaxIncludes default value to 50.%0a* Restored $WikiWordCountMax and $WikiWordCount functionality (PITS:00007).%0a* Updated sample-config.php.%0a* Fixed some skin README files.%0a%0a!!!Version 2.0.beta5 (1-Dec-2004)%0a* Corrected $EnablePostAuthorRequired (variable was misnamed -- thanks to John Feezell for reporting the bug).%0a%0a!!!Version 2.0.beta4 (1-Dec-2004)%0a* Added conversion to scripts/compat1x.php for `PmWikiDraw -- [@[[Drawing:SomePage]]@] is converted to [@(:drawing SomePage:)@].%0a* Fixed bug in use of $_REQUEST/$_POST in several scripts.%0a* Fixed code handling extra '?var=value' parameters to set values in $_REQUEST as well as $_GET (PITS:00165).%0a* Fixed missing slash in [[PageDirectives#attachlist| [@(:attachlist:)@] ]] links (PITS:00192, thanks to Brent Zupp for reporting this).%0a%0a!!!Version 2.0.beta3 (30-Nov-2004)%0a* Changed references to $_REQUEST to be $_POST for edit sequence.%0a* Suppressed external links in page history output.%0a* Added .GIF, .JPG, .PNG to valid image extensions (PITS:00168, thanks to noe).%0a* Fixed locking of Main.GroupAttributes and PmWiki.GroupAttributes (PITS:00183, thanks to Balu).%0a* Fixed `PmWiki.EditQuickReference to work in IE again (PITS:00164, thanks to PRZ).%0a* Fixed documentation in `PmWiki.SimpleTables2 (PITS:00186, thanks to PRZ).%0a* Added an [[PageDirectives#attachlist| [@(:attachlist:)@] ]] markup (PITS:00001).%0a%0a!!!Version 2.0.beta2 (28-Nov-2004)%0a* Fixed bug with `LoadPageTemplate in skins.php. %0a%0a!!!Version 2.0.beta1 (26-Nov-2004)%0a* Fixed index used for setting robots %3cmeta> tag.%0a* Fixed intermap.txt links to point to new pmwiki 2.0 location.%0a* Changed default for urlapprove.php to be ?action=approvesites.%0a* Added more documentation pages.%0a%0a!!!Version 2.0.devel27 (25-Nov-2004)%0a* Fixed bug with setting of $Needle (PITS:00154, thanks to KAL).%0a* Fixed bug with "Group/" not working in searches (PITS:00131, thanks to PRZ for finding the bug and John Rankin for suggesting the fix).%0a* Fixed missing %3ctr> in stopwatch output.%0a* Fixed rss to use %3cdc:date> instead of %3cpubDate> (for compatibility with Firefox Live Bookmarks).%0a* Added %3cdc:contributor> element to rss 2.0 output (PITS:00157, suggested by Steffen Glückselig).%0a* Added $EnableUrlApprovalRequired to scripts/urlapprove.php.%0a* Fixed permissions problem on uploaded files for setuid environments (reported by Steven Leite).%0a* Fixed permissions problems for RSS feeds (noted by Enrique Pardo and others).%0a* Changed skins code (hopefully for the last time!)%0a* Fixed print skin to use new skin format.%0a* Changed default error reporting to suppress E_NOTICE messages.%0a%0a!!!Version 2.0.devel26 (11-Nov-2004)%0a* Fixed leading spaces bug in [@[[ target | text ]]@] links (PITS:00149, thanks to Klonk).%0a* Fixed bug with leading items missing from trail path (PITS:00143, thanks to John Rankin).%0a* Fixed $CurrentTime bug (PITS:00115, thanks to Philip Jägenstedt).%0a* Added scripts/rss.php, updated for PmWiki 2.0 (PITS:00128).%0a* Updated scripts/compat1x.php for performing migrations, as well as updated the UpgradingFromPmWiki1 documentation to match (PITS:00151).%0a%0a!!!Version 2.0.devel25 (9-Nov-2004)%0a* Fixed bug in compat1x.php script not converting [@[[{{free link}}#anchor text]]@] correctly (PITS:00148, thanks to Klonk and kt007).%0a%0a!!!Version 2.0.devel24 (9-Nov-2004)%0a* Added password protection of `ApprovedUrls page in urlapprove.php script (PITS:00004).%0a* Added "upload" attribute and default locked upload password (reported by S. Leite).%0a* Fixed name of [@{$fmt}@] and [@{$var}@] markup rules.%0a%0a!!!Version 2.0.devel23 (8-Nov-2004)%0a* Fixed bug in fmt=grouplist (thanks to John Feezell).%0a* Added "redirect" parameter for Redirect (suggested by Ciaran).%0a* Added `GroupAttributes to list of excluded pages in list=normal (PITS:00133, suggested by Val).%0a%0a!!!Version 2.0.devel22 (4-Nov-2004)%0a* Fixed bug in [@[[text -> target]]@] when target is empty (thanks to S. Leite).%0a* Fixed missing "file:" directive in `PrintFmt (thanks to Scott Duff).%0a%0a!!!Version 2.0.devel21 (2-Nov-2004)%0a* Fixed bug in [@(:nl:)@] handling (thanks to Balu).%0a* Fixed 'text' E_NOTICE warning (thanks to chr).%0a* Fixed missing group/ if $LinkWikiWords set off (thanks to Steven Leite).%0a%0a!!!Version 2.0.devel20 (29-Oct-2004)%0a* Added [@%25align=left%25@] and [@%25align=right%25@] WikiStyles for images (PITS:00009).%0a* Added category [@[[!Category]]@] markup (proposed by jr). This is still experimental, and may be changed/removed for 2.0.%0a* Fixed handling of $PageSkinFmt and $PrintSkinFmt.%0a%0a!!!Version 2.0.devel19 (27-Oct-2004)%0a* Fixed bug in `FmtPageName with substituting null strings if an invalid $pagename is encountered (related to PITS:00117, thanks to jr).%0a%0a!!!Version 2.0.devel18 (27-Oct-2004)%0a* Fixed handling of [@(:searchresults:)@] directive with parameters (thanks to Knut Alboldt for finding this).%0a%0a!!!Version 2.0.devel17 (26-Oct-2004)%0a* Restored file: links (PITS:00112, thanks to Chris Untold)%0a* Added scripts/refcount.php.%0a* Fixed bug with %3cpre> formatted text not in a single block (thanks to Steffen Bauch)%0a%0a!!!Version 2.0.devel16 (22-Oct-2004)%0a* Fixed numerous bugs in `PrintAttrForm (thanks to S. Sherebrin).%0a* Fixed bug in calling getrusage() for Windows (PITS:00094, thanks to Adam Bull)%0a* Fixed bug with WikiTrails and spacewikiwords (PITS:00103, thanks to jr)%0a* Modified per-page and per-group customizations so that per-group customizations are loaded even if a per-page customization exists -- see scripts/pgcust.php.%0a* Changed $EnablePerGroupCust to $EnablePGCust.%0a* Modified [@`WikiWord@] markup to protect [@`Group.WikiWord@].%0a* Added code to go ahead and look for ''config.php'' in the current directory if ''local/config.php'' doesn't exist.%0a* Added $EnableLocalConfig to allow farm administrators to control automatic local configuration.%0a* Fixed `LinkIMap to properly url-encode non-ASCII characters (needed for IE, related to PITS:00053).%0a* Fixed problems with non-ASCII characters in attachment names (PITS:00053, thanks to Henning and Zverik).%0a* PmWiki now sets locale to en_US if default is UTF-8 or C.%0a* Added $PageSkinFmt and $PrintSkinFmt to simplify layout template specs, which also reorganizes the files in the pub/skins directory.%0a%0a!!!Version 2.0.devel15 (21-Oct-2004)%0a* Fixed bugs in [@(:if:)@] markup.%0a* Added 'true', 'group', and 'name' conditions to [[ConditionalMarkup]].%0a* Fixed bug with nested lists appearing inside of non-nesting blocks (PITS:00101, thanks to Mystique for finding this bug).%0a* Fixed date-formatting bug in Last-Modified header (PITS:00099, thanks to PRZ).%0a* Fixed bug with $DiffClassMinor in edit (PITS:00095).%0a* Improved phpdiff algorithm to ignore blank lines as target of shortest-distance search (PITS:00096, thanks to Elias Soong for analysis and suggestion).%0a* Added "clear:both;" to default print template (PITS:00079, suggested by SV).%0a%0a%0a!!!Version 2.0.devel14 (20-Oct-2004)%0a* Fixed problem with html entities being translated in included text (PITS:00100, thanks to Knut Alboldt)%0a* Added capability to use a [[WikiTrail(s)]] as the scope of a search.%0a* Fixed bug with $SearchPatterns (PITS:00066, thanks to PRZ).%0a* Added list= parameter to searchresults, pagelist, etc. to filter list output (requested by P. Krait and others).%0a* Converted [:directive:] to (:directive:)%0a* Changed $PageName to $FullName. $PageName still but is deprecated and will be removed in the 2.0 release.%0a* Added $Action and $ActionTitleFmt to create better %3ctitle>s. (PITS:00093, thanks to jr).%0a* Deprecated $HTMLTitleFmt, updated layout templates.%0a%0a%0a!!!Version 2.0.devel13 (11-Oct-2004)%0a* Added code to remove trailing slashes from pagename in urls (suggested by Steven Leite).%0a* Made change to set the default locale using PmWiki 1's algorithm.%0a* Modified httpauth to keep track of multiple passwords via sessions (if possible).%0a* Added wikiword spacing and title control via `WikiLink function.%0a* Added $AsSpacedFunction and `AsSpaced.%0a* Fixed trails.php to use `MakePageName instead of `MakeLink to build pagenames.%0a* Added `SaveAttributes, which extracts a page's title and link targets into separate page attributes.%0a* Fixed search function to also search for matching targets.%0a* Added $LinkWikiWords to control WikiWord linking.%0a* Changed $PageTitle to $Title.%0a* Added `PCache to provide quick access to subsets of page attributes; this eliminates the `SetPage function.%0a%0a!!!Version 2.0.devel12 (10-Oct-2004)%0a* Fixed [@[:nofooter:]@] (PITS:00080, thanks to PRZ).%0a* Fixed incorrect array cast (PITS:00073, thanks to noe).%0a* Fixed handling of WikiWords with query fragments (PITS:00069, thanks to jr)%0a* Fixed bug with empty double-brackets links (PITS:00083, thanks to PRZ).%0a* Fixed bug with link text in WikiTrails (PITS:00085, thanks to PRZ).%0a%0a!!!Version 2.0.devel11 (3-Oct-2004)%0a* Added [@' big ', '-small-', '^super^', '_sub_', { ins }, {-del-}@] and [@`WikiWord@] (with credit to John Rankin).%0a* Added [@--%3changing indent@] text (suggested by John Rankin).%0a* Added $DefaultPasswords.%0a* Switched pmwiki to default to session-based passwords.%0a* Added scripts/httpauth.php for administrators who wish to use HTTP Basic authentication.%0a%0a!!!Version 2.0.devel10 (1-Oct-2004)%0a* Fixed $GroupPattern bug in trails.php (PITS:00057, thanks to John Rankin).%0a* Added comments about markups supported by || in stdmarkup.php (PITS:00056, thanks to John Rankin).%0a* Added $HTMLPNewline to specify what to output for newlines in the middle of paragraph text (PITS:00063).%0a* Fixed [=~~=]~ markup to properly display in page previews (PITS:00059, thanks to Larry Baltz and others).%0a* Added $LinkPageSelfFmt to specify how self-referencing page links should be formatted (kudos to John Rankin).%0a* Added a PHP-based diff engine, set it as the default for edits (with great thanks to Nils Knappmeier).%0a* Cleaned up the page history output slightly.%0a%0a!!!Version 2.0.devel9 (30-Sep-2004)%0a* Modified `FmtPageName() so that dynamic substitutions are customizable.%0a* Added `StopWatch features.%0a* Changed $KeepToken so that it wouldn't be treated as part of a WikiWord (at least not in latin-1 charsets).%0a* Cleaned up `ReadPage.%0a* Added "[[TableDirectives|advanced tables]]" markup ([@[:table:]@]). May still need some testing.%0a* Added scripts/compat1x.php to assist with converting 1.x sites to 2.0.%0a%0a!!!Version 2.0.devel8 (22-Sep-2004)%0a* Added browser caching via If-Modified-Since HTTP headers. This can be enabled via $EnableIMSCaching=1; in config.php.%0a%0a!!!Version 2.0.devel7 (21-Sep-2004)%0a* Modified `MakeLink() function to strip %3chtml> tags when creating a target link. This may allow inline markups to be processed before links.%0a* Fixed url pattern used for mailto: links.%0a* Moved inline markups to occur before link processing. This should enable many inline markups within link text. It may also cause some problems, so this change is a bit tentative.%0a%0a!!!Version 2.0.devel6 (20-Sep-2004)%0a* Fixed ||!table caption!|| (PITS:00040, thanks to John Rankin)%0a* Added $UrlLinkFmt, $IMapLinkFmt (PITS:00050, thanks to John Rankin)%0a* Removed extraneous spaces from link texts (PITS:00047, thanks to Bronwyn)%0a* Fixed author tracking (PITS:00048, thanks to Larry Baltz)%0a* Added "markup:" parameter for `PrintFmt (addresses PITS:00051)%0a* Added %3c!--markup:...--> template option.%0a%0a!!!Version 2.0.devel5 (13-Sep-2004)%0a%0a* Fixed wikistyle nesting problem (PITS:00032, thanks to Balu for catching this)%0a* Moved body { margin-left:20px; } into pmwiki.css (PITS:00034, thanks to Balu)%0a* Changed calls to ucwords() to use preg_replace() since ucwords doesn't work properly in some languages (PITS:00031, thanks to Zverik)%0a* Fixed problems with partial urls (PITS:00013)%0a* Fixed upload.php to use SDVA on $UploadExts (thanks to Larry Baltz)%0a* Fixed problem with [[WikiStyles]] crossing header tags (PITS:00032, thanks to Balu)%0a%0a!!!Version 2.0.devel4 (6-Sep-2004)%0a%0a* Fixed call-time-pass-by-reference in simuledit.php (thanks to CB).%0a* Added ?action=crypt.%0a* Added ?action=print.%0a* Added `XLPage() functions and fixed problems with i18n (PITS:00011)%0a* Fixed bug in trails.php code (PITS:00017)%0a* Documented custom markup functions (PITS:00003)%0a* Improved ?action=ruleset slightly%0a* Added [@[[%3c%3c]]@] markup (thanks to JF)%0a%0a!!!Version 2.0.devel3 (27-Aug-2004)%0a%0a* Fixed missing mode parameter in mkdir (thanks to javajunky on irc).%0a%0a!!!Version 2.0.devel2 (27-Aug-2004)%0a%0a* Added $EnablePathInfo support.%0a* Fixed problem with QUERY_STRING handling of '?'.%0a%0a!!!Version 2.0.devel1 (26-Aug-2004)%0a%0a* Initial release. For experimental and development use '''only'''.%0a%0a%0a%0a%0a%0a%0a%0a%0a%0a%0a%0a%0a -time=1238263232 +rev=891 +targets=PmWiki.MailingLists,PmWiki.ReleaseNotes,PmWiki.WikiFarms,SiteAdmin.SiteAdmin,PmWiki.Version,SiteAdmin.Status,SiteAdmin.AuthList,PmWiki.PageTextVariables,PmWiki.Links,PmWiki.WikiStyles,PmWiki.PageLists,PmWiki.Forms,PmWiki.PageListTemplates,PmWiki.FAQ,Site.AuthList,PmWiki.Passwords,PmWiki.Skins,PmWiki.PageVariables,PmWiki.MarkupExpressions,Site.PageListTemplates,PmWiki.PageDirectives,PmWiki.ConditionalMarkup,PmWiki.AuthUser,PmWiki.PagelistVariables,PmWiki.Uploads +text=(:Summary: Log of changes made to PmWiki by [[Release(Notes)]]:)%0aSee [[Cookbook:RecentChanges | the cookbook recent changes page]] for additional updates and activity by other developers, or join the [[PmWiki/MailingLists | pmwiki mailing lists]] to discuss feature development with us.%0a%0a(:comment Changes made to the [[(PmWiki: )subversion]] pre-release of PmWiki.:)%0a!!! Version 2.2.2 (2009-06-21)%0a* Fix class in pages not on the breadcrumbs trail, reported by Ed W.%0a* Fix @@tabindex@@ and @@onclick@@ to guiedit buttons.%0a* Fix $GroupPrintHeaderFmt in print.php (PITS:01073).%0a* Fix global vars in xlpage-utf-8.php (PITS:00980).%0a* Fix $txt in LinkPage (reported by Eemeli Aro).%0a* Add $EnableNotifySubjectEncode for international wikis (Cookbook:UTF-8).%0a* Fix international message in Abort().%0a* Fix security bug with AuthUser, reported by Eemeli Aro. See [[Release notes]].%0a* Fix $ActionTitleFmt for login and upload, reported by Eemeli Aro.%0a%0a!!! Version 2.2.1 (2009-03-28)%0a* Fix $FPLTemplateMarkupFunction which somehow didn't get in the 2.2.0 archive.%0a* Fix wikitrails to work cross-group (PITS:00407).%0a* Add $EnableRedirectQuiet variable (PITS:00919).%0a* Fix [={$Title}=] could display global variables (reported by HansB).%0a* Fix reloaded form submissions could lose values (reported by DaveG).%0a* Fix preview while restoring a version from history (PITS:01081).%0a* Fix relative links with international characters (reported by G. Hermanowicz).%0a* Add in sample-config.php example call to xlpage-utf-8.php (PITS:01066).%0a* Update documentation.%0a* Fix guiedit.php to produce valid HTML.%0a%0a!! Version 2.2.0 (2009-01-18)%0a* Convert beta series to official release series.%0a* Add $FPLTemplateMarkupFunction (PITS:00984, requested by John Rankin).%0a%0a!!! [[#beta68]] Version 2.2.0-beta68 (2008-08-14)%0a* Fix E_NOTICE errors reported by Dominique Faure.%0a* Enable [@(:redirect:)@] directives in pagelists.%0a%0a!!! [[#beta67]] Version 2.2.0-beta67 (2008-07-13)%0a* Add [={$LastModifiedTime}=] page variable.%0a* Add $EnableSessionPasswords variable to control session password usage.%0a* Add $SessionEncode and $SessionDecode variables to specify functions for encoding/decoding sensitive session data.%0a* Updated httpauth.php to use SessionAuth instead of poking in session guts directly.%0a%0a!!! [[#beta66]] Version 2.2.0-beta66 (2008-07-04)%0a* Add content-type/charset to Abort() output (suggested by Petko).%0a* Close minor XSS vulnerability (PITS:01030).%0a* Add "nested if" capability.%0a* Fix bug in $Transition handling that would enable all transitions if any were set (reported by John Rankin).%0a %0a%0a!!! [[#beta65]] Version 2.2.0-beta65 (2007-11-17)%0a* Fix SiteAdmin.AuthList so that it defaults to list=all (reported by Roman).%0a* Fix pmwiki skin to include xmlns= attribute in %3chtml> tag (PITS:00989, reported by Mateusz Czaplinski and Petko Yotov).%0a%0a!!! [[#beta64]] Version 2.2.0-beta64 (2007-11-13)%0a* Add times to PmWiki date parsing (e.g., 2007-08-09T12:22:04).%0a* Suppress warning from ini_set in diag.php (suggested by Petko).%0a* Fix handling of -> links in trails (reported by Eemeli Aro).%0a* Add .kml and .kmz as valid attachment types. %0a* Fix handling of [=&=] in markup (PITS:00988, reported by Stirling Westrup).%0a* Fix duplication of language markers in $XLLangs (PITS:00987, reported by Stirling Westrup).%0a* Correct typo in DRange() call in stdmarkup.php (reported by Stirling Westrup).%0a* Turn on error displays when diagnostics are enabled.%0a* Default PHP's pcre.backtrack_limit to at least 1000000.%0a%0a!!! [[#beta63]] Version 2.2.0-beta63 (2007-07-31)%0a* Added $SkinDirectivesPattern to allow adjustments to available skin directives (requested by Petko).%0a* Fix default permissions on Site.AuthUser and Site.AuthList (reported by Scott Connard).%0a* Add "monospace" to pmwiki.css default (reported by Joshua Timberman, with assistance from H. Fox)%0a* Fix problem with slashes in wildcards to name= and group= parameters (reported by Ian MacGregor).%0a%0a!!! Version 2.2.0-beta62 (2007-07-21)%0a* Fix bug in trails introduced by beta61 (reported by charlequin).%0a%0a!!! Version 2.2.0-beta61 (2007-07-19)%0a* Add ability to grab trails by section.%0a* Add an "ontrail" condition (from suggestions by charlequin).%0a%0a!!!Version 2.2.0-beta59, 2.2.0-beta60 (2007-07-18)%0a* Fix problem with upgrade.php on [[wiki farms]] (reported by Scott Connard).%0a* Fix problem with distributed version of Site.AuthUser (reported by Jon Haupt).%0a%0a!!!Version 2.2.0-beta58 (2007-07-17)%0a* Significant change: Site.AuthUser, Site.Blocklist, Site.ApprovedUrls, and Site.NotifyList now appear in the [[SiteAdmin]] group by default.%0a** Note: if you limit groups by setting $GroupPattern, you now need to include SiteAdmin (see [[Cookbook:LimitWikiGroups]])%0a* Abort if ldap: authentication requested and libraries aren't present.%0a* Added "upgrades.php" script to handle various migration issues.%0a* Current PmWiki [[version]] is now held in [[SiteAdmin.Status]] .%0a* Fix ?action=postupload to follow ?action=upload settings.%0a* Improvements to [[SiteAdmin.AuthList]] page (suggestions and fixes from Ian MacGregor).%0a* Allow leading underscores in attachment names (requested by Christophe David).%0a%0a!!!Version 2.2.0-beta57 (2007-06-15)%0a* Fix AsSpacedUTF8() to work like AsSpaced() (reported by Petko).%0a* Qualify page links that contain parentheses (reported by Petko).%0a* Fix bug in [@(:input default $:var ... :)@] (reported by Crisses).%0a%0a!!!Version 2.2.0-beta56 (2007-06-13)%0a* Fix AsSpaced() to not add spaces before leading digit, and treat hyphenated digits as complete numbers.%0a* Fix infinite recursion in self-referencing [[page text variables]] (PITS:00915).%0a* Fix bug introduced in beta55 not handling end [[links|anchors]] correctly (reported by Roman).%0a%0a!!!Version 2.2.0-beta55 (2007-06-11)%0a* Fix attributes to [@(:input e_form:)@] (PITS:00387, re-reported by Crisses).%0a* UpdatePage() now calls StopWatch() to record posting.%0a* Display stopwatch output as part of redirect.%0a* Fix [[wiki styles]] bug when $EnableLinkPageRelative is set (reported by Petko).%0a* Revise TextSection() code to hopefully avoid %25newwin%25[[http://pcre.org/|pcre]] limits (reported by Kathryn Andersen, Knut Alboldt).%0a* Add wrap=inline and wrap=none options to [[page list(s#pagelistwrap)]].%0a%0a!!!Version 2.2.0-beta53, 2.2.0-beta54 (2007-06-02)%0a* Improve error message reporting for markup rules (suggestion by Knut Alboldt).%0a* Clean up more E_NOTICE warnings (reported by Ian MacGregor).%0a* Add focus= option to [=(:=][[forms|input]]:) controls.%0a* Added CSS [@.faqtoc@] class, to be able to display only the questions coming from the #includefaq [[page list template(s)]].%0a* Changed [[PmWiki.FAQ]] to use .faqtoc class.%0a* Fix bug in TextSection (PITS:00935, reported by Jean-Fabrice).%0a* Fix bug in [[page list(s#pagelisttrail)]] caching of trails.%0a%0a!!!Version 2.2.0-beta52 (2007-05-26)%0a* Add per-PageStore attributes (from a suggestion by Tobias Thelen).%0a* Add [@{$PasswdRead}@], [@{$PasswdEdit}@], etc. to display page password settings.%0a* Add [[Site.AuthList]] to display all password permissions on a site.%0a* Reorder $PageListFilters slightly.%0a* Add "passwd=" option to [[page list(s#pagelistpasswd)]], to return only those pages that have some sort of [[password(s)]] attribute on them.%0a* Add line numbers to StopWatchHTML output.%0a* Clean up handling of $AuthCascade.%0a%0a!!!Version 2.2.0-beta51 (2007-05-23)%0a* Add fmt=count to [[page list(s#pagelistcount)]] (reminder from Hans).%0a* Ignore hidden files in [[skin(s)]] directories when searching for .tmpl (suggestion by Stephan Becker).%0a* Clean up queuing of pages to be updated in .pageindex .%0a* Reset $LinkTargets() at beginning of each UpdatePage() sequence.%0a%0a!!!Version 2.2.0-beta50 (2007-05-22)%0a* Fix HTML cache when drafts are enabled, or other recipes using CondAuth().%0a* Prevent [[page lists]] with protected pages from HTML cache.%0a%0a!!!Version 2.2.0-beta48, 2.2.0-beta49 (2007-05-21)%0a* Fix spurious value= attribute in %3ctextarea> tag generated by [@(:input textarea ... :)@].%0a* Allow either [@(:input default ...:)@] or [@(:input defaults ...:)@].%0a* Fix problem with page text variable handling in [@(:input defaults:)@].%0a* Allow either [@(:template default:)@] or [@(:template defaults:)@] in [[page list templates]].%0a* Fix a bug handling dates with suffixes (reported by Crisses).%0a%0a!!!Version 2.2.0-beta47 (2007-05-20)%0a* Fix bug with quote handling in [@(:include:)@] options (reported by Hans).%0a%0a!!!Version 2.2.0-beta46 (2007-05-19)%0a* Moved $PageTextVarPatterns definition from scripts/stdmarkup.php to pmwiki.php.%0a* Ignore Markup() rules that have unresolved $when parameters.%0a* Fix issue in authuser.php when $auth array isn't set (contributed by Ben Stallings).%0a* The [@(:include:)@] directive now performs template argument processing on the included text.%0a* Optimized [@(:pagelist:)@] slightly when sorting on [[page variables]].%0a* Refactored [@(:input ... :)@] markups.%0a* Added HandleDispatch(), which allows action handlers to easily redispatch to other actions (and add messages).%0a* Added FmtTemplateVars(), to perform various template-substitutions.%0a%0a%0a!!!Version 2.2.0-beta45 (2007-05-02)%0a* Update pmwiki's date parsing to use a common routine, recognizing dates within strings and restricting range to 1900-2039.%0a* Add additional parameter to "date" conditional.%0a* Add if= option to [[page list(s#pagelistif)]] (suggested by Crisses).%0a* Refactor code to use TextSection() and RetrieveAuthSection() functions.%0a* The value= parameter to [@(:input textarea:)@] now works properly (including values loaded from $InputValues).%0a* The [@(:input default:)@] directive now allows loading input control defaults from another page via the [@source=@] parameter.%0a* Remove automatic call to FmtPageName() in $ROSPatterns. Add $ROEPatterns (from suggestions by JB and others).%0a* Fix minor variable bugs in scripts/crypt.php.%0a* Remove E_NOTICE errors (reported by Hans).%0a* Fix handling of page variables when pagename is empty or not provided.%0a* Add $EnableLinkPageRelative configuration option.%0a* Clean up handling of arguments to [@{(ftime ...)}@].%0a* Remove mailposts.php call in stdconfig.php (reported by Christophe David).%0a%0a!!!Version 2.2.0-beta44 (2007-04-16)%0a* Fix case conversion of U+027D and U+026B (reported by Petko).%0a* Add $FTimeFmt to set default formatting for [@{(ftime)}@].%0a* Add %25s conversion to [@{(ftime)}@] for systems that don't have it by default.%0a* Report an error if edit [[form(s)]] cannot be read (suggested by Hans).%0a* Don't report ?cannot acquire lockfile when simply browsing pages.%0a* Add $EnableReadOnly flag to signal when PmWiki is to be run in read-only mode.%0a%0a!!!Version 2.2.0-beta43 (2007-04-15)%0a* Update drafts code to add $EnablePublishAttr and change button labels when drafts are enabled (PITS:00755).%0a* Removed no-longer-needed 'compat1x.php' and 'mailposts.php' from distribution.%0a* Added $DraftRecentChangesFmt.%0a* Added "[[markup expressions]]" [@{(...)}@] into the core.%0a* Added charset= attribute to saved pages.%0a* Update pagelist.php and xlpage-utf-8.php to handle case-insensitive searches.%0a* Added some optimizations to phpdiff.php script to produce more useful history information.%0a%0a!!!Version 2.2.0-beta42 (2007-03-27)%0a* Fix a bug with order=title in pagelists (reported by Anno).%0a%0a!!!Version 2.2.0-beta41 (2007-03-26)%0a* Added $EnableWSPre option, which allows easy adjustment of the "leading space -> preformatted text" (or "whitespace") rule.%0a* Added a new "pre" wikistyle, to designate blocks that are to be treated as preformatted text.%0a%0a!!!Version 2.2.0-beta40 (2007-03-24)%0a* Fix bug with order=title in pagelists when using $Titlespaced (PITS:00906, reported by Feral).%0a* Report state of allow_url_fopen when downloads fail in blocklist.php.%0a%0a!!!Version 2.2.0-beta39 (2007-03-23)%0a* Allow page variable filters to appear as options in [@(:template defaults:)@] (reported by SteP).%0a* Updated [[Site.PageListTemplates]] to use [@(:template:)@] directives.%0a* Remove '#wikileft h1' and '#wikileft h5' from pmwiki default stylesheet.%0a%0a!!!Version 2.2.0-beta38 (2007-03-22)%0a* Strip control characters from $ChangeSummary.%0a* Fix problem with count=m..n where m..n is outside the range of available pages (reported by SteP).%0a* Allow [@(:template default ...:)@] to specify a class= option.%0a* [[PmWiki/PageDirectives#redirect|Redirect]] pagename can now include an anchor (PITS:00558)%0a%0a!!!Version 2.2.0-beta37 (2007-03-16)%0a* Allow an optional space after comma separators in wildcard patterns (reported by Han Baas).%0a%0a!!!Version 2.2.0-beta36 (2007-03-16)%0a* Allow nested [[page text variables]] to work, remove extraneous ENT_NOQUOTES parameter.%0a* Add new [@(:template ...:)@] directives for pagelist templates.%0a* Modify count= option to pagelists to allow for alternate ranges.%0a%0a!!!Version 2.2.0-beta35 (2007-03-05)%0a* Fix bug in [[conditional markup]] parsing (reported by Christophe David).%0a%0a!!!Version 2.2.0-beta33, 2.2.0-beta34 (2007-03-01)%0a* Refactor wildcard handling into its own GlobToPCRE function.%0a* Allow negated wildcards for page variable filters in pagelists (PITS:00878, reported by Jiri)%0a* Fix wildcards so that spaces no longer separate patterns (use commas).%0a* Fix handling of '&' prior to [@(:input:)@] and other directives (reported by Luigi).%0a* Adjust position of [@%25define=...%25@] [[wiki styles]] to occur after ampersands.%0a* Adjust copyright dates on many files.%0a* Allow spaces around text variable names in [[page text variable(s)]] markups.%0a%0a!!! [[#beta32]] Version 2.2.0-beta32 (2007-02-28)%0a* Fix erroneous $EnableCreole item in docs/sample-config.php (reported by Sigurd).%0a* Added [@(:elseif:)@] and [@(:else:)@] markups (PITS:00787).%0a* Fix global $Skin variable handling when using SetSkin from within markup.%0a* Make sure directives aren't treated like [[page text variables]] (reported by Petko).%0a* Remove call to ResolvePageName() from authuser.php .%0a* Simplify [[PmWiki/AuthUser#LDAP|LDAP]] authentication for Active Directory sites.%0a* Cache lowercase/uppercase patterns in AsSpacedUTF8().%0a%0a!!!Version 2.2.0-beta31 (2007-02-11)%0a* Fix bug with sorting on [[pagelist variables]] (reported by Kathryn Andersen).%0a%0a!!!Version 2.2.0-beta29, 2.2.0-beta30 (2007-02-09)%0a* MakePageName now uses the first matching entry of $PagePathFmt as the home page of groups without a home page.%0a* Add AsSpacedUTF8() to handle title spacing in utf-8 (PITS:00875, contributed by Petko, Celok)%0a* Fix $RequestedPage when running with utf-8.%0a* Add %3cmeta> content-type tag for utf-8.%0a* Add an experimental caching system for pagelists.%0a* Fix $SuffixPattern and link suffixes for utf-8 (PITS:00881, reported by ppip).%0a%0a!!!Version 2.2.0-beta28 (2007-02-03)%0a* Update blocklist.php so that all posted fields are checked for block values (PITS:00850).%0a%0a!!!Version 2.2.0-beta27 (2007-01-25)%0a* Fix markup processing sequence for [@(:input default:), (:input select:)@], etc. (problem noted by Marc).%0a* Fix default value of [@order=@] parameter to MakePageList().%0a%0a!!!Version 2.2.0-beta26 (2007-01-23)%0a* Fix a bug where pagelist list= option had no effect when reading from trails (from an rss problem noted by Russ Fink).%0a%0a!!!Version 2.2.0-beta24, 2.2.0-beta25 (2007-01-22)%0a* Add a scripts/creole.php module for Creole markup (http://www.wikicreole.org/).%0a* Move WikiWords out of the core defaults -- can be enabled via $EnableWikiWords.%0a* Fix handling of WikiWords following & or #, as in [=Æ and #FFFF00=] (reported by Moni Kellermann).%0a* Adjust FormatTableRow() to support Creole-style tables (using single |'s).%0a* Update docs/sample-config.php with new configurations and options.%0a* Added code to allow Abort() to refer to additional information on pmwiki.org.%0a* Added $EnableSkinDiag, which checks templates for required %3c!--HTMLHeader--> and %3c!--HTMLFooter--> directives.%0a* Removed deprecated $BasicLayoutVars support from skins.php.%0a%0a!!!Version 2.2.0-beta22, 2.2.0-beta23 (2007-01-17)%0a* Added $EnableActions, to allow pmwiki.php to be included without generating output (from a suggestion by Wouter Groeneveld).%0a* Fix bug in "order=" option to [@(:pagelist:)@] (reported by Mike Bishop).%0a* Change DisplayStopWatch() function to StopWatchHTML().%0a* Allow multiple lines for markup:, wiki:, and page: template directives (reported by Marc)%0a%0a!!!Version 2.2.0-beta21 (2007-01-12)%0a* Fix %3cvspace> bug in searchresults output (PITS:00846, reported by M. Czaplinski, marc, and others).%0a* Fix numerous E_NOTICE warnings and incorrect constants (PITS:00853, contributed by AndrewFyfe).%0a%0a!!!Version 2.2.0-beta20 (2007-01-11)%0a* $FeedPageListOpt needs to be declared global in feeds.php.%0a* Add "404 Not Found" status code to ?invalid page name aborts (PITS:00854, suggested by Athan).%0a* Remove stale entries from $PageExistsCache when a new PageStore is added (reported by Hans).%0a%0a!!!Version 2.2.0-beta19 (2006-12-29)%0a* Have blocklist check $_POST['text'] only when it is set (from a report by Simon).%0a%0a!!!Version 2.2.0-beta18 (2006-12-28)%0a* Change $pagename parameter in UpdatePage() to be passed by reference (suggestion by J. Meijer).%0a* Fix $EnableRobotsCloakActions so that it works again with page variables.%0a* Add "XML Sitemaps" to $RobotPattern.%0a* Change $MetaRobots to return "nofollow,noindex" for non-existent pages.%0a* Prefer "404 Not Found" to "403 Forbidden" for [[(PmWiki:)robots]] attempting to do invalid actions on non-existent pages.%0a* Add rel='nofollow' to "create attachment" links.%0a* Added class='inputbox' to select boxes (suggested by Hans).%0a* Added .odt, .ods, and .odp file extensions to allowed [[uploads]] (suggested by Algis Kabaila, Robin Sheat, and others).%0a* Clean up some error warnings (PITS:00801, contributed by psvo).%0a* Set $ScriptUrl to 'https:' when accessed via SSL link (suggestions from C. Ridderström, H. Fox, PITS:00410, PITS:00527, PITS:00595).%0a* Fix bug in link= and trail= options to [@(:pagelist:)@] (reported by C. Ridderström).%0a%0a!!!Version 2.2.0-beta17 (2006-12-13)%0a* Fix spurious hidden field in [@(:searchbox:)@] output (reported by Hans).%0a* Fix $CaseConversions array for \xc4\xb1 and \xc5\xbf (reported by Petko Yotov).%0a* Refactor [@(:input:)@] markup handling.%0a* Add [@(:input select ...:)@] markup (PITS:00567).%0a* Add [@(:input default ...:)@] markup -- may change before 2.2.0 release.%0a* Add ability to set defaults for radio/checkbox/select controls.%0a%0a%0a!!!Version 2.2.0-beta16 (2006-11-10)%0a* Fix problem with [@(:e_preview:)@] directive when viewing an edit form (reported by Dominique Faure).%0a* Fix out-of-memory problem in scripts/compat1x.php when dealing with large pages to be converted (contributed by Donald Gordon).%0a* Fix problem of Variable: lines immediately followed by newline (reported by Hans).%0a* Fix uninitialized variable errors in FormatTableRow() (reported by Bob Sanders).%0a* Fix second argument of MakeBaseName() (provided by Stirling Westrup).%0a%0a!!!Version 2.2.0-beta15 (2006-10-16)%0a* Fix bug with displaying multi-line [@(:var:value:)@] [[page text variables]] (reported by Pico).%0a* Improve PageStore ls() method slightly, to restrict pagename searches to directories of a given depth (based on an issue reported by Chris Cox).%0a* Added $IsBlocked status variable to scripts/blocklist.php.%0a* Added $UnapprovedLink array to report unapproved links.%0a* Added $TimeISOFmt, $TimeISOZFmt, and $CurrentTimeISO variables.%0a* Switched scripts/feeds.php to use $TimeISOZFmt instead of $ISOTimeFmt.%0a* Added [@request=@] option to [@(:pagelist:)@], switched pagelist to default to not use url/form parameters.%0a* Fixed bug with array [@{$$options}@] in pagelist.%0a%0a!!!Version 2.2.0-beta14 (2006-10-06)%0a* Fix problem with extra parameter to mail when $NotifyParameters is empty (reported by Tom Lederer).%0a* Improve configurability of $SearchPatterns (from suggestions by Stirling Westrup).%0a* Add ability for $WikiWordCount to disable wikiword spacing (PITS:00327).%0a%0a!!!Version 2.2.0-beta13 (2006-10-04)%0a* Fix handling of angle brackets (and potential XSS) in pagelists combined with page text variables (noted by Pico).%0a%0a!!!Version 2.2.0-beta12 (2006-10-03)%0a* Added the UpdatePage() function into the core. %0a%0a!!!Version 2.2.0-beta11 (2006-10-03)%0a* Added ability to automatically create targets.%0a* Added sample code to docs/sample-config.php for automatic generation of Category.* pages.%0a* Fixed character escapes in pagelist [@{$$option}@] variables.%0a%0a!!!Version 2.2.0-beta10 (2006-10-02)%0a* Added [@{$$option}@] variables to get option values from [@(:pagelist:)@] (based on a recipe from Martin Fick).%0a* Changed [@{$PageCount}, {$GroupPageCount}, and {$GroupCount}@] to be [@{$$PageCount}, {$$GroupPageCount}, and {$$GroupCount}@].%0a* Added [@{$BaseName}@] page variable and $BaseNamePatterns.%0a%0a!!!Version 2.2.0-beta9 (2006-10-01)%0a* Fix bug with $EnablePageListProtect (reported by Brent Zupp).%0a* Added ability to select based on page variables in [@(:pagelist:)@].%0a%0a!!!Version 2.2.0-beta8 (2006-09-30)%0a* Update scripts/blocklist.php to check only $_POST['text'] instead of entire markup text.%0a* Fix bug in pagelist.php that wouldn't return correctly formatted array in certain circumstances (noted by Florian Fischer and JDem).%0a%0a!!!Version 2.2.0-beta7 (2006-09-30)%0a* Added scripts/blocklist.php to core.%0a* Updated handling of $PageTextVarPatterns.%0a* Eliminated need for extra flush() steps in notify.php, pagelist.php.%0a%0a!!!Version 2.2.0-beta6 (2006-09-27)%0a* Fix bug with initialization of $FeedPageListOpt in scripts/feeds.php (reported by Roman).%0a* Fix bug with over-eager [@(:textvar:value:)@] markup (from a bug reported by Chris Cox).%0a%0a!!!Version 2.2.0-beta4, 2.2.0-beta5 (2006-09-27)%0a* Fix bug with name= option in pagelist (reported by Ben Wilson).%0a* Fix bug with array_merge under PHP 5 (reported by Kathryn Andersen).%0a%0a!!!Version 2.2.0-beta3 (2006-09-26)%0a* Remove extra %3c!----> comment at end of table directives (noted by Ben Stallings).%0a* Fix directive form of page text variables (reported by Kathryn Andersen).%0a* Add first version of new modular pagelist code.%0a%0a!!!Version 2.2.0-beta2 (2006-09-25)%0a* Add support for [@{$:var}@] page text variables, and [@(:var:...:)@] markup.%0a* Fix default setting of $EnableRelativePageVars in docs/sample-config.php .%0a%0a!!!Version 2.2.0-beta1 (2006-09-25)%0a* Added [@{*$var}@] page variables (always the currently browsed page).%0a* Convert link and page variable handling in [=(:include:)=] to be relative to the included page.%0a* Added $EnableRelativePageVars and $EnableRelativePageLinks variables, as well as transition options.%0a* Added basepage= option to [=(:include:)=].%0a* Updated $GroupHeaderFmt and $GroupFooterFmt to use basepage= option.%0a* Adjusted $MakePageNamePatterns to automatically strip any #... or ?... from the end of a pagename input string (solution to a problem reported by J. Meijer).%0a%0a!!!Version 2.1.27 (2006-12-11)%0a* Backport in bug fix for TableRowFormat (from 2.2.0-beta16).%0a* Add support for [@{*$Variable}@] syntax (from 2.2.0 page variables).%0a%0a!!!Version 2.1.26 (2006-09-11)%0a* Fix a bug with variable referencing that caused feeds.php to get a confused PCache (reported by Helge Larsen).%0a%0a!!!Version 2.1.25 (2006-09-08)%0a* Fixed a bug in authuser.php that would fail if $AuthUser isn't defined (reported by Hans Huijgen).%0a* Added %3c!--XMLHeader--> and %3c!--XMLFooter--> aliases to %3c!--HTMLHeader--> and %3c!--HTMLFooter--> directives in skin templates (suggested by John Rankin).%0a* Added $PageExistsCache (suggested by John Rankin).%0a%0a!!!Version 2.1.24 (2006-09-06)%0a* Fixed a bug in authuser.php that had trouble dealing with non-array entries in $AuthUser (reported by Udo).%0a* Can now specify authorization groups using $AuthUser['@group'] entries.%0a* Can now specify an Apache .htgroup-formatted file for authorization groups via $AuthUser['htgroup'].%0a%0a!!!Versions 2.1.21, 2.1.22, 2.1.23 (2006-09-05, 2006-09-06)%0a* Close a potential security hole with $FarmD when register_globals is set "On".%0a* Correct a syntax error in feeds.php (noted by Ben Wilson).%0a* Fix a bug that prevented PmWiki from reading page files generated by versions prior to 0.5.6 (discovered by Milan Avramovic).%0a%0a!!!Version 2.1.20 (2006-09-04)%0a* Fixed a bug in [[PageDirectives#attachlist| [@(:attachlist:)@] ]] when passed a wikiword argument (reported by Kathryn Andersen).%0a* Changed $HTMLStylesFmt['markup'] to honor config.php setting (reported by Hans).%0a%0a!!!Version 2.1.19 (2006-08-30)%0a* Corrected a bug in the pageindex code that was causing the .pageindex to not update as quickly as it should.%0a* Slightly changed the handling of 'width' and 'height' in wikistyles.php, so that they can be be applied as attributes to %3cobject> and %3cembed> tags.%0a* Updated the Keep() function to recognize closing block tags as being in the 'B' block pool.%0a* Fixed a bug with wikistyles and form tags.%0a%0a!!!Version 2.1.18 (2006-08-28)%0a* Closed a potential cross-site scripting vulnerability in table markups (reported by JB).%0a* Added [@(:input image:)@] markup (requested by JB).%0a* Fixed problem with ?action=print failing to set [@{$Action}@] (reported by Bart).%0a%0a!!!Version 2.1.17 (2006-08-26)%0a* Added some improvements to IMS caching to better handle logout and authorization actions (PITS:00573, reported by floozy and Henrik Bechmann).%0a%0a!!!Version 2.1.16 (2006-08-26)%0a* Added $SkinLibDirs variable, to select filesystem and url locations where skins may be found (resolves PITS:00708, as reported by Hagan Fox, with additional suggestions from Ben Wilson).%0a* Changed [@%3c!--HeaderText-->@] to [@%3c!--HTMLHeader-->@] in skin templates, and added an optional [@%3c!--HTMLFooter-->@] directive (PITS:00767).%0a* Adjusted the pmwiki and print skins to use the new directives.%0a%0a!!!Version 2.1.15 (2006-08-25)%0a* Fixed issue dealing with order of [@@_site_*@] passwords (reported by Jean-Fabrice and others).%0a* Added $LocalDir variable (requested by John Rankin).%0a* Removed an unnecessary setting of $DefaultPage in ''scripts/pgcust.php'' (it's now handled by ResolvePageName() ).%0a* Added some variables and changes in wikistyles.php to better support wikipublisher (contributed by John Rankin).%0a* RetrieveAuthPage (PmWikiAuth) now recognizes a $level of 'ALWAYS' as indicating that access should always be allowed, regardless of current passwords or identities.%0a* Added filter specifier for AuthUser LDAP authentication (contributed by Balu).%0a%0a!!!Version 2.1.13, 2.1.14 (2006-08-15, 2006-08-16)%0a* Updated scripts/authuser.php to allow ldaps://... authentications (contributed by Michael Brenner).%0a* Fixed problem with numeric passwords introduced in 2.1.beta20 (reported by Christophe David and Dirk Blaas).%0a%0a!!!Version 2.1.12 (2006-08-07)%0a* Corrected typo in Site.SideBar file (reported by Judith Zacharie).%0a* Suppressed warning message for search on sites without a wikilib.d/ directory.%0a* Added capability for nested divs.%0a* Use $Transition['nodivnest'] to restore previous non-nesting div/table behavior.%0a* Including authuser.php now automatically resolves pagename.%0a* Added [@(:noaction:)@] directive to turn off actions.%0a* Fixed bug in wikistyles prior to image blocks.%0a* Added white-space as allowed wikistyle (suggested by C. Ridderström).%0a* Allow colons, hyphens, and dots in id= tags.%0a%0a!!!Version 2.1.11 (2006-06-09)%0a* Fixed generation of empty paragraphs around [@%25define=...%25@] wikistyles (PITS:00753).%0a%0a!!!Version 2.1.10 (2006-06-04)%0a* Added a %3cspan> around the RecentChanges link in the pmwiki skin (PITS:00750, suggested by Hagan Fox).%0a* Changed the $Action variable to $ActionTitle (PITS:00749, reported by Hagan Fox).%0a* Changed $FPLTemplatePageFmt to be an array of pages to be searched for page templates, enabled searching of current page and Site.LocalTemplates page.%0a* Updated .vspace margin in sidebar for pmwiki skin (PITS:00751, by Hagan Fox).%0a%0a%0a!!!Version 2.1.9 (2006-06-02)%0a* Fixed a bug with [@[[~Author]]@] links (PITS:00530 reported by Klonk, PITS:00611 reported by weijang, PITS:00671 reported by Stirling Westrup, and helpful clues provided by Clayton Curtis).%0a%0a!!!Version 2.1.8 (2006-06-01)%0a* Added ability to specify notification entries from ''local/config.php'' as well as Site.Notify (suggested by Christophe David).%0a* Fixed $Transition['vspace'] from 2.1.7.%0a%0a!!!Version 2.1.7 (2006-05-31)%0a* Adjusted width of edit form for IE browsers (contributed by Roman and H. Fox).%0a* Suppress authentication failure error from LDAP (PITS:00739).%0a* Fixed problem with invalid page names resulting in redirect loop (PITS:00723, reported by jojoo).%0a* Added "Group." and "Group/" page name syntax, resolving PITS:00736 (from a suggestion by Pico).%0a* Changed handling of "vspace" paragraphs.%0a* Fixed some XSS vulnerabilities in uploads.php and url links (reported by Moritz Naumann, http://moritz-naumann.com).%0a* Added notify.php script, allowing finer control of email notifications.%0a%0a!!!Version 2.1.6 (2006-05-22)%0a* Optimized performance of urlapprove.php.%0a* Added [@(:if auth xyz PageName:)@] syntax.%0a* Corrected XSS bug in trails.php.%0a* Slightly improved performance of free links.%0a* Restore ability to use hyphens in InterMap links (reported by Henrik Bechmann).%0a%0a!!!Version 2.1.4, 2.1.5 (2006-03-29)%0a* Fixed problem with pagelist-based feeds (PITS:00709, reported by Jon Haupt).%0a* Added [@{$Action}@] page variable. (PITS:00696, reported by Sebastian Pipping).%0a* Added stripmagic() around variables submitted to authuser.php.%0a* Fixed problem with multi-term searches containing special characters (PITS:00713, reported by Leo).%0a* Switched [[PageDirectives#attachlist| [@(:attachlist:)@] ]] to use a natural case sort (suggested by H. Fox).%0a%0a!!!Version 2.1.3 (2006-03-17)%0a* Re-fixed problem with PHP 5.1.1 and lines= option to [@(:include:)@] (PITS:00620).%0a* Fixed empty LDAP password issue (reported by Thomas Lederer).%0a%0a!!!Version 2.1.2 (2006-03-16)%0a* Fixed %3ch1>/%3ch2> tag mismatches (PITS:00702, reported by Martin Hason).%0a* Fixed bug with $AllowPassword and "nopass" (reported by M. Weiner and bram brambring).%0a* Improved the speed of RSS and other web feeds when $EnablePageListProtect is not set.%0a%0a!!!Version 2.1.1 (2006-03-13)%0a* Fixed a bug with multiple authorization groups as a password (PITS:00699, reported by Ari Epstein).%0a* Updated the authorization code to be a bit more liberal with password/group settings.%0a* Updated PmWiki.FAQ page to be able to grab FAQ items from other pages in the documentation.%0a%0a!!Version 2.1.0 (2006-03-12)%0a* Many many documentation updates (special thanks to many authors).%0a* Allow trailing underscores in upload names (requested by Hans).%0a* Fixed 'ak_print' problem causing accesskey='a' for print (noted by Pico).%0a* Added code to make sure each anchor is generated only once per page (for XHTML validity).%0a* Added a $BlockPattern variable to recognize block HTML tags.%0a* Made an adjustment to Keep() so that it places strings with block HTML into the 'B' pool.%0a* Adjusted stdmarkup.php to not produce paragraphs for keep blocks in the 'B' pool.%0a* Corrected a variety of i18n phrases.%0a* Added class='escaped' to distinguish [=@@...@@=] from [=[@...@]=] (from a comment by Hans).%0a* Slightly changed styling of .faq divs.%0a* Made the edit textarea a couple of rows smaller to better fit on smaller displays (suggested by H. Fox).%0a----%0a[[(PmWiki:)ChangeLog Archive]] - changes prior to version 2.1.0.%0a +time=1245617388 Index: wikilib.d/Site.PageListTemplates =================================================================== --- wikilib.d/Site.PageListTemplates (.../pmwiki-2.2.1) (revision 2344) +++ wikilib.d/Site.PageListTemplates (.../pmwiki-2.2.2) (revision 2344) @@ -1,12 +1,12 @@ version=pmwiki-2.2.1 ordered=1 urlencoded=1 -agent=Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.19) Gecko/20081216 Ubuntu/8.04 (hardy) Firefox/2.0.0.19 -author=Petko +agent=Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 +author=simon charset=ISO-8859-1 -csum=again +csum=remove link ctime=1135725585 -host=81.65.14.164 +host=202.37.32.2 name=Site.PageListTemplates -rev=70 -targets=Group.Group,Group.Name,Site.FullName,Group.Namespaced,Site.LocalTemplates,PmWiki.PageLists,PmWiki.PageListTemplates,PmWiki.PageListDefaultTemplates,PmWiki.PageVariables,PmWiki.PageTextVariables,PmWiki.ConditionalMarkup -text=(:Summary:[[(PmWiki/PageList)Templates]] for PmWiki's [[PmWiki/Page lists]] directive:)%0aThis page contains "templates" for PmWiki's [@(:pagelist:)@] directive. The [[Site.LocalTemplates]] page can be created and used to store pagelist templates that are local to a site.%0a%0a%0a!!Page list template documentation%0a* [[PmWiki.Page Lists]] - {PmWiki/PageLists$:Summary}%0a* [[PmWiki.Page List Templates]] - {PmWiki/PageListTemplates$:Summary}%0a* [[PmWiki.Page List Default Templates]] - {PmWiki/PageListDefaultTemplates$:Summary}%0a* [[PmWiki.Page Variables]] - {PmWiki/PageVariables$:Summary}%0a* [[PmWiki.PageTextVariables|Page Text Variables]] - {PmWiki/PageTextVariables$:Summary}%0a* [[PmWiki.Conditional Markup]] - {PmWiki/PageLists$:Summary}%0a* [[Cookbook:Pagelist Template Samples]] - {Cookbook/PagelistTemplateSamples$:Summary}%0a%0a%0a!!fmt=#default%0a%0aThe default template for pagelists when [@fmt=@] isn't specified (and note that on the PmWiki.org wiki, this template is over-ridden by the one on the [[Site.LocalTemplates]] page).%0a%0a(:markup class="horiz":)%0a(:if false:)%0a[[#default]]%0a(:template first {=$Group}:)%0a%0a:[[{=$Group}/]] /:%0a(:template each:)%0a: :[[{=$Group}/{=$Name}]]%0a[[#defaultend]]%0a(:ifend:)%0a%0a(:pagelist group={$Group} fmt=#default count=6:)%0a(:markupend:)%0a%0a%0a!!fmt=#bygroup%0a%0aDisplay pages by group/name.%0a%0a(:markup class="horiz":)%0a(:if false:)%0a[[#bygroup]]%0a(:template first {=$Group}:)%0a%0a:[[{=$Group}/]] /:%0a(:template each:)%0a: :[[{=$Group}/{=$Name}]]%0a[[#bygroupend]]%0a(:ifend:)%0a%0a(:pagelist group={$Group} fmt=#bygroup count=6:)%0a(:markupend:)%0a%0a%0a!!fmt=#simple%0a%0aA simple bullet list of page names.%0a%0a(:markup class="horiz":)%0a(:if false:)%0a[[#simple]]%0a* [[{=$FullName}]]%0a[[#simpleend]]%0a(:ifend:)%0a%0a(:pagelist group={$Group} fmt=#simple count=5:)%0a(:markupend:)%0a%0a%0a!!fmt=#title%0a%0aA simple bullet list of page titles. %0a%0a(:markup class="horiz":)%0a(:if false:)%0a[[#title]]%0a(:template defaults order=title:)%0a* [[{=$FullName}|+]]%0a[[#titleend]]%0a(:ifend:)%0a%0a(:pagelist group={$Group} fmt=#title count=5:)%0a(:markupend:)%0a%0a%0a!!fmt=#titlespaced%0a%0aOutputs wiki page titles with spaces between the words in the title.%0a%0a(:markup class="horiz":)%0a(:if false:)%0a[[#titlespaced]]%0a(:template defaults order=title:)%0a* [[{=$FullName}|{=$Titlespaced}]]%0a[[#titlespacedend]]%0a(:ifend:)%0a%0a(:pagelist group={$Group} fmt=#titlespaced count=5:)%0a(:markupend:)%0a%0a%0a!!fmt=#group%0a%0aA bullet list of groups.%0a%0a[@%0a[[#group]]%0a(:template first {=$Group}:)%0a* [[{=$Group}/]]%0a[[#groupend]]%0a@]%0a%0a%0a!!fmt=#include%0a%0aConcatenate the text of pages in the list. (Note, this can be an expensive operation!)%0a%0a[@%0a[[#include]]%0a(:include {=$FullName} self=0:)%0a[[#includeend]]%0a@]%0a%0a%0a!!fmt=#includefaq%0a%0aInclude just the #faq sections from pages in the list. (This can also be expensive,%0aespecially if the list includes pages that don't have the [@[[#faq]]@] anchor!)%0a%0a[@%0a[[#includefaq]]%0a!![[{=$FullName}|+]]%0a>>faq%3c%3c%0a(:include {=$FullName}#faq#faqend self=0:)%0a>>%3c%3c%0a[[#includefaqend]]%0a@]%0a%0a%0a!!fmt=#description%0a%0aList pages and append the page's description if it exists. Creates dash by all names, but adding a nested loop to get rid of it causes markup problems (nested loops are not allowed).%0a%0a(:markup class="horiz":)%0a(:if false:)%0a[[#description]]%0a* [[{=$FullName}|+]]%0a - {=$Description}%0a[[#descriptionend]]%0a(:ifend:)%0a%0a(:pagelist group={$Group} fmt=#description count=7:)%0a(:markupend:)%0a%0a%0a!!fmt=#simplename%0a%0aSimple bullet list of page names, without the Group name. %0a%0a(:markup class="horiz":)%0a(:if false:)%0a[[#simplename]]%0a* [[({=$Group}/){=$Name}]]%0a[[#simplenameend]]%0a(:ifend:)%0a%0a(:pagelist group={$Group} fmt=#simplename count=5:)%0a(:markupend:)%0a%0a%0a!!fmt=#simplenamespaced%0a%0aSimple bullet list of spaced page names, without the Group name. %0a%0a(:markup class="horiz":)%0a(:if false:)%0a[[#simplenamespaced]]%0a* [[({=$Group}/){=$Namespaced}]]%0a[[#simplenamespacedend]]%0a(:ifend:)%0a%0a(:pagelist group={$Group} fmt=#simplenamespaced count=5:)%0a(:markupend:)%0a%0a%0a!!fmt=#count%0a%0aNumber of pages in pagelist %0a%0a(:markup class="horiz":)%0a(:if false:)%0a[[#count]]%0a(:template defaults wrap=inline list=normal :)%0a(:template last:)%0a{$$PageCount}%0a[[#countend]]%0a(:ifend:)%0a%0aNumber of pages in the {$Group} group: (:pagelist group={$Group} fmt=#count :).%0a%0aNumber of pages in the {$Group} group: (:pagelist group={$Group} fmt=count :).%0a%0aThere are (:pagelist group=PmWiki fmt=#count wrap=html :) pages in the PmWiki group.%0a(:markupend:)%0a -time=1238274003 +rev=71 +targets=Group.Group,Group.Name,Site.FullName,Group.Namespaced,Site.LocalTemplates,PmWiki.PageLists,PmWiki.PageListTemplates,PmWiki.PageVariables,PmWiki.PageTextVariables,PmWiki.ConditionalMarkup +text=(:Summary:[[(PmWiki/PageList)Templates]] for PmWiki's [[PmWiki/Page lists]] directive:)%0aThis page contains "templates" for PmWiki's [@(:pagelist:)@] directive. The [[Site.LocalTemplates]] page can be created and used to store pagelist templates that are local to a site.%0a%0a%0a!!Page list template documentation%0a* [[PmWiki.Page Lists]] - {PmWiki/PageLists$:Summary}%0a* [[PmWiki.Page List Templates]] - {PmWiki/PageListTemplates$:Summary}%0a* [[PmWiki.Page Variables]] - {PmWiki/PageVariables$:Summary}%0a* [[PmWiki.PageTextVariables|Page Text Variables]] - {PmWiki/PageTextVariables$:Summary}%0a* [[PmWiki.Conditional Markup]] - {PmWiki/PageLists$:Summary}%0a* [[Cookbook:Pagelist Template Samples]] - {Cookbook/PagelistTemplateSamples$:Summary}%0a%0a%0a!!fmt=#default%0a%0aThe default template for pagelists when [@fmt=@] isn't specified (and note that on the PmWiki.org wiki, this template is over-ridden by the one on the [[Site.LocalTemplates]] page).%0a%0a(:markup class="horiz":)%0a(:if false:)%0a[[#default]]%0a(:template first {=$Group}:)%0a%0a:[[{=$Group}/]] /:%0a(:template each:)%0a: :[[{=$Group}/{=$Name}]]%0a[[#defaultend]]%0a(:ifend:)%0a%0a(:pagelist group={$Group} fmt=#default count=6:)%0a(:markupend:)%0a%0a%0a!!fmt=#bygroup%0a%0aDisplay pages by group/name.%0a%0a(:markup class="horiz":)%0a(:if false:)%0a[[#bygroup]]%0a(:template first {=$Group}:)%0a%0a:[[{=$Group}/]] /:%0a(:template each:)%0a: :[[{=$Group}/{=$Name}]]%0a[[#bygroupend]]%0a(:ifend:)%0a%0a(:pagelist group={$Group} fmt=#bygroup count=6:)%0a(:markupend:)%0a%0a%0a!!fmt=#simple%0a%0aA simple bullet list of page names.%0a%0a(:markup class="horiz":)%0a(:if false:)%0a[[#simple]]%0a* [[{=$FullName}]]%0a[[#simpleend]]%0a(:ifend:)%0a%0a(:pagelist group={$Group} fmt=#simple count=5:)%0a(:markupend:)%0a%0a%0a!!fmt=#title%0a%0aA simple bullet list of page titles. %0a%0a(:markup class="horiz":)%0a(:if false:)%0a[[#title]]%0a(:template defaults order=title:)%0a* [[{=$FullName}|+]]%0a[[#titleend]]%0a(:ifend:)%0a%0a(:pagelist group={$Group} fmt=#title count=5:)%0a(:markupend:)%0a%0a%0a!!fmt=#titlespaced%0a%0aOutputs wiki page titles with spaces between the words in the title.%0a%0a(:markup class="horiz":)%0a(:if false:)%0a[[#titlespaced]]%0a(:template defaults order=title:)%0a* [[{=$FullName}|{=$Titlespaced}]]%0a[[#titlespacedend]]%0a(:ifend:)%0a%0a(:pagelist group={$Group} fmt=#titlespaced count=5:)%0a(:markupend:)%0a%0a%0a!!fmt=#group%0a%0aA bullet list of groups.%0a%0a[@%0a[[#group]]%0a(:template first {=$Group}:)%0a* [[{=$Group}/]]%0a[[#groupend]]%0a@]%0a%0a%0a!!fmt=#include%0a%0aConcatenate the text of pages in the list. (Note, this can be an expensive operation!)%0a%0a[@%0a[[#include]]%0a(:include {=$FullName} self=0:)%0a[[#includeend]]%0a@]%0a%0a%0a!!fmt=#includefaq%0a%0aInclude just the #faq sections from pages in the list. (This can also be expensive,%0aespecially if the list includes pages that don't have the [@[[#faq]]@] anchor!)%0a%0a[@%0a[[#includefaq]]%0a!![[{=$FullName}|+]]%0a>>faq%3c%3c%0a(:include {=$FullName}#faq#faqend self=0:)%0a>>%3c%3c%0a[[#includefaqend]]%0a@]%0a%0a%0a!!fmt=#description%0a%0aList pages and append the page's description if it exists. Creates dash by all names, but adding a nested loop to get rid of it causes markup problems (nested loops are not allowed).%0a%0a(:markup class="horiz":)%0a(:if false:)%0a[[#description]]%0a* [[{=$FullName}|+]]%0a - {=$Description}%0a[[#descriptionend]]%0a(:ifend:)%0a%0a(:pagelist group={$Group} fmt=#description count=7:)%0a(:markupend:)%0a%0a%0a!!fmt=#simplename%0a%0aSimple bullet list of page names, without the Group name. %0a%0a(:markup class="horiz":)%0a(:if false:)%0a[[#simplename]]%0a* [[({=$Group}/){=$Name}]]%0a[[#simplenameend]]%0a(:ifend:)%0a%0a(:pagelist group={$Group} fmt=#simplename count=5:)%0a(:markupend:)%0a%0a%0a!!fmt=#simplenamespaced%0a%0aSimple bullet list of spaced page names, without the Group name. %0a%0a(:markup class="horiz":)%0a(:if false:)%0a[[#simplenamespaced]]%0a* [[({=$Group}/){=$Namespaced}]]%0a[[#simplenamespacedend]]%0a(:ifend:)%0a%0a(:pagelist group={$Group} fmt=#simplenamespaced count=5:)%0a(:markupend:)%0a%0a%0a!!fmt=#count%0a%0aNumber of pages in pagelist %0a%0a(:markup class="horiz":)%0a(:if false:)%0a[[#count]]%0a(:template defaults wrap=inline list=normal :)%0a(:template last:)%0a{$$PageCount}%0a[[#countend]]%0a(:ifend:)%0a%0aNumber of pages in the {$Group} group: (:pagelist group={$Group} fmt=#count :).%0a%0aNumber of pages in the {$Group} group: (:pagelist group={$Group} fmt=count :).%0a%0aThere are (:pagelist group=PmWiki fmt=#count wrap=html :) pages in the PmWiki group.%0a(:markupend:)%0a +time=1238621816 Index: wikilib.d/PmWiki.AccessKeys =================================================================== --- wikilib.d/PmWiki.AccessKeys (.../pmwiki-2.2.1) (revision 2344) +++ wikilib.d/PmWiki.AccessKeys (.../pmwiki-2.2.2) (revision 2344) @@ -1,12 +1,12 @@ -version=pmwiki-2.2.0 ordered=1 urlencoded=1 -agent=Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6 -author=OliverBetz +version=pmwiki-2.2.1 ordered=1 urlencoded=1 +agent=Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.0.3) Gecko/2008092414 Firefox/3.0.3 +author=Martin A charset=ISO-8859-1 -csum= +csum=Added Firefox to the list of Mac browsers for which Ctrl + access key works. ctime=1137027716 -host=87.163.97.81 +host=68.33.60.202 name=PmWiki.AccessKeys -rev=93 +rev=94 targets=PmWiki.Internationalizations,PmWiki.SitePreferences,Site.Preferences,Site.PageActions -text=(:Summary:Access keys are keyboard shortcuts for tasks that would otherwise require a mouse:)%0a(:Audience: visitors (intermediate) :)%0a%0aAccess keys (See also [[Wikipedia:access keys]]) are keyboard shortcuts for tasks that would otherwise require a mouse. %0aThey are part of markup that may exist on any webpage.%0aOn PmWiki steps have been taken to make it easier to use access keys throughout a site, and to make it possible to adjust key assignments to accommodate different languages and preferences.%0a%0a!! Using access keys in different operating systems and browsers%0aAccess keys require you to hold down two or more keys.%0a* on Windows with Internet Explorer, press ALT + the access key%0a* with Firefox, press SHIFT + ALT + the access key%0a* on a Macintosh, press Ctrl + the access key (applies to Safari, Omniweb, Internet Explorer)%0a* with [[http://opera.com/support/tutorials/nomouse/#access | Opera]] press Shift+Esc to enter (or exit) access-key mode.%0a%0aExceptions exist for specific browsers, and specific versions. For example, %0a* Internet Explorer requires that the Enter key be pressed at the end of the sequence for versions 5 and up under Windows, but not under Macintosh (where access keys were not supported until after version 4.5). %0a* Firefox versions 1.5 and earlier simply use Alt, while Firefox version 2.0 uses Shift+Alt. %0a%0aNote, in cases of conflicts between the keyboard shortcuts assigned by browsers and access keys assigned by links and other markup on webpages, many browsers, including Mozilla, Netscape and Internet Explorer, allow access keys to override the browser defaults and require a different sequence to continue using overridden browser assignments (typically, by pressing and releasing the Alt key, instead of holding it down). %0a%0a!! Access key assignments in this PmWiki installation%0aThe following is a list of the currently defined access keys for built-in actions. Remember that the letters identified below must be used together with the combination listed above (depending on your operating system and browser). Note that some actions do not have a corresponding access key by default.%0a%0a||width=%0a||! Key ||!Function ||%0a|| $[ak_edit] ||edit||%0a|| $[ak_history] ||history||%0a|| $[ak_recentchanges] ||recent changes||%0a|| $[ak_save] ||save page||%0a|| $[ak_saveedit] ||save and keep editing||%0a|| $[ak_savedraft] ||save draft||%0a|| $[ak_preview] ||preview page||%0a|| $[ak_print] ||print||%0a|| $[ak_view] ||view||%0a|| $[ak_em] ||''emphasized'' text||%0a|| $[ak_strong] ||'''strong''' text||%0a|| $[ak_textedit] ||jump to edit textarea (when in edit modes)|| %0a%0a%0a%25audience%25 admins (intermediate)%0a!! [[#customkeys]] Customizing access keys%0aPmWiki uses the same "phrase translation" methods for access key mappings as it does for [[internationalization(s)]]. This makes it possible for administrators, skins, language translators, and visitors to all influence the way that specific keys are mapped to actions.%0a%0aSee [[SitePreferences]] and [[Site.Preferences]] for more information and a template.%0a%0aNote that some skins (e.g., [[Cookbook:LeanSkin | Lean]]) don't use the translation mechanism. In this case one must edit the template file itself in order to change the access keys.%0a%0aBy convention, the translation phrases for all of the access key actions start with the characters "ak_", so that the page variable "[@$[ak_edit]@]" is replaced by the access key for editing as defined by the current preferences, language, skin default, or site default.%0a%0a!! Implementation of access keys%0aAccess keys are implemented in html as optional parameters that can be added to links and many other types of markup.%0a%0a'''Example:''' [@%3ca href="http://example.com" accesskey="x">Example%3c/a>@] would create a link to example.com that could be triggered by clicking on the linked word "example" or using the access key Akey+x. That same action key link could be created in PmWiki markup by typing [@%25item accesskey="x"%25[[http://example.com|Example]]@], like this: %25item accesskey="x"%25[[http://example.com|Example]]. Try it and see if it works. Note that this AKey+x access key only works this way on this page, because it is simply a shortcut for accessing the link that exists only on this page.%0a%0aThe list of access key assignments in default PmWiki installations generally work throughout a site because links have been created in PmWiki skins and editing screens that incorporate access key parameters using the access key translation phrases. One location where those links can be viewed is [[Site.PageActions]]. That page contains the links that the default PmWiki skin, and many other skins, use to generate links such as "View" "Edit" and "History" that appear on most pages (other than editing screens). Each of the links in that page also has an [@%25accesskey=$[ak_xxx]%25@] declaration in front of it, which enables a specific access key for that link.%0a%0a>>faq%3c%3c [[#faq]]%0a%0aQ: How can I change the keyboard shortcuts for editing and saving a page?%0a%0aA: See [[#customkeys | Customizing access keys]].%0a -time=1236599855 +text=(:Summary:Access keys are keyboard shortcuts for tasks that would otherwise require a mouse:)%0a(:Audience: visitors (intermediate) :)%0a%0aAccess keys (See also [[Wikipedia:access keys]]) are keyboard shortcuts for tasks that would otherwise require a mouse. %0aThey are part of markup that may exist on any webpage.%0aOn PmWiki steps have been taken to make it easier to use access keys throughout a site, and to make it possible to adjust key assignments to accommodate different languages and preferences.%0a%0a!! Using access keys in different operating systems and browsers%0aAccess keys require you to hold down two or more keys.%0a* on Windows with Internet Explorer, press ALT + the access key%0a* with Firefox, press SHIFT + ALT + the access key%0a* on a Macintosh, press Ctrl + the access key (applies to Firefox, Safari, Omniweb, Internet Explorer)%0a* with [[http://opera.com/support/tutorials/nomouse/#access | Opera]] press Shift+Esc to enter (or exit) access-key mode.%0a%0aExceptions exist for specific browsers, and specific versions. For example, %0a* Internet Explorer requires that the Enter key be pressed at the end of the sequence for versions 5 and up under Windows, but not under Macintosh (where access keys were not supported until after version 4.5). %0a* Firefox versions 1.5 and earlier simply use Alt, while Firefox version 2.0 uses Shift+Alt. %0a%0aNote, in cases of conflicts between the keyboard shortcuts assigned by browsers and access keys assigned by links and other markup on webpages, many browsers, including Mozilla, Netscape and Internet Explorer, allow access keys to override the browser defaults and require a different sequence to continue using overridden browser assignments (typically, by pressing and releasing the Alt key, instead of holding it down). %0a%0a!! Access key assignments in this PmWiki installation%0aThe following is a list of the currently defined access keys for built-in actions. Remember that the letters identified below must be used together with the combination listed above (depending on your operating system and browser). Note that some actions do not have a corresponding access key by default.%0a%0a||width=%0a||! Key ||!Function ||%0a|| $[ak_edit] ||edit||%0a|| $[ak_history] ||history||%0a|| $[ak_recentchanges] ||recent changes||%0a|| $[ak_save] ||save page||%0a|| $[ak_saveedit] ||save and keep editing||%0a|| $[ak_savedraft] ||save draft||%0a|| $[ak_preview] ||preview page||%0a|| $[ak_print] ||print||%0a|| $[ak_view] ||view||%0a|| $[ak_em] ||''emphasized'' text||%0a|| $[ak_strong] ||'''strong''' text||%0a|| $[ak_textedit] ||jump to edit textarea (when in edit modes)|| %0a%0a%0a%25audience%25 admins (intermediate)%0a!! [[#customkeys]] Customizing access keys%0aPmWiki uses the same "phrase translation" methods for access key mappings as it does for [[internationalization(s)]]. This makes it possible for administrators, skins, language translators, and visitors to all influence the way that specific keys are mapped to actions.%0a%0aSee [[SitePreferences]] and [[Site.Preferences]] for more information and a template.%0a%0aNote that some skins (e.g., [[Cookbook:LeanSkin | Lean]]) don't use the translation mechanism. In this case one must edit the template file itself in order to change the access keys.%0a%0aBy convention, the translation phrases for all of the access key actions start with the characters "ak_", so that the page variable "[@$[ak_edit]@]" is replaced by the access key for editing as defined by the current preferences, language, skin default, or site default.%0a%0a!! Implementation of access keys%0aAccess keys are implemented in html as optional parameters that can be added to links and many other types of markup.%0a%0a'''Example:''' [@%3ca href="http://example.com" accesskey="x">Example%3c/a>@] would create a link to example.com that could be triggered by clicking on the linked word "example" or using the access key Akey+x. That same action key link could be created in PmWiki markup by typing [@%25item accesskey="x"%25[[http://example.com|Example]]@], like this: %25item accesskey="x"%25[[http://example.com|Example]]. Try it and see if it works. Note that this AKey+x access key only works this way on this page, because it is simply a shortcut for accessing the link that exists only on this page.%0a%0aThe list of access key assignments in default PmWiki installations generally work throughout a site because links have been created in PmWiki skins and editing screens that incorporate access key parameters using the access key translation phrases. One location where those links can be viewed is [[Site.PageActions]]. That page contains the links that the default PmWiki skin, and many other skins, use to generate links such as "View" "Edit" and "History" that appear on most pages (other than editing screens). Each of the links in that page also has an [@%25accesskey=$[ak_xxx]%25@] declaration in front of it, which enables a specific access key for that link.%0a%0a>>faq%3c%3c [[#faq]]%0a%0aQ: How can I change the keyboard shortcuts for editing and saving a page?%0a%0aA: See [[#customkeys | Customizing access keys]].%0a +time=1241830585 Index: wikilib.d/PmWiki.WikiWord =================================================================== --- wikilib.d/PmWiki.WikiWord (.../pmwiki-2.2.1) (revision 2344) +++ wikilib.d/PmWiki.WikiWord (.../pmwiki-2.2.2) (revision 2344) @@ -1,11 +1,11 @@ -version=pmwiki-2.2.0-beta68 ordered=1 urlencoded=1 -agent=Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1 -author=simon +version=pmwiki-2.2.1 ordered=1 urlencoded=1 +agent=Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.19) Gecko/20081216 Ubuntu/8.04 (hardy) Firefox/2.0.0.19 +author=Petko charset=ISO-8859-1 -csum=not on trail -host=202.37.32.2 +csum=$WikiWordCount +host=86.69.109.11 name=PmWiki.WikiWord -rev=23 +rev=25 targets=PmWiki.WikiWikiWeb,PmWiki.Links -text=!!Definition and use as Page Titles%0aA WikiWord is a set of two or more words run together, where the first letter of each word is capitalized. This syntax is also sometimes referred to as "mixed case" or "camel case". WikiWords are used as '''page titles''' in a [[WikiWikiWeb]]. %0a%0a!!Use as links%0aIn some wikis, you can string any sequence of words together, capitalizing the first letter of each word, to make a valid WikiWord '''link'''. In such PmWiki installations, WikiWords surrounded by [=[=...=]=] or preceded by a backquote (`) are not turned into links: %0a%0a%0a(:linkwikiwords:)%0a(:markup:)[@LikeThis compared to `LikeThis or even [=LikeThis=]@]%0a(:nolinkwikiwords:)%0a%0aSee [[Links]] for information about `PmWiki's rules for forming links and forming page titles.%0a%0a!!!!Enabling WikiWord links%0aWikiWord links are disabled by default since Pmwiki version 2.1 beta2. To enable WikiWord links you need to set in ''config.php'' %0a%0a-> [@$LinkWikiWords = 1;@] %0a%0aIf you want to display links to non-existent pages without decoration, place the following lines in ''pub/css/local.css'': %0a%0a-> [@span.wikiword a.createlink { display:none; }%0aspan.wikiword a.createlinktext { border-bottom:none; text-decoration:none; color:inherit; }@]%0a %0a!!!!Finding WikiWord links%0aIf you upgraded from an earlier version and want to convert WikiWord links to standard [[links]], the following will help to find those WikiWord links easier by highlighting them. Set in ''config.php'':%0a%0a-> [@$HTMLStylesFmt['wikiword'] = "span.wikiword { background:yellow; }";@] %0a%0aOther descriptions of WikiWords are available from [[Wiki:WikiWord]] and [[Wikipedia:WikiWord]].%0a%0a -time=1220229354 +text=!!Definition and use as Page Titles%0aA WikiWord is a set of two or more words run together, where the first letter of each word is capitalized. This syntax is also sometimes referred to as "mixed case" or "camel case". WikiWords are used as '''page titles''' in a [[WikiWikiWeb]]. %0a%0a!!Use as links%0aIn some wikis, you can string any sequence of words together, capitalizing the first letter of each word, to make a valid WikiWord '''link'''. In such PmWiki installations, WikiWords surrounded by [=[=...=]=] or preceded by a backquote (`) are not turned into links: %0a%0a%0a(:linkwikiwords:)%0a(:markup:)[@LikeThis compared to `LikeThis or even [=LikeThis=]@]%0a(:nolinkwikiwords:)%0a%0aSee [[Links]] for information about `PmWiki's rules for forming links and forming page titles.%0a%0a!!!!Enabling WikiWord links%0aWikiWord links are disabled by default since Pmwiki version 2.1 beta2. To enable WikiWord links you need to set in ''config.php'' %0a%0a-> [@$LinkWikiWords = 1;@] %0a%0aIf you want to display links to non-existent pages without decoration, place the following lines in ''pub/css/local.css'': %0a%0a-> [@span.wikiword a.createlink { display:none; }%0aspan.wikiword a.createlinktext { border-bottom:none; text-decoration:none; color:inherit; }@]%0a %0a!!!!Finding WikiWord links%0aIf you upgraded from an earlier version and want to convert WikiWord links to standard [[links]], the following will help to find those WikiWord links easier by highlighting them. Set in ''config.php'':%0a%0a-> [@$HTMLStylesFmt['wikiword'] = "span.wikiword { background:yellow; }";@] %0a%0a!!!!Disabling certain WikiWords%0aThe variable $WikiWordCount controls WikiWord conversion on a per word basis.%0a%0aOther descriptions of WikiWords are available from [[Wiki:WikiWord]] and [[Wikipedia:WikiWord]].%0a%0a +time=1243952800 Index: wikilib.d/PmWiki.AuthUser =================================================================== --- wikilib.d/PmWiki.AuthUser (.../pmwiki-2.2.1) (revision 2344) +++ wikilib.d/PmWiki.AuthUser (.../pmwiki-2.2.2) (revision 2344) @@ -2,11 +2,11 @@ agent=Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.19) Gecko/20081216 Ubuntu/8.04 (hardy) Firefox/2.0.0.19 author=Petko charset=ISO-8859-1 -csum=fix link -host=81.65.14.164 +csum=refactor +host=86.69.109.11 name=PmWiki.AuthUser passwdattr=$1$A8GLth2X$RUkkw5/Yh6PDX6SvLLelB0 -rev=163 +rev=165 targets=PmWiki.Passwords,PmWiki.PasswordsAdmin,SiteAdmin.AuthUser,PmWiki.AuthUser -text=(:Summary:Authorization system that uses usernames and passwords:)%0a(:Audience: administrators (intermediate) :)%0a%0aAuthUser is PmWiki's identity-based authorization system that allows access to pages to be controlled through the use of usernames and passwords. AuthUser can be used in addition to the [[Passwords | password-based]] scheme that is PmWiki's default configuration.%0a%0aAuthUser is a very flexible system for managing access control on pages, but flexibility can also bring complexity and increased maintenance overhead to the wiki administrator. This is why PmWiki defaults to the simpler password-based system. For some thoughts about the relative merits of the two approaches, see [[PmWiki:ThoughtsOnAccessControl]].%0a%0aSee also: [[Cookbook:Quick Start for AuthUser]]%0a%0a!! Activating AuthUser%0a%0a%0aTo activate PmWiki's identity-based system, add the following line%0ato ''local/config.php'':%0a%0a include_once("$FarmD/scripts/authuser.php");%0a%0aEnsure that you have [[PasswordsAdmin | set a site wide admin password]], otherwise you will not be able to edit [[SiteAdmin.AuthUser]].%0a%0a->%25note%25 Note: Older versions of PmWiki (before 2.2.0-beta58) use ''Site.AuthUser''.%0a%0a!! Creating user accounts%0a%0aMost of AuthUser's configuration is performed via the [[SiteAdmin.AuthUser]] page. To change the AuthUser configuration, simply edit this page like any other wiki page (you'll typically need to use the site's admin password for this).%0a%0aTo create a login account, simply add lines to SiteAdmin.AuthUser that look like:%0a%0a username: [=(:=]encrypt ''password'':)%0a%0aFor example, to create a login account for "alice" with a password of "wonderland", enter:%0a%0a alice: [=(:=]encrypt wonderland:)%0a%0aWhen the page is saved, the "@@[=(:=]encrypt wonderland:)@@" part of the text will be replaced by an encrypted form of the password "wonderland". This encryption is done so that someone looking at the SiteAdmin.AuthUser page cannot easily determine the passwords stored in the page. %0a%0aTo change or reset an account's password, simply replace the encrypted string with another @@[=(:=]encrypt:)@@ directive.%0a%0a%0a!! Controlling access to pages by login%0a%0aPages and groups can be protected based on login account by using "passwords" of the form [@id:username@] in the password fields of [@?action=attr@] (see [[PmWiki.Passwords]]). For example, to restrict a page to being edited by Alice, one would set the password to "[@id:alice@]".%0a%0aIt's possible to use multiple "id:" declarations and passwords in the [@?action=attr@] form, thus the following setting would allow access to Alice, Carol, and anyone who knows the password "quick":%0a%0a quick id:alice,carol%0a%0aTo allow access to anyone who has successfully logged in, use "[@id:*@]".%0a%0aOne can also perform site-wide restrictions based on identity in the $DefaultPasswords array: e.g.%0a%0a # require valid login before viewing pages%0a $DefaultPasswords['read'] = 'id:*';%0a # Alice and carol may edit%0a $DefaultPasswords['edit'] = 'id:alice,carol';%0a # All admins and Fred may edit%0a $DefaultPasswords['edit'] = array('@admins', 'id:Fred');%0a%0aYou can change the $DefaultPasswords array in local customization files such as:%0a* local/config.php (for entire wiki)%0a* farmconfig.php (for entire wikifarm)%0a%0a%0a!! [[#auth_groups]] Organizing accounts into groups%0a%0aAuthUser also makes it possible to group login accounts together into authorization groups, indicated by a leading "@" sign. As with login accounts, group memberships are maintained by editing the SiteAdmin.AuthUser page. Group memberships can be specified by either listing the groups for a login account (person belongs to groups) or the login accounts for a group (group includes people). You can repeat or mix-and-match the two kinds as desired:%0a%0a @writers: alice, bob%0a carol: @writers, @editors%0a @admins: alice, dave%0a %0aThen, to restrict page access to a particular group, simply use "[@@group@]" as the "password" in [@?action=attr@] or the $DefaultPasswords array, similar to the way that "[@id:username@]" is used to restrict access to specific login accounts.%0a%0a!!! Excluding individuals from password groups%0a%0aGroup password memberships are maintained by editing the SiteAdmin.AuthUser page. To specify a password group that allows access to anyone who is authenticated, you can specify:%0a%0a @wholeoffice: *%0a%0aIf you need to keep "Fred" out of this password group :%0a%0a @wholeoffice: *,-Fred%0a%0aTo allow all users except Fred to change page attributes, for example, you can add to config.php :%0a $DefaultPasswords['attr'] = array('id:*,-Fred');%0a%0a(:if authid:)%0a>>clip%3c%3c%0a!!!!!Wiki Debug%0a* %25newwin%25 [[Diagnostics -> {$Name}?action=diag]]%0a* %25newwin%25 [[PHPInfo -> {$Name}?action=phpinfo]]%0a(:ifend:)%0a%0a%0a%0a!! Getting account names and passwords from external sources%0a%0aThe AuthUser script has the capability of obtaining username/password pairs from places other than the SiteAdmin.AuthUser page, such as passwd-formatted files (usually called '.htpasswd' on Apache servers), [[#LDAP|LDAP]] servers, or even the ''local/config.php'' file.%0a%0a%0a!!! Passwd-formatted files (.htpasswd/.htgroup)%0a%0aPasswd-formatted files, commonly called ''.htpasswd'' files in Apache, are text files where each line contains a username and an encrypted password separated by a colon. A typical ''.htpasswd'' file might look like:%0a%0a alice:vK99sgDV1an6I%0a carol:Q1kSeNcTfwqjs%0a%0aTo get AuthUser to obtain usernames and passwords from a ''.htaccess'' file, add the following line to SiteAdmin.AuthUser, replacing "/path/to/.htpasswd" with the filesystem path of the ''.htpasswd'' file:%0a%0a htpasswd: /path/to/.htpasswd%0a%0aCreation and maintenance of the ''.htpasswd'' file can be performed using a text editor, or any number of other third-party tools available for maintaining ''.htpasswd'' files. The Apache web server typically includes an ''htpasswd'' command for creating accounts in .htpasswd:%0a%0a $ htpasswd /path/to/.htpasswd alice%0a New password:%0a Re-type new password:%0a Adding password for user alice%0a $%0a%0aSimilarly, one can use ''.htgroup'' formatted files to specify group memberships. Each line has the name of a group (without the "@"), followed by a colon, followed by a space separated list of usernames in the group.%0a%0a writers: carol%0a editors: alice carol bob%0a admins: alice dave%0a%0aNote that the groups are still "@writers", "@editors", and "@admins" in PmWiki even though the file doesn't specify the @ signs. To get AuthUser to load these groups, use a line in SiteAdmin.AuthUser like:%0a%0a htgroup: /path/to/.htgroup%0a%0a %0a!!! Configuration via ''local/config.php''%0a%0aAuthUser configuration settings can also be made from the ''local/config.php'' file in addition to the SiteAdmin.AuthUser page. Such settings are placed in the $AuthUser array, and ''must be set prior to including the ''authuser.php'' script''. Some examples:%0a%0a # set a password for alice%0a $AuthUser['alice'] = crypt('wonderland');%0a # set a password for carol%0a $AuthUser['carol'] = '$1$CknC8zAs$dC8z2vu3UvnIXMfOcGDON0';%0a # define the @editors group%0a $AuthUser['@editors'] = array('alice', 'carol', 'bob');%0a # Use local/.htpasswd for usernames/passwords%0a $AuthUser['htpasswd'] = 'local/.htpasswd';%0a # Use local/.htgroup for group memberships%0a $AuthUser['htgroup'] = 'local/.htgroup';%0a%0a[[#LDAP]]%0a!!! Configuration via LDAP%0a%0aAuthentication can be performed via an external LDAP server -- simply set an entry for "ldap" in either SiteAdmin.AuthUser or the ''local/config.php'' file.%0a%0a # use ldap.airius.com for authentication%0a $AuthUser['ldap'] = 'ldap://ldap.airius.com/ou=People,o=Airius?cn?sub';%0a%0aMake sure to include AuthUser below the entry for the ldap server:%0a%0a # Want to use AuthUser so we can use ldap for passwords%0a include_once("$FarmD/scripts/authuser.php");%0a%0aAnd remember to assign the Security Variables for edit and history (or whatever):%0a%0a #Security Variables set login for edit & history page%0a # to let anyone edit that has an ldap entry:%0a $HandleAuth['diff'] = 'edit';%0a $DefaultPasswords['edit'] = 'id:*';%0a $Author = $AuthId;%0a%0aLDAP authentication in AuthUser closely follows the model used by Apache 2.0's [[http://httpd.apache.org/docs/2.0/mod/mod_auth_ldap.html|mod_auth_ldap]] module; see especially the documentation for [[http://httpd.apache.org/docs/2.0/mod/mod_auth_ldap.html#authldapurl|AuthLDAPUrl]] for a description of the url format.%0a%0aFor servers that don't allow anonymous binds, AuthUser provides $AuthLDAPBindDN and $AuthLDAPBindPassword variables to specify the binding to be used for searching.%0a%0aSee also [[Cookbook:AuthUser via Microsoft LDAP]]%0a%0a!! Setting the Author Name%0aBy default, PmWiki will use a login name in the Author field of the edit form, but allows the author to change this value prior to saving. To force the login name to always be used as the author name, use the following sequence in config.php to activate AuthUser:%0a%0a include_once("$FarmD/scripts/authuser.php");%0a $Author = $AuthId; # after include_once()%0a%0aTo allow more flexibility, but still enable changes to be linked to the authorized user, one can give the author name a prefix of the $AuthId instead:%0a[@%0a include_once("$FarmD/scripts/author.php");%0a include_once("$FarmD/scripts/authuser.php");%0a if ($Author) {%0a if (strstr($Author, '-') != false) {%0a $Author = "$AuthId-" . preg_replace('/^[^-]*-/', '', $Author);%0a } else if ($Author != $AuthId) {%0a $Author = $AuthId . '-' . $Author;%0a } else {%0a $Author = $AuthId;%0a }%0a } else {%0a $Author = $AuthId;%0a }%0a $AuthorLink = "[[~$Author]]";%0a@]%0aThe above will allow the user to put in the author name of their choice, but that will always be replaced by that name prefixed with "$AuthId-".%0aThe reason why $AuthorLink needs to be set is that, if it isn't, the RecentChanges page will have the wrong link in it.%0a%0a!!! Removing the "Author" edit field%0aTo force users to edit with their AuthID instead of having a field they can place any name in. This enables administration to keep track of who is doing what better. This line also links the Author name to their Profile.\\%0aGo to Site.EditForm, remove the line\\%0a[@$[Author]: (:input e_author:)@]\\%0aor replace it with\\%0a[@$[Author]: [[Profiles/{$Author}]]@]\\%0a%0a!! Authorization, Sessions, and WikiFarms [[#sessions]]%0a%0aPmWiki uses PHP sessions to keep track of any user authorization information. By default PHP is configured so that all interactions with the same server (as identified by the server's domain name) are treated as part of the same session.%0a%0aWhat this means for PmWiki is that if there are multiple wikis running within the same domain name, PHP will treat a login to one wiki as being valid for all wikis in the same domain. The easiest fix is to tell each wiki to have use a different "session cookie". Near the top of a wiki's ''local/config.php'' file, before calling authuser or other recipes, add a line like:%0a%0a-->[@session_name('XYZSESSID');@]%0a%0aThe XYZSESSID can be any unique name (letters only is safest).%0a%0a!! See Also%0a%0a* [[PmWiki.Passwords]]%0a* [[PmWiki.PasswordsAdmin]]%0a* [[Cookbook:AuthUser]] for tips and tricks%0a* [[SiteAdmin.AuthUser]]%0a%0a%0a>>faq%3c%3c [[#faq]]%0a%0aQ: I get http error 500 "Internal Server Error" when I try to log in. What's wrong?%0a%0aA: This can happen if the encrypted passwords are not created on the web server that hosts the PmWiki.%0aThe crypt function changed during the PHP development, e.g. a password encrypted with PHP 5.2 can not be decrypted in PHP 5.1, but PHP 5.2 can decrypt passwords created by PHP 5.1.%0aThis situation normally happens if you prepare everything on your local machine with the latest PHP version and you upload the passwords to a webserver which is running an older version.%0aThe same error occurs when you add encrypted passwords to local/config.php.%0a%0aSolution: Create the passwords on the system with the oldest PHP version and use them on all other systems.%0a%0aQ: Can I specify authorization group memberships from with ''local/config.php''?%0a%0aA: Yes -- put the group definition into the $AuthUser array (in config.php):%0a%0a $AuthUser['@editors'] = array('alice', 'carol', 'bob');%0a%0aQ: I'm running multiple wikis under the same domain name, and logins from one wiki are appearing on other wikis. Shouldn't they be independent?%0a%0aA: This is caused by the way that PHP treats sessions. See [[PmWiki.AuthUser#sessions]] for more details.%0a%0a%0aQ: Is there any way to record the time of the last login for each user when using AuthUser? I need a way to look for stale accounts.%0a%0aA: See [[Cookbook:UserLastAction]].%0a%0aQ: Though every settings seem correct, authentication against LDAP is not working, and there is nothing in ldap log. What's wrong ?%0a%0aA: Be sure ldap php module is installed ( on debian apt-get install php(4|5)-ldap ; apache(2)ctl graceful )%0a%0a%0aQ: The login form asks for username and password, but only password matters. %0a-> Username can be left blank and it still signs in under the account. Is this intentional and if so, can I change it so that the username and password must both be entered? - X 1/18/07 Never mind I think this has something to do with using the admin password. I created a test account and it's working ok.%0a%0aA: Make sure you are not entering the admin password when testing the account because, if the password is equal to the admin password, it will authenticate directly through the config.php file and skip any other system.%0a%0aA: Do note that even with AuthUser activated you can still log in with a blank username and only entering the password. In that case any password you enter will be "accepted" but only passwords which authenticate in the given context will actually give you any authorization rights. Using this capability AuthUser comfortably coexists with the default password-based system.%0a%0aIf you want to require both username and password, then you need to set an admin id '''before''' including authuser.php:%0a%0a[@%0a## Define usernames and passwords.%0a$AuthUser['carol'] = '$1$CknC8zAs$dC8z2vu3UvnIXMfOcGDON0';%0a%0a## Enable authentication based on username.%0ainclude_once('scripts/authuser.php');%0a%0a# $DefaultPasswords['admin'] = crypt('secret');%0a$DefaultPasswords['admin'] = 'id:carol';%0a@]%0a%0aA username and password will then be required before login is successful.%0a%0aQ: Is there any way to hide IP addresses once someone has logged in so that registered users can keep their IP addresses invisible to everyone except administrators? - X 1/18/07%0a%0aA: Not yet.%0a%0a%0aQ: Is there a way that people could self-register through AuthUser? %0a%0aA: You can see [[Cookbook:AuthUserSignup]] for a recipe about this problem. %0a%0aQ: I would like it that after I have AuthUser turned and a user is authenticated to get on my site, that if I have a password put on a particular page or group that they don't get the AuthUser form to show up (username and password), but only the typical field for password?%0a%0aA: See [[this thread of the mailing list -> http://article.gmane.org/gmane.comp.web.wiki.pmwiki.user/52420]].%0a -time=1238275602 +text=(:Summary:Authorization system that uses usernames and passwords:)%0a(:Audience: administrators (intermediate) :)%0a%0aAuthUser is PmWiki's identity-based authorization system that allows access to pages to be controlled through the use of usernames and passwords. AuthUser can be used in addition to the [[Passwords | password-based]] scheme that is PmWiki's default configuration.%0a%0aAuthUser is a very flexible system for managing access control on pages, but flexibility can also bring complexity and increased maintenance overhead to the wiki administrator. This is why PmWiki defaults to the simpler password-based system. For some thoughts about the relative merits of the two approaches, see [[PmWiki:ThoughtsOnAccessControl]].%0a%0aSee also: [[Cookbook:Quick Start for AuthUser]]%0a%0a!! Activating AuthUser%0aTo activate PmWiki's identity-based system, add the following line%0ato ''local/config.php'':%0a%0a include_once("$FarmD/scripts/authuser.php");%0a%0aEnsure that you have [[PasswordsAdmin | set a site wide admin password]], otherwise you will not be able to edit [[SiteAdmin.AuthUser]].%0a%0a->%25note%25 Note: Older versions of PmWiki (before 2.2.0-beta58) use ''Site.AuthUser''.%0a%0aPmWiki caches some group and page authorization levels when a page is accessed. For this reason, it is better to include @@authuser.php@@ quite early in config.php, notably%0a* after any recipe which inserts some custom writable PageStore class (MySQL, SQLite, Compressed PageStore or other)%0a* and after any internationalization (UTF-8 and XLPage).%0a%0a(If you don't use a custom PageStore class and i18n, include @@authuser.php@@ first thing in @@config.php@@.)%0a%0aAll other recipes should be included after these.%0a%0a!! Creating user accounts%0aMost of AuthUser's configuration is performed via the [[SiteAdmin.AuthUser]] page. To change the AuthUser configuration, simply edit this page like any other wiki page (you'll typically need to use the site's admin password for this).%0a%0aTo create a login account, simply add lines to SiteAdmin.AuthUser that look like:%0a%0a username: [=(:=]encrypt ''password'':)%0a%0aFor example, to create a login account for "alice" with a password of "wonderland", enter:%0a%0a alice: [=(:=]encrypt wonderland:)%0a%0aWhen the page is saved, the "@@[=(:=]encrypt wonderland:)@@" part of the text will be replaced by an encrypted form of the password "wonderland". This encryption is done so that someone looking at the SiteAdmin.AuthUser page cannot easily determine the passwords stored in the page. %0a%0aTo change or reset an account's password, simply replace the encrypted string with another @@[=(:=]encrypt:)@@ directive.%0a%0a%0a!! Controlling access to pages by login%0a%0aPages and groups can be protected based on login account by using "passwords" of the form [@id:username@] in the password fields of [@?action=attr@] (see [[PmWiki.Passwords]]). For example, to restrict a page to being edited by Alice, one would set the password to "[@id:alice@]".%0a%0aIt's possible to use multiple "id:" declarations and passwords in the [@?action=attr@] form, thus the following setting would allow access to Alice, Carol, and anyone who knows the password "quick":%0a%0a quick id:alice,carol%0a%0aTo allow access to anyone who has successfully logged in, use "[@id:*@]".%0a%0aOne can also perform site-wide restrictions based on identity in the $DefaultPasswords array: e.g.%0a%0a # require valid login before viewing pages%0a $DefaultPasswords['read'] = 'id:*';%0a # Alice and carol may edit%0a $DefaultPasswords['edit'] = 'id:alice,carol';%0a # All admins and Fred may edit%0a $DefaultPasswords['edit'] = array('@admins', 'id:Fred');%0a%0aYou can change the $DefaultPasswords array in local customization files such as:%0a* local/config.php (for entire wiki)%0a* farmconfig.php (for entire wikifarm)%0a%0a%0a!! [[#auth_groups]] Organizing accounts into groups%0a%0aAuthUser also makes it possible to group login accounts together into authorization groups, indicated by a leading "@" sign. As with login accounts, group memberships are maintained by editing the SiteAdmin.AuthUser page. Group memberships can be specified by either listing the groups for a login account (person belongs to groups) or the login accounts for a group (group includes people). You can repeat or mix-and-match the two kinds as desired:%0a%0a @writers: alice, bob%0a carol: @writers, @editors%0a @admins: alice, dave%0a %0aThen, to restrict page access to a particular group, simply use "[@@group@]" as the "password" in [@?action=attr@] or the $DefaultPasswords array, similar to the way that "[@id:username@]" is used to restrict access to specific login accounts.%0a%0a!!! Excluding individuals from password groups%0a%0aGroup password memberships are maintained by editing the SiteAdmin.AuthUser page. To specify a password group that allows access to anyone who is authenticated, you can specify:%0a%0a @wholeoffice: *%0a%0aIf you need to keep "Fred" out of this password group :%0a%0a @wholeoffice: *,-Fred%0a%0aTo allow all users except Fred to change page attributes, for example, you can add to config.php :%0a $DefaultPasswords['attr'] = array('id:*,-Fred');%0a%0a(:if authid:)%0a>>clip%3c%3c%0a!!!!!Wiki Debug%0a* %25newwin%25 [[Diagnostics -> {$Name}?action=diag]]%0a* %25newwin%25 [[PHPInfo -> {$Name}?action=phpinfo]]%0a(:ifend:)%0a%0a%0a%0a!! Getting account names and passwords from external sources%0a%0aThe AuthUser script has the capability of obtaining username/password pairs from places other than the SiteAdmin.AuthUser page, such as passwd-formatted files (usually called '.htpasswd' on Apache servers), [[#LDAP|LDAP]] servers, or even the ''local/config.php'' file.%0a%0a%0a!!! Passwd-formatted files (.htpasswd/.htgroup)%0a%0aPasswd-formatted files, commonly called ''.htpasswd'' files in Apache, are text files where each line contains a username and an encrypted password separated by a colon. A typical ''.htpasswd'' file might look like:%0a%0a alice:vK99sgDV1an6I%0a carol:Q1kSeNcTfwqjs%0a%0aTo get AuthUser to obtain usernames and passwords from a ''.htaccess'' file, add the following line to SiteAdmin.AuthUser, replacing "/path/to/.htpasswd" with the filesystem path of the ''.htpasswd'' file:%0a%0a htpasswd: /path/to/.htpasswd%0a%0aCreation and maintenance of the ''.htpasswd'' file can be performed using a text editor, or any number of other third-party tools available for maintaining ''.htpasswd'' files. The Apache web server typically includes an ''htpasswd'' command for creating accounts in .htpasswd:%0a%0a $ htpasswd /path/to/.htpasswd alice%0a New password:%0a Re-type new password:%0a Adding password for user alice%0a $%0a%0aSimilarly, one can use ''.htgroup'' formatted files to specify group memberships. Each line has the name of a group (without the "@"), followed by a colon, followed by a space separated list of usernames in the group.%0a%0a writers: carol%0a editors: alice carol bob%0a admins: alice dave%0a%0aNote that the groups are still "@writers", "@editors", and "@admins" in PmWiki even though the file doesn't specify the @ signs. To get AuthUser to load these groups, use a line in SiteAdmin.AuthUser like:%0a%0a htgroup: /path/to/.htgroup%0a%0a %0a!!! Configuration via ''local/config.php''%0a%0aAuthUser configuration settings can also be made from the ''local/config.php'' file in addition to the SiteAdmin.AuthUser page. Such settings are placed in the $AuthUser array, and ''must be set prior to including the ''authuser.php'' script''. Some examples:%0a%0a # set a password for alice%0a $AuthUser['alice'] = crypt('wonderland');%0a # set a password for carol%0a $AuthUser['carol'] = '$1$CknC8zAs$dC8z2vu3UvnIXMfOcGDON0';%0a # define the @editors group%0a $AuthUser['@editors'] = array('alice', 'carol', 'bob');%0a # Use local/.htpasswd for usernames/passwords%0a $AuthUser['htpasswd'] = 'local/.htpasswd';%0a # Use local/.htgroup for group memberships%0a $AuthUser['htgroup'] = 'local/.htgroup';%0a%0a[[#LDAP]]%0a!!! Configuration via LDAP%0a%0aAuthentication can be performed via an external LDAP server -- simply set an entry for "ldap" in either SiteAdmin.AuthUser or the ''local/config.php'' file.%0a%0a # use ldap.airius.com for authentication%0a $AuthUser['ldap'] = 'ldap://ldap.airius.com/ou=People,o=Airius?cn?sub';%0a%0aMake sure to include AuthUser below the entry for the ldap server:%0a%0a # Want to use AuthUser so we can use ldap for passwords%0a include_once("$FarmD/scripts/authuser.php");%0a%0aAnd remember to assign the Security Variables for edit and history (or whatever):%0a%0a #Security Variables set login for edit & history page%0a # to let anyone edit that has an ldap entry:%0a $HandleAuth['diff'] = 'edit';%0a $DefaultPasswords['edit'] = 'id:*';%0a $Author = $AuthId;%0a%0aLDAP authentication in AuthUser closely follows the model used by Apache 2.0's [[http://httpd.apache.org/docs/2.0/mod/mod_auth_ldap.html|mod_auth_ldap]] module; see especially the documentation for [[http://httpd.apache.org/docs/2.0/mod/mod_auth_ldap.html#authldapurl|AuthLDAPUrl]] for a description of the url format.%0a%0aFor servers that don't allow anonymous binds, AuthUser provides $AuthLDAPBindDN and $AuthLDAPBindPassword variables to specify the binding to be used for searching.%0a%0aSee also [[Cookbook:AuthUser via Microsoft LDAP]]%0a%0a!! Setting the Author Name%0aBy default, PmWiki will use a login name in the Author field of the edit form, but allows the author to change this value prior to saving. To force the login name to always be used as the author name, use the following sequence in config.php to activate AuthUser:%0a%0a include_once("$FarmD/scripts/authuser.php");%0a $Author = $AuthId; # after include_once()%0a%0aTo allow more flexibility, but still enable changes to be linked to the authorized user, one can give the author name a prefix of the $AuthId instead:%0a[@%0a include_once("$FarmD/scripts/author.php");%0a include_once("$FarmD/scripts/authuser.php");%0a if ($Author) {%0a if (strstr($Author, '-') != false) {%0a $Author = "$AuthId-" . preg_replace('/^[^-]*-/', '', $Author);%0a } else if ($Author != $AuthId) {%0a $Author = $AuthId . '-' . $Author;%0a } else {%0a $Author = $AuthId;%0a }%0a } else {%0a $Author = $AuthId;%0a }%0a $AuthorLink = "[[~$Author]]";%0a@]%0aThe above will allow the user to put in the author name of their choice, but that will always be replaced by that name prefixed with "$AuthId-".%0aThe reason why $AuthorLink needs to be set is that, if it isn't, the RecentChanges page will have the wrong link in it.%0a%0a!!! Removing the "Author" edit field%0aTo force users to edit with their AuthID instead of having a field they can place any name in. This enables administration to keep track of who is doing what better. This line also links the Author name to their Profile.\\%0aGo to Site.EditForm, remove the line\\%0a[@$[Author]: (:input e_author:)@]\\%0aor replace it with\\%0a[@$[Author]: [[Profiles/{$Author}]]@]\\%0a%0a!! Authorization, Sessions, and WikiFarms [[#sessions]]%0a%0aPmWiki uses PHP sessions to keep track of any user authorization information. By default PHP is configured so that all interactions with the same server (as identified by the server's domain name) are treated as part of the same session.%0a%0aWhat this means for PmWiki is that if there are multiple wikis running within the same domain name, PHP will treat a login to one wiki as being valid for all wikis in the same domain. The easiest fix is to tell each wiki to have use a different "session cookie". Near the top of a wiki's ''local/config.php'' file, before calling authuser or other recipes, add a line like:%0a%0a-->[@session_name('XYZSESSID');@]%0a%0aThe XYZSESSID can be any unique name (letters only is safest).%0a%0a!! See Also%0a%0a* [[PmWiki.Passwords]]%0a* [[PmWiki.PasswordsAdmin]]%0a* [[Cookbook:AuthUser]] for tips and tricks%0a* [[SiteAdmin.AuthUser]]%0a%0a%0a>>faq%3c%3c [[#faq]]%0a%0aQ: I get http error 500 "Internal Server Error" when I try to log in. What's wrong?%0a%0aA: This can happen if the encrypted passwords are not created on the web server that hosts the PmWiki.%0aThe crypt function changed during the PHP development, e.g. a password encrypted with PHP 5.2 can not be decrypted in PHP 5.1, but PHP 5.2 can decrypt passwords created by PHP 5.1.%0aThis situation normally happens if you prepare everything on your local machine with the latest PHP version and you upload the passwords to a webserver which is running an older version.%0aThe same error occurs when you add encrypted passwords to local/config.php.%0a%0aSolution: Create the passwords on the system with the oldest PHP version and use them on all other systems.%0a%0aQ: Can I specify authorization group memberships from with ''local/config.php''?%0a%0aA: Yes -- put the group definition into the $AuthUser array (in config.php):%0a%0a $AuthUser['@editors'] = array('alice', 'carol', 'bob');%0a%0aQ: I'm running multiple wikis under the same domain name, and logins from one wiki are appearing on other wikis. Shouldn't they be independent?%0a%0aA: This is caused by the way that PHP treats sessions. See [[PmWiki.AuthUser#sessions]] for more details.%0a%0a%0aQ: Is there any way to record the time of the last login for each user when using AuthUser? I need a way to look for stale accounts.%0a%0aA: See [[Cookbook:UserLastAction]].%0a%0aQ: Though every settings seem correct, authentication against LDAP is not working, and there is nothing in ldap log. What's wrong ?%0a%0aA: Be sure ldap php module is installed ( on debian apt-get install php(4|5)-ldap ; apache(2)ctl graceful )%0a%0a%0aQ: The login form asks for username and password, but only password matters. %0a-> Username can be left blank and it still signs in under the account. Is this intentional and if so, can I change it so that the username and password must both be entered? - X 1/18/07 Never mind I think this has something to do with using the admin password. I created a test account and it's working ok.%0a%0aA: Make sure you are not entering the admin password when testing the account because, if the password is equal to the admin password, it will authenticate directly through the config.php file and skip any other system.%0a%0aA: Do note that even with AuthUser activated you can still log in with a blank username and only entering the password. In that case any password you enter will be "accepted" but only passwords which authenticate in the given context will actually give you any authorization rights. Using this capability AuthUser comfortably coexists with the default password-based system.%0a%0aIf you want to require both username and password, then you need to set an admin id '''before''' including authuser.php:%0a%0a[@%0a## Define usernames and passwords.%0a$AuthUser['carol'] = '$1$CknC8zAs$dC8z2vu3UvnIXMfOcGDON0';%0a%0a## Enable authentication based on username.%0ainclude_once('scripts/authuser.php');%0a%0a# $DefaultPasswords['admin'] = crypt('secret');%0a$DefaultPasswords['admin'] = 'id:carol';%0a@]%0a%0aA username and password will then be required before login is successful.%0a%0aQ: Is there any way to hide IP addresses once someone has logged in so that registered users can keep their IP addresses invisible to everyone except administrators? - X 1/18/07%0a%0aA: Not yet.%0a%0a%0aQ: Is there a way that people could self-register through AuthUser? %0a%0aA: You can see [[Cookbook:AuthUserSignup]] for a recipe about this problem. %0a%0aQ: I would like it that after I have AuthUser turned and a user is authenticated to get on my site, that if I have a password put on a particular page or group that they don't get the AuthUser form to show up (username and password), but only the typical field for password?%0a%0aA: See [[this thread of the mailing list -> http://article.gmane.org/gmane.comp.web.wiki.pmwiki.user/52420]].%0a +time=1245616861 Index: wikilib.d/PmWiki.Audiences =================================================================== --- wikilib.d/PmWiki.Audiences (.../pmwiki-2.2.1) (revision 2344) +++ wikilib.d/PmWiki.Audiences (.../pmwiki-2.2.2) (revision 2344) @@ -1,11 +1,11 @@ -version=pmwiki-2.2.0-beta68 ordered=1 urlencoded=1 -agent=Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1 -author=simon +version=pmwiki-2.2.1 ordered=1 urlencoded=1 +agent=Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.172.30 Safari/530.5 +author=Simon charset=ISO-8859-1 -csum=trail -host=203.97.214.12 +csum=layout +host=202.37.32.2 name=PmWiki.Audiences -rev=26 -targets=PmWiki.WikiAdministrator,PmWiki.PmWikiPhilosophy,PmWiki.LocalCustomizations -text=(:Summary:Patrick Michaud's comments regarding the "audiences" for which PmWiki was designed:)%0aThis page contains Patrick Michaud's comments regarding the "audiences" for which PmWiki was designed. As such, many people are reluctant to modify the page, because it is a statement of his opinions and describes some of the thought that went into creating PmWiki. (And we all thank him for that!) %0a%0a%0a!!Patrick's comments%0aI think of PmWiki in terms of two audiences: ''Authors'' are the people who generate web content using PmWiki, and [[wiki administrator]]s are the folks who install, configure, and maintain a PmWiki installation on a web server. In some senses it could be claimed that as the primary developer of PmWiki I should only have wiki administrators as my target audience, and that authors are the target audience for the administrators. But what really makes PmWiki useful to wiki administrators is that I've put a lot of consideration into creating a tool that is usable by authors, so I have to keep the needs of both audiences in mind as I'm designing and adding new features to PmWiki. %0a%0aWithin the authoring audience I see that there are "naive authors" and "experienced authors". "Naive authors" are the folks who use wiki to generate content but may know next-to-nothing about HTML, much less style sheets or PHP or the like. Naive authors are easily discouraged from generating web content if they have to wade through markup text that has lots of funny and cryptic symbols in them. So, if we want a site with lots of contributors, we have to be very careful not to do things that will cause this group to exclude themselves from participating.%0a%0a"Experienced authors" are the folks who know a lot about HTML and could write their content as HTML, but have chosen to use wiki because of its other useful features (ease of linking, collaboration, ease of updates, revision histories, etc.) or because they want to collaborate with naive authors. Experienced authors usually don't have any problem with documents with lots of ugly markup in them; after all, they already know HTML. Experienced authors are sometimes frustrated with wiki because it doesn't have markup that would let them do something they know they can do in HTML (e.g., tables, stylesheets, colored text, etc.). And, they sometimes have difficulty understanding why naive authors would turn away from documents that have lots of markup sequences in them. %0a%0aFor the wiki administrator audience--the folks who install and may want to customize PmWiki--their backgrounds and goals are often quite diverse. PmWiki is designed so that it can be installed and be useful with minimal HTML/PHP knowledge, but it doesn't restrict people who know HTML/PHP from doing some fairly complex things. For one, PmWiki allows a site administrator to build-in markup sequences and features customized to his/her needs (and the needs of his/her audiences). %0a%0aThe separate needs of these audiences are behind most of the [[PmWikiPhilosoph(y)]]ies. The people who develop PmWiki software must continually keep naive authors in mind as new features are requested and proposed by expert authors and Wiki Administrators. Sometimes it may seem to these latter groups that it's okay to implement the complex features because "naive authors don't have to use them", but the truth is that if complex/ugly markup sequences are available then they will eventually be used by someone, and once used they become a barrier to the naive authors. So, if I see that a feature could become a barrier to a naive author I don't include it in the base implementation of PmWiki, but instead find ways to let Wiki Administrators include it as a [[local customization(s)]]. %0a -time=1220178515 +rev=27 +targets=PmWiki.WikiAdministrator,PmWiki.InitialSetupTasks,PmWiki.PmWikiPhilosophy,PmWiki.LocalCustomizations +text=(:Summary:Patrick Michaud's comments regarding the "audiences" for which PmWiki was designed:)%0aThis page contains Patrick Michaud's comments regarding the "audiences" for which PmWiki was designed. As such, many people are reluctant to modify the page, because it is a statement of his opinions and describes some of the thought that went into creating PmWiki. (And we all thank him for that!) %0a%0a%0a!!Patrick's comments%0aI think of PmWiki in terms of two audiences: %0a* ''Authors'' are the people who generate web content using PmWiki, and %0a* ''[[wiki administrator]]s'' are the folks who install, configure, and maintain a PmWiki installation on a web server. %0aIn some senses it could be claimed that as the primary developer of PmWiki I should only have wiki administrators as my target audience, and that authors are the target audience for the administrators. But what really makes PmWiki useful to wiki administrators is that I've put a lot of consideration into creating a tool that is usable by authors, so I have to keep the needs of both audiences in mind as I'm designing and adding new features to PmWiki. %0a%0aWithin the authoring audience I see that there are "naive authors" and "experienced authors". %0a%0a"Naive authors" are the folks who use wiki to generate content but may know next-to-nothing about HTML, much less style sheets or PHP or the like. Naive authors are easily discouraged from generating web content if they have to wade through markup text that has lots of funny and cryptic symbols in them. So, if we want a site with lots of contributors, we have to be very careful not to do things that will cause this group to exclude themselves from participating.%0a%0a"Experienced authors" are the folks who know a lot about HTML and could write their content as HTML, but have chosen to use wiki because of its other useful features (ease of linking, collaboration, ease of updates, revision histories, etc.) or because they want to collaborate with naive authors. Experienced authors usually don't have any problem with documents with lots of ugly markup in them; after all, they already know HTML. Experienced authors are sometimes frustrated with wiki because it doesn't have markup that would let them do something they know they can do in HTML (e.g., tables, stylesheets, colored text, etc.). And, they sometimes have difficulty understanding why naive authors would turn away from documents that have lots of markup sequences in them. %0a%0aFor the wiki administrator audience--the folks who install and may want to [[PmWiki/InitialSetupTasks|customize]] PmWiki--their backgrounds and goals are often quite diverse. PmWiki is designed so that it can be installed and be useful with minimal HTML/PHP knowledge, but it doesn't restrict people who know HTML/PHP from doing some fairly complex things. For one, PmWiki allows a site administrator to build-in markup sequences and features customized to his/her needs (and the needs of his/her audiences). %0a%0aThe separate needs of these audiences are behind most of the [[PmWikiPhilosoph(y)]]ies. The people who develop PmWiki software must continually keep naive authors in mind as new features are requested and proposed by expert authors and Wiki Administrators. Sometimes it may seem to these latter groups that it's okay to implement the complex features because "naive authors don't have to use them", but the truth is that if complex/ugly markup sequences are available then they will eventually be used by someone, and once used they become a barrier to the naive authors. So, if I see that a feature could become a barrier to a naive author I don't include it in the base implementation of PmWiki, but instead find ways to let Wiki Administrators include it as a [[local customization(s)]]. %0a +time=1244681371 Index: wikilib.d/PmWiki.PageVariables =================================================================== --- wikilib.d/PmWiki.PageVariables (.../pmwiki-2.2.1) (revision 2344) +++ wikilib.d/PmWiki.PageVariables (.../pmwiki-2.2.2) (revision 2344) @@ -1,14 +1,14 @@ version=pmwiki-2.2.1 ordered=1 urlencoded=1 -agent=Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.19) Gecko/20081216 Ubuntu/8.04 (hardy) Firefox/2.0.0.19 -author=Petko +agent=Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.172.31 Safari/530.5 +author=simon charset=ISO-8859-1 -csum=fix lin +csum=clarify special references ctime=1135816487 description=Documentation for "variables" that are associated with pages. -host=81.65.14.164 +host=203.97.214.12 name=PmWiki.PageVariables -rev=69 -targets=PmWiki.PageVariables,PmWiki.Variables,PmWiki.FmtPageName,PmWiki.PageListTemplates,PmWiki.ConditionalMarkup,PmWiki.MarkupMasterIndex,PmWiki.PageTextVariables,PmWiki.MarkupExpressions -text=(:title Page specific variables:)%0a(:description Documentation for "variables" that are associated with pages. :)%0a(:Summary: variables that are associated with pages:)%0a(:Audience: authors (intermediate) :)%0a%0a[[#desc]]This page describes the "variables" that are associated with pages. Page variables have the form @@{$''variable''}@@, and can be used in page markup or in certain formatting strings in PmWiki. For example, the markup "[@{$Group}@]" renders in this page as "{$Group}".%0a%0aNote: Do not confuse these variables (set and used only in PmWiki pages) with [[PmWiki/Variables|PHP variables]]. Page variables can be read in PHP with the [[Cookbook:Functions#PageVar|PageVar()]] function.%0a%0aNote that these variables do not necessarily exist in the PHP code, because they have to be determined for a specific page. (However, they are usable in [[FmtPageName]] strings.)%0a%0aThere is also the form @@{''pagename''$''variable''}@@, which returns the value of the variable for another page. For example, "[@{MarkupMasterIndex$Title}@]" displays as "{MarkupMasterIndex$Title}".%0a%0a[[#specialreferences]]%0a!! Special references%0aSpecial references are used to retain the context of the original (source) page when the variable is included into a destination (target) page).%0a* '''[@*$@]'''PageVariablename - prefixed by an asterisk (*) - value reflects target page context%0a* '''[@$@]'''PageVariablename - retains value in source page context%0aSpecial references are also used in [[page list templates(#specialreferences)]].%0a-%3cFor example you can test to see if the page is part of another page%0a(:markup class=horiz:)%0a(:if ! name {$FullName}:)%0a->[-[[{$FullName}#anchor|more ...]]-]%0a(:ifend:)%0a(:markupend:)%0a[[#specialreferencesend]]%0a%0a!! Default page variables%0a%0aThe page variables defined for PmWiki are:%0a%0a->[@{$Group}@] - page's group name, as in "`{$Group}"%0a->[@{$Groupspaced}@] - spaced group name, as in "{$Groupspaced}"%0a->[@{$DefaultGroup}@] - default group name, as in "{$DefaultGroup}"%0a->[@{$SiteGroup}@] - default group name for e.g. RecentChanges, as in "{$SiteGroup}"%0a->[@{$Name}@] - page name, as in "`{$Name}"%0a->[@{$Namespaced}@] - spaced page name, as in "{$Namespaced}"%0a->[@{$DefaultName}@] - name of default page, as in "`{$DefaultName}"%0a->[@{$FullName}@] - page's full name, as in "`{$FullName}"%0a->[@{$BaseName}@] - page's "base" form (stripping any recipe-defined prefixes or suffixes) as in "`{$BaseName}"%0a->[@{$Title}@] - page title (may differ from Name), as in "{$Title}"%0a->[@{$Titlespaced}@] - title/spaced page name, as in "{$Titlespaced}"%0a->[@{$Description}@] - page's description from the [@(:description:)@] markup, as in "{$Description}"%0a%0a->[@{$LastModified}@] - date page was edited, as in "{$LastModified}"%0a->[@{$LastModifiedBy}@] - page's last editor, as in "{$LastModifiedBy}"%0a->[@{$LastModifiedTime}@] - time page was edited in unix-style timestamp, as in "{$LastModifiedTime}" %25green%25added version 2.2 beta 67%25%25%0a-->This can be used (preceded by '@') in [@{(ftime)}@] and other date/time markups.%0a->[@{$LastModifiedHost}@] - IP of page's last editor, as in "{$LastModifiedHost}"%0a->[@{$LastModifiedSummary}@] - Summary from last edit, as in "{$LastModifiedSummary}"%0a->[@{$PageUrl}@] - page's url, as in "{$PageUrl}"%0a->[@{$Action}@] - page's url action argument, as in "{$Action}"%0a%0aIn addition to the above, there are some page-invariant variables available through this markup:%0a%0a->[@{$Author}@] - the name of the person currently interacting with the site, as in "{$Author}"%0a->[@{$AuthId}@] - current authenticated id, as in "{$AuthId}" %25red%25Please note the lower case 'd'. [@{$AuthID}@] returns nothing%0a%0a->[@{$Version}@] - PmWiki version, as in "{$Version}"%0a->[@{$VersionNum}@] - The internal version number, as in "{$VersionNum}"%0a->[@{$ScriptUrl}@] - The url to the pmwiki script, as in "{$ScriptUrl}"%0a%0a%0a!! Custom page variables%0a%0aYou may add custom page variables as a local customization. In a local configuration file or a recipe script, use the variable $FmtPV:%0a%0a->[@%0a$FmtPV['$VarName'] = "'variable definition'";%0a$FmtPV['$CurrentSkin'] = '$GLOBALS["Skin"]';%0a$FmtPV['$WikiTitle'] = '$GLOBALS["WikiTitle"]';%0a@]%0a%0aDefines new Page Variable of name $CurrentSkin, which can be used in the page with [@{$CurrentSkin}@] (also for [[Conditional markup]]). It's necessary to use the single quotes nested inside double-quotes as shown above (preferred) or a double-quoted string nested inside single-quotes like ''[@'"this"'@]''.%0a%0aIf you want to have a Page Variable that returns the currently used password (more precisely, the last password entered), you can use%0a%0a->[@%0a$FmtPV['$AuthPw'] = 'reset(array_keys((array)@$_SESSION["authpw"]))';%0a@]%0a%0a!! See also%0a%0a* [[Cookbook:More custom page variables]]%0a* [[PmWiki.Variables]] — about variables internal to PmWiki.%0a* [[PmWiki.MarkupMasterIndex]] — complete list of PmWiki markups.%0a* [[PmWiki/PageTextVariables]] — page variables automatically made available through natural page markup or explicit page markup within the wiki text of the page.%0a* [[PmWiki.Markup Expressions]] — markup expressions can manipulate page variables%0a%0a>>faq%3c%3c [[#faq]]%0a%0aQ:Is there a variable like $LastModified, but which shows me the creation time?%0aA:No, but you can create one in config.php. For instance:%0a->[@# add page variable {$PageCreationDate} in format yyyy-mm-dd%0a$FmtPV['$PageCreationDate'] = 'strftime("%25Y-%25m-%25d", $page["ctime"])';@]%0a%0aIf you like the same format that you define in config.php with $TimeFmt use%0a[@ $FmtPV['$Created'] = "strftime(\$GLOBALS['TimeFmt'], \$page['ctime'])";%0a@] -time=1238272424 +rev=74 +targets=PmWiki.PageVariables,PmWiki.Variables,PmWiki.FmtPageName,PmWiki.IncludeOtherPages,PmWiki.PageListTemplates,PmWiki.ConditionalMarkup,PmWiki.MarkupMasterIndex,PmWiki.PageTextVariables,PmWiki.MarkupExpressions +text=(:title Page specific variables:)%0a(:description Documentation for "variables" that are associated with pages. :)%0a(:Summary: variables that are associated with pages:)%0a(:Audience: authors (intermediate) :)%0a%0a[[#desc]]This page describes the "variables" that are associated with pages. Page variables have the form @@{$''variable''}@@, and can be used in page markup or in certain formatting strings in PmWiki. For example, the markup "[@{$Group}@]" renders in this page as "{$Group}".%0a%0aNote: Do not confuse these variables (set and used only in PmWiki pages) with [[PmWiki/Variables|PHP variables]]. Page variables can be read in PHP with the [[Cookbook:Functions#PageVar|PageVar()]] function.%0a%0aNote that these variables do not necessarily exist in the PHP code, because they have to be determined for a specific page. (However, they are usable in [[FmtPageName]] strings.)%0a%0aThere is also the form @@{''pagename''$''variable''}@@, which returns the value of the variable for another page. For example, "[@{MarkupMasterIndex$Title}@]" displays as "{MarkupMasterIndex$Title}".%0a%0a[[#specialreferences]]%0a!! Special references%0aSpecial referenced variables are used to retain the context of the target page or main page for a [[variable(s)]] when:%0a* the variable is [[PmWiki/IncludeOtherPages|included]] into a destination (target) page)%0a* the variable is part of a sidebar, header, or footer for a main page%0a%0aPrefixing the variable name with an asterisk (*) means the variable reflects the value related to the target page or main page.%0a* '''[@*$@]'''PageVariablename - prefixed by an asterisk (*) - value reflects target page context%0aWithout the asterisk it reflects the value of the page in which it originates.%0a* '''[@$@]'''PageVariablename - retains value in source page context%0a%0aSpecial references are also used in [[page list templates(#specialreferences)]].%0a%0aFor example you can test to see if the page is part of another page%0a(:markup:)%0a(:if ! name {$FullName}:) %0a%25comment%25 name of this page is not the same as the page this text was sourced from%0a->[[{$FullName}#anchor | more ...]]%0a(:ifend:)%0a(:markupend:)%0aor refer to the main page in a sidebar, footer, or header%0a(:markup class=horiz:)%0aThis page is [[{*$FullName}]]%0a(:markupend:)%0a%0a[[#specialreferencesend]]%0a%0a!! Default page variables%0a%0aThe page variables defined for PmWiki are:%0a%0a->[@{$Group}@] - page's group name, as in "`{$Group}"%0a->[@{$Groupspaced}@] - spaced group name, as in "{$Groupspaced}"%0a->[@{$DefaultGroup}@] - default group name, as in "{$DefaultGroup}"%0a->[@{$SiteGroup}@] - default group name for e.g. RecentChanges, as in "{$SiteGroup}"%0a->[@{$Name}@] - page name, as in "`{$Name}"%0a->[@{$Namespaced}@] - spaced page name, as in "{$Namespaced}"%0a->[@{$DefaultName}@] - name of default page, as in "`{$DefaultName}"%0a->[@{$FullName}@] - page's full name, as in "`{$FullName}"%0a->[@{$BaseName}@] - page's "base" form (stripping any prefixes or suffixes defined via @@$BaseNamePatterns@@) as in "`{$BaseName}"%0a->[@{$Title}@] - page title (may differ from Name), as in "{$Title}"%0a->[@{$Titlespaced}@] - title/spaced page name, as in "{$Titlespaced}"%0a->[@{$Description}@] - page's description from the [@(:description:)@] markup, as in "{$Description}"%0a%0a->[@{$LastModified}@] - date page was edited, as in "{$LastModified}"%0a->[@{$LastModifiedBy}@] - page's last editor, as in "{$LastModifiedBy}"%0a->[@{$LastModifiedTime}@] - time page was edited in unix-style timestamp, as in "{$LastModifiedTime}" %25green%25added version 2.2 beta 67%25%25%0a-->This can be used (preceded by '@') in [@{(ftime)}@] and other date/time markups.%0a->[@{$LastModifiedHost}@] - IP of page's last editor, as in "{$LastModifiedHost}"%0a->[@{$LastModifiedSummary}@] - Summary from last edit, as in "{$LastModifiedSummary}"%0a->[@{$PageUrl}@] - page's url, as in "{$PageUrl}"%0a->[@{$Action}@] - page's url action argument, as in "{$Action}"%0a->[@{$PasswdRead}@] - current password for read attr. e.g. "{$PasswdRead}"%0a->[@{$PasswdEdit}@] - current password for read attr. e.g. "{$PasswdEdit}"%0a->[@{$PasswdAttr}@] - current password for read attr. e.g. "{$PasswdAttr}"%0a%0aIn addition to the above, there are some page-invariant variables available through this markup:%0a%0a->[@{$Author}@] - the name of the person currently interacting with the site, as in "{$Author}"%0a->[@{$AuthId}@] - current authenticated id, as in "{$AuthId}" %25red%25Please note the lower case 'd'. [@{$AuthID}@] returns nothing%0a%0a->[@{$Version}@] - PmWiki version, as in "{$Version}"%0a->[@{$VersionNum}@] - The internal version number, as in "{$VersionNum}"%0a->[@{$ScriptUrl}@] - The url to the pmwiki script, as in "{$ScriptUrl}"%0a%0a%0a!! Custom page variables%0a%0aYou may add custom page variables as a local customization. In a local configuration file or a recipe script, use the variable $FmtPV:%0a%0a->[@%0a$FmtPV['$VarName'] = "'variable definition'";%0a$FmtPV['$CurrentSkin'] = '$GLOBALS["Skin"]';%0a$FmtPV['$WikiTitle'] = '$GLOBALS["WikiTitle"]';%0a@]%0a%0aDefines new Page Variable of name $CurrentSkin, which can be used in the page with [@{$CurrentSkin}@] (also for [[Conditional markup]]). It's necessary to use the single quotes nested inside double-quotes as shown above (preferred) or a double-quoted string nested inside single-quotes like ''[@'"this"'@]''.%0a%0aIf you want to have a Page Variable that returns the currently used password (more precisely, the last password entered), you can use%0a%0a->[@%0a$FmtPV['$AuthPw'] = 'reset(array_keys((array)@$_SESSION["authpw"]))';%0a@]%0a%0a!! See also%0a%0a* [[Cookbook:More custom page variables]]%0a* [[PmWiki.Variables]] — about variables internal to PmWiki.%0a* [[PmWiki.MarkupMasterIndex]] — complete list of PmWiki markups.%0a* [[PmWiki/PageTextVariables]] — page variables automatically made available through natural page markup or explicit page markup within the wiki text of the page.%0a* [[PmWiki.Markup Expressions]] — markup expressions can manipulate page variables%0a%0a>>faq%3c%3c [[#faq]]%0a%0aQ:Is there a variable like $LastModified, but which shows me the creation time?%0aA:No, but you can create one in config.php. For instance:%0a->[@# add page variable {$PageCreationDate} in format yyyy-mm-dd%0a$FmtPV['$PageCreationDate'] = 'strftime("%25Y-%25m-%25d", $page["ctime"])';@]%0a%0aIf you like the same format that you define in config.php with $TimeFmt use%0a[@ $FmtPV['$Created'] = "strftime(\$GLOBALS['TimeFmt'], \$page['ctime'])";%0a@] +time=1245569488 title=Page specific variables Index: wikilib.d/PmWiki.Security =================================================================== --- wikilib.d/PmWiki.Security (.../pmwiki-2.2.1) (revision 2344) +++ wikilib.d/PmWiki.Security (.../pmwiki-2.2.2) (revision 2344) @@ -2,10 +2,10 @@ agent=Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.19) Gecko/20081216 Ubuntu/8.04 (hardy) Firefox/2.0.0.19 author=Petko charset=ISO-8859-1 -csum=fix link +csum=mv question to talk host=81.65.14.164 name=PmWiki.Security -rev=74 +rev=76 targets=PmWiki.Passwords,PmWiki.PasswordsAdmin,PmWiki.UrlApprovals,PmWiki.AnalyzeResults,PmWiki.Blocklist,PmWiki.Notify,PmWiki.SecurityVariables,Profiles.Pm,PmWiki.DeletingPages,PmWiki.AvailableActions,Site.AuthForm,Profiles.HomePage,PmWiki.Drafts text=(:Summary: Resources for securing your PmWiki installation:)%0aAspects of PmWiki security are found on the following pages:%0a%0aPages distributed in a PmWiki release:%0a* [[PmWiki/Passwords]] {PmWiki/Passwords$:Summary}%0a* [[PmWiki/Passwords Admin]] {PmWiki/PasswordsAdmin$:Summary}%0a* [[PmWiki/Url Approvals]] {PmWiki/UrlApprovals$:Summary}%0a* [[(PmWiki:)Site Analyzer]] {PmWiki/SiteAnalyzer$:Summary}%0a* [[PmWiki/Blocklist]] {PmWiki/Blocklist$:Summary}%0a* [[PmWiki/Notify]] {PmWiki/Notify$:Summary}%0a* [[PmWiki/Security variables]] {PmWiki/SecurityVariables$:Summary}%0a%0a[[Cookbook(:/)]] Pages%0a%0a* [[Cookbook:Cookbook#Security | Cookbook index: Security]]%0a* [[Cookbook:Web server security]] Making the server more secure with .htaccess%0a* [[Cookbook:Farm security]] Making Farm installations secure%0a* [[Cookbook:EProtect]] Hide e-mail address%0a* [[Cookbook:Protect email]] Obfusticate email addresses%0a* [[Cookbook:Audit images]] Check to see what images have been uploaded to your wiki.%0a* [[Cookbook:Private groups]] Create and secure private groups on a public wiki%0a* [[Cookbook:Only one login]] Only allow 1 login at the same time for a username%0a* [[Cookbook:Session guard]] Protects against Session Theft%0a%0a%0a>>faq%3c%3c [[#faq]]%0a%0aQ: How do I report a possible security vulnerability of PmWiki?%0a%0aA: [[Profiles/Pm]] wrote about this in [[http://pmichaud.com/pipermail/pmwiki-users/2006-September/031793.html | a post to pmwiki-users from September 2006]]. In a nutshell he differentiates two cases:%0a## The possible vulnerability isn't already known publicly: In this case please contact Pm by private mail.%0a## The possible vulnerability is already known publicly: In this case feel free to discuss the vulnerability in public (e.g. on [[http://www.pmichaud.com/mailman/listinfo/pmwiki-users | pmwiki-users]]).%0aSee [[http://pmichaud.com/pipermail/pmwiki-users/2006-September/031793.html | his post mentioned above]] for details and rationals.%0a%0aQ: What about the botnet security advisory at %25newwin%25[[http://isc.sans.org/diary.php?storyid=1672]]?%0a%0aA: Sites that are running with PHP's ''register_globals'' setting set to "On" and versions of PmWiki prior to 2.1.21 may be vulnerable to a botnet exploit that is taking advantage of a bug in PHP. The vulnerability can be closed by turning ''register_globals'' off, upgrading to PmWiki 2.1.21 or later, or upgrading to PHP versions 4.4.3 or 5.1.4. [[%3c%3c]]In addition, there is a test at [[PmWiki:SiteAnalyzer]] that can be used to determine if your site is vulnerable.%0a%0a[[#wikivandalism]]%0a!! Wiki Vandalism%0a:Assumptions: you are using a [[PmWiki/Blocklist]] and [[PmWiki/Url approvals]].%0a: :You don't want to resort to [[PmWiki/password(s)]] protecting the entire wiki, that's not the point after all.%0a: :Ideally these protections will be invoked in @@config.php@@%0a%0a%0aQ: How do I stop pages being [[PmWiki/DeletingPages|deleted]], eg password protect a page from deletion?%0aA: Use Cookbook:DeleteAction and password protect the page deletion [[(available) action(s)]] by adding [@$DefaultPasswords['delete'] = '*';@] to @@config.php@@ or password protect the action with @@$HandleAuth['delete'] = 'edit';@@%0a->or @@$HandleAuth['delete'] = 'admin';@@ to require the edit or admin password respectively.%0a%0aQ: How do I stop pages being replaced with an empty (all spaces) page?%0aA: Add [@block: /^\s*$/@] to your [[PmWiki/blocklist]].%0a%0aQ: how do I stop pages being completely replaced by an inane comment such as ''excellent site'', ''great information'', where the content cannot be blocked?%0aA: Try using the newer [[PmWiki/Blocklist#automaticblocklists | automatic blocklists]] that pull information and IP addresses about known wiki defacers.%0a%0aA: (OR) Try using [[Cookbook:Captchas]] or [[Cookbook:Captcha]] (note these are different).%0a%0aA: (OR) Set an edit password, but make it publicly available on the [[{$SiteGroup}.AuthForm]] template.%0a%0aQ: How do I password protect all common pages in all groups such as recent changes, search, group header, group footer, and so on?%0aA: Insert the following lines into your local/config.php file. Editing these pages then requires the admin password.%0a%0a[@%0a## Require admin password to edit RecentChanges (etc.) pages.%0aif ($action=='edit'%0a && preg_match('/\\.(Search|Group(Header|Footer)|(All)?RecentChanges)$/', $pagename))%0a { $DefaultPasswords['edit'] = crypt('secret phrase'); }%0a@]%0a%0aNote that all GroupAttributes pages are protected by the attr password.%0a%0a'''Alternative:''' you can require 'admin' authentication for these pages:%0a[@%0a## Require admin password to edit RecentChanges (etc.) pages.%0aif ($action=='edit' %0a && preg_match('(Search|Group(Header|Footer)|(All)?RecentChanges)', $pagename))%0a { $HandleAuth['edit'] = 'admin'; }%0a@]%0a%0aQ: How do I password protect the creation of new groups?%0aA: See [[Cookbook:Limit Wiki Groups]] {Cookbook.LimitWikiGroups$:Summary}%0a%0aQ: How do I password protect the creation of new pages?%0aA: See [[Cookbook:Limit new pages in Wiki Groups]] {Cookbook.LimitNewPagesInWikiGroups$:Summary}%0a%0aQ: How do I take a whitelist approach where users from known or trusted IP addresses can edit, and others require a password?%0aA: Put these lines to local/config.php:%0a[@%0a## Allow passwordless editing from own turf, pass for others.%0aif ($action=='edit'%0a && !preg_match("^90.68.", $_SERVER['REMOTE_ADDR']) ) %0a { $DefaultPasswords['edit'] = crypt('foobar'); }%0a@]%0aReplace 90.68. with the preferred network prefix and foobar with the default password for others.%0a%0aQ: How do I password protect [[PmWiki/AvailableActions|page actions]]?%0aA: See [[PmWiki/Passwords]] for setting in config.php %0a-> @@$HandleAuth['[==]''pageactionname''[==]'] = 'pageactionname'; # along with :@@%0a-> @@$DefaultPasswords['[==]''pageactionname''[==]'] = crypt('secret phrase');@@%0aA: or %0a-> @@$HandleAuth['[==]''pageactionname''[==]'] = 'anotherpageactionname';@@%0a%0aQ: How to make a rule that allows only authors to edit their own wiki page in [[Profiles]] group?%0aA: Add this to your ''local/config.php''%0a%0a->@@$name = PageVar($pagename, '$Name');@@%0a->@@$group = PageVar($pagename, '$Group');@@%0a->@@if($group=='Profiles') $DefaultPasswords['edit'] = 'id:'.$name;@@%0a%0aQ: How do I moderate all postings?%0aA: Enable [[PmWiki.Drafts]]%0a* Set $EnableDrafts, this relabels the "Save" button to "Publish" and a "Save draft" button appears. %0a* Set $EnablePublish, this adds a new "publish" authorization level to distinguish editing from publishing.%0a%0aQ: How do I make a read only wiki?%0aA: In config.php [[PmWiki/PasswordsAdmin | set]] an "edit" password.%0a -time=1238274453 +time=1241730553 Index: wikilib.d/PmWiki.Uploads =================================================================== --- wikilib.d/PmWiki.Uploads (.../pmwiki-2.2.1) (revision 2344) +++ wikilib.d/PmWiki.Uploads (.../pmwiki-2.2.2) (revision 2344) @@ -1,11 +1,11 @@ version=pmwiki-2.2.1 ordered=1 urlencoded=1 -agent=Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.19) Gecko/20081216 Ubuntu/8.04 (hardy) Firefox/2.0.0.19 -author=Petko +agent=Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10 (.NET CLR 3.5.30729) +author=szwip charset=ISO-8859-1 -csum=fix link -host=81.65.14.164 +csum= +host=82.246.33.229 name=PmWiki.Uploads -rev=116 +rev=117 targets=PmWiki.PmWiki,PmWiki.Images,PmWiki.UploadsAdmin,PmWiki.WikiGroup,PmWiki.PageDirectives,PmWiki.WikiAdministrator,PmWiki.Passwords,PmWiki.PasswordsAdmin,Site.PageActions,PmWiki.AvailableActions,Test.Test -text=(:Summary:Allow authors to upload files, also known as page attachments:)%0a(:Audience: authors (intermediate) :)%0a[[PmWiki]] can be configured to allow authors to upload and store files and [[images]] (known as attaching them).%0aThese attachments may then be referenced from any page. %0a%0a-> ''Note'': ''[[PmWiki]] is distributed with uploads disabled by default. See [[Uploads Admin]] for information about how to enable and configure the upload feature.''%0a%0a-> ''Note2'': ''Uploads can be configured site-wide, by-group, or by-page; see [[Uploads Admin]] for details. This determines whether all uploads go in one directory for the site, an individual directory for each group, or an individual directory for each page. The default is to organize uploads by [[WikiGroup | group]].''%0a%0a!! [@Attach:@] Syntax%0aTo add or link to an attachment, an author edits a page to include the markup "@@Attach:@@" followed by a name of an attachment (e.g., "@@[=Attach:resume.pdf=]@@"). When the page is displayed, the @@Attach:@@ markup becomes one of the following:%0a%0a* A link to the named attachment (if uploaded, ie already in the upload directory)%0a* A link to a form whereby the author can specify a file to be uploaded and used as the new attachment (if not yet uploaded, ie not in the upload directory)%0a* If the attachment is an [[image(s)]] file with an extension such as .gif, .jpeg, or .png, it is displayed as an [[image(s)]].%0a%0aThe behaviour of links can be modified to%0a* prevent an image attachment from displaying as an image, place it in double brackets (e.g., [@[[Attach:image.jpg]]@]).%0a* have a link to an attachment appear without the "[@Attach:@]" at the beginning of the link, use [@[[(Attach:)file.ext]]@].%0a%0a!! Attachments on other pages and groups%0aTo link to an uploaded attachment (image or file) from another group, you simply refer the group itself (make sure "Groupname" has the dot in it).%0a->[@Attach:Groupname./file_name.ext@]%0aIf PmWiki is configured with an individual directory per page use%0a->[@Attach:Groupname.Pagename/file_name.ext@]%0a%0a!! Names with spaces%0aTo link to a filename with spaces in it use the bracket link notation, eg%0a->[@[[Attach:a filename with spaces.txt]]@]%0aTo attach an [[PmWiki/image(s)]] file with spaces in the name so that is shows as an image use one of these {+workarounds+}%0a->[@[[#blank | Attach:image space.jpeg]]@]%0a->[@[[#1 | Attach:image space.jpeg]]@]%0a%0a!! Listing Uploaded Files On A Page%0aTo list files that have been uploaded, use the markup:%0a[[PmWiki/PageDirectives#attachlist | [@(:attachlist:)@] ]]%0a%0aThis will list attachments to the current group or page, depending whether attachments are organised per group or per page; each instance includes a link to the attachment for viewing or downloading. A list of attachments is also shown as part of the uploads page form.%0a%0a!!!Upload Form / Upload Replacement%0aOne can go directly to the upload form by appending "?action=upload" to the URI for any page that has file uploads enabled by the [[Wiki Administrator]]. Replace a file by simply uploading a new version of the file with the same name. %0a* Be sure to clear your browser cache after replacing an upload. Otherwise, it may appear that the original upload is still on the server. %0aIf you put @@$EnableUploadVersions=1;@@ in your @@local/config.php@@, the old versions of the same files are renamed and not removed.%0a%0a%0a!!!Type and Size Restrictions%0aFor security reasons, the upload feature is disabled when PmWiki is first installed.%0aWhen enabled uploads are restricted as to the types and sizes of files that may be uploaded to the server (see [[UploadsAdmin]]). PmWiki's default configuration limits file sizes to 50 kilobytes and file extensions to common types such as ".gif", ".jpeg", ".doc", ".txt", and ".pdf". %0a%0aIn addition, the administrator can configure the system to require an @@upload@@ password--see [[Passwords]] and [[PasswordsAdmin]].%0a%0aBy default the upload allows the following extensions:%0a%0a[[#imagetypes]] %0a->[@'gif','jpg','jpeg','png','bmp','ico','wbmp', # images@]%0a[[#imagetypesend]]%0a->[@'mp3', 'au','wav', # audio%0a'mpg','mpeg','wmf','mov','qt','avi', # video%0a'zip', 'gz','tgz','tar','rpm','hqx', # archives%0a'odt','ods','odp', # OpenOffice.org%0a'doc','ppt','xls','exe','mdb', # MSOffice%0a'pdf','psd', 'ps','ai','eps', # Adobe%0a'htm','html','fla','swf', # web stuff%0a'txt','rtf','exe','tex','dvi','' # misc@]%0a%0a!!!Removal%0aAt present uploaded files can only be deleted from the server by the [[wiki administrator]]. Any uploads-authorized user may over-write an existing file by uploading another of the same name and extension to the same location.%0a%0aThe administrator may remove an uploaded file by accessing the server via ftp (or via a control panel, if the host offers such a feature). The recipe Cookbook:Attachtable allows the deletion of the files from the wiki.%0a%0a>>faq%3c%3c [[#faq]]%0a%0aQ: When I upload a file, how do I make the link look like "file.doc" instead of "Attach:file.doc"?%0aA: Use parentheses, as in [@[[(Attach:)file.doc]]@]. There is also a configuration change that can eliminate the [@Attach:@] -- see [[Cookbook:AttachLinks]].%0a%0aQ: Why can't I upload files of size more than 50kB to my newly installed PmWiki?%0aA: Out of the box PmWiki limits the size of files to be uploaded to 50kB. Add%0a->@@$UploadMaxSize = 1000000; # limit upload file size to 1 megabyte@@%0a->to your ''config.php'' to increase limit to 1MB (for example). See [[UploadsAdmin]] for how to further customize limits. Note that both PHP and webservers also place their own limits on the size of uploaded files.%0a%0aQ: Why does my upload exit unexpectedly with "Incomplete file received"?%0aA: You may be running out of space in a 'scratch' area, used either by PmWiki or by PHP. On *nix, check that you have sufficient free space in /tmp and /var/tmp.%0a%0aQ: How do I make it so that the upload link still allows one to make another upload (if someone wants to replace the old version of a file with a newer version, for example). Currently you only get the upload link when there is no file in the upload directory.%0aA: Use the Attach [[Site/page action(s)]], and click on the delta symbol %25blue%25(Δ)%25%25 shown against each of files listed. If you can't see the attach action either uploads are not enabled, you are not not authorised to upload, or the attach action has been commented out or is missing. See also [[PmWiki/available actions]], and look at [[Test/Test?action=upload]].%0a%0aQ: How do I hide the "[=Attach:=]" for all attachments%0aA: See Cookbook:AttachLinks, note that this does not currently work for [@ [[Attach:my file.ext]] @].%0a%0aQ: How to avoid problems with non-ASCII characters in attachment names (i.e. "Zażółć geślą jaźń.doc")?%0aA: See $UploadNameChars[@ = "-\w. !=+#";@]%25%25 # allow exclamations, equals, plus, and hash%0a%0aQ: How can I link a file that have a 4-letter file extension such like 'abc.pptx'?%0aA: See [[Cookbook:Upload Types]]%0a%0aQ: How can I prevent others from using the url's of my images on their site%0aA: See [[Cookbook:Prevent Hotlinking]] {Cookbook.PreventHotlinking$:Summary}%0a%0a -time=1238271498 +text=(:Summary:Allow authors to upload files, also known as page attachments:)%0a(:Audience: authors (intermediate) :)%0a[[PmWiki]] can be configured to allow authors to upload and store files and [[images]] (known as attaching them).%0aThese attachments may then be referenced from any page. %0a%0a-> ''Note'': ''[[PmWiki]] is distributed with uploads disabled by default. See [[Uploads Admin]] for information about how to enable and configure the upload feature.''%0a%0a-> ''Note2'': ''Uploads can be configured site-wide, by-group, or by-page; see [[Uploads Admin]] for details. This determines whether all uploads go in one directory for the site, an individual directory for each group, or an individual directory for each page. The default is to organize uploads by [[WikiGroup | group]].''%0a%0a!! [@Attach:@] Syntax%0aTo add or link to an attachment, an author edits a page to include the markup "@@Attach:@@" followed by a name of an attachment (e.g., "@@[=Attach:resume.pdf=]@@"). When the page is displayed, the @@Attach:@@ markup becomes one of the following:%0a%0a* A link to the named attachment (if uploaded, ie already in the upload directory)%0a* A link to a form whereby the author can specify a file to be uploaded and used as the new attachment (if not yet uploaded, ie not in the upload directory)%0a* If the attachment is an [[image(s)]] file with an extension such as .gif, .jpeg, or .png, it is displayed as an [[image(s)]].%0a%0aThe behaviour of links can be modified to%0a* prevent an image attachment from displaying as an image, place it in double brackets (e.g., [@[[Attach:image.jpg]]@]).%0a* have a link to an attachment appear without the "[@Attach:@]" at the beginning of the link, use [@[[(Attach:)file.ext]]@].%0a%0a!! Attachments on other pages and groups%0aTo link to an uploaded attachment (image or file) from another group, you simply refer the group itself (make sure "Groupname" has the dot in it).%0a->[@Attach:Groupname./file_name.ext@]%0aIf PmWiki is configured with an individual directory per page use%0a->[@Attach:Groupname.Pagename/file_name.ext@]%0a%0a!! Names with spaces%0aTo link to a filename with spaces in it use the bracket link notation, eg%0a->[@[[Attach:a filename with spaces.txt]]@]%0aTo attach an [[PmWiki/image(s)]] file with spaces in the name so that is shows as an image use one of these {+workarounds+}%0a->[@[[#blank | Attach:image space.jpeg]]@]%0a->[@[[#1 | Attach:image space.jpeg]]@]%0a%0a!! Listing Uploaded Files On A Page%0aTo list files that have been uploaded, use the markup:%0a[[PmWiki/PageDirectives#attachlist | [@(:attachlist:)@] ]]%0a%0aThis will list attachments to the current group or page, depending whether attachments are organised per group or per page; each instance includes a link to the attachment for viewing or downloading. A list of attachments is also shown as part of the uploads page form.%0a%0a!!!Upload Form / Upload Replacement%0aOne can go directly to the upload form by appending "?action=upload" to the URI for any page that has file uploads enabled by the [[Wiki Administrator]]. Replace a file by simply uploading a new version of the file with the same name. %0a* Be sure to clear your browser cache after replacing an upload. Otherwise, it may appear that the original upload is still on the server. %0aIf you put @@$EnableUploadVersions=1;@@ in your @@local/config.php@@, the old versions of the same files are renamed and not removed.%0a%0a%0a!!!Type and Size Restrictions%0aFor security reasons, the upload feature is disabled when PmWiki is first installed.%0aWhen enabled uploads are restricted as to the types and sizes of files that may be uploaded to the server (see [[UploadsAdmin]]). PmWiki's default configuration limits file sizes to 50 kilobytes and file extensions to common types such as ".gif", ".jpeg", ".doc", ".txt", and ".pdf". %0a%0aIn addition, the administrator can configure the system to require an @@upload@@ password--see [[Passwords]] and [[PasswordsAdmin]].%0a%0aBy default the upload allows the following extensions:%0a%0a[[#imagetypes]] %0a->[@'gif','jpg','jpeg','png','bmp','ico','wbmp', # images%0a@]%0a[[#imagetypesend]]%0a->[@'mp3', 'au','wav', # audio%0a'mpg','mpeg','wmf','mov','qt','avi', # video%0a'zip', 'gz','tgz','tar','rpm','hqx', # archives%0a'odt','ods','odp', # OpenOffice.org%0a'doc','ppt','xls','exe','mdb', # MSOffice%0a'pdf','psd', 'ps','ai','eps', # Adobe%0a'htm','html','fla','swf', # web stuff%0a'txt','rtf','exe','tex','dvi','' # misc@]%0a%0a!!!Removal%0aAt present uploaded files can only be deleted from the server by the [[wiki administrator]]. Any uploads-authorized user may over-write an existing file by uploading another of the same name and extension to the same location.%0a%0aThe administrator may remove an uploaded file by accessing the server via ftp (or via a control panel, if the host offers such a feature). The recipe Cookbook:Attachtable allows the deletion of the files from the wiki.%0a%0a>>faq%3c%3c [[#faq]]%0a%0aQ: When I upload a file, how do I make the link look like "file.doc" instead of "Attach:file.doc"?%0aA: Use parentheses, as in [@[[(Attach:)file.doc]]@]. There is also a configuration change that can eliminate the [@Attach:@] -- see [[Cookbook:AttachLinks]].%0a%0aQ: Why can't I upload files of size more than 50kB to my newly installed PmWiki?%0aA: Out of the box PmWiki limits the size of files to be uploaded to 50kB. Add%0a->@@$UploadMaxSize = 1000000; # limit upload file size to 1 megabyte@@%0a->to your ''config.php'' to increase limit to 1MB (for example). See [[UploadsAdmin]] for how to further customize limits. Note that both PHP and webservers also place their own limits on the size of uploaded files.%0a%0aQ: Why does my upload exit unexpectedly with "Incomplete file received"?%0aA: You may be running out of space in a 'scratch' area, used either by PmWiki or by PHP. On *nix, check that you have sufficient free space in /tmp and /var/tmp.%0a%0aQ: How do I make it so that the upload link still allows one to make another upload (if someone wants to replace the old version of a file with a newer version, for example). Currently you only get the upload link when there is no file in the upload directory.%0aA: Use the Attach [[Site/page action(s)]], and click on the delta symbol %25blue%25(Δ)%25%25 shown against each of files listed. If you can't see the attach action either uploads are not enabled, you are not not authorised to upload, or the attach action has been commented out or is missing. See also [[PmWiki/available actions]], and look at [[Test/Test?action=upload]].%0a%0aQ: How do I hide the "[=Attach:=]" for all attachments%0aA: See Cookbook:AttachLinks, note that this does not currently work for [@ [[Attach:my file.ext]] @].%0a%0aQ: How to avoid problems with non-ASCII characters in attachment names (i.e. "Zażółć geślą jaźń.doc")?%0aA: See $UploadNameChars[@ = "-\w. !=+#";@]%25%25 # allow exclamations, equals, plus, and hash%0a%0aQ: How can I link a file that have a 4-letter file extension such like 'abc.pptx'?%0aA: See [[Cookbook:Upload Types]]%0a%0aQ: How can I prevent others from using the url's of my images on their site%0aA: See [[Cookbook:Prevent Hotlinking]] {Cookbook.PreventHotlinking$:Summary}%0a%0a +time=1244116676 Index: wikilib.d/PmWiki.BasicVariables =================================================================== --- wikilib.d/PmWiki.BasicVariables (.../pmwiki-2.2.1) (revision 2344) +++ wikilib.d/PmWiki.BasicVariables (.../pmwiki-2.2.2) (revision 2344) @@ -1,11 +1,11 @@ -version=pmwiki-2.2.0-beta68 ordered=1 urlencoded=1 -agent=Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1 +version=pmwiki-2.2.1 ordered=1 urlencoded=1 +agent=Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6; .NET CLR 2.0.50727) author=simon charset=ISO-8859-1 -csum=trail +csum=see also $EnablePostAuthorRequired host=203.97.214.12 name=PmWiki.BasicVariables -rev=72 +rev=77 targets=PmWiki.WikiGroup,Site.Search,Site.EditForm,Site.PageNotFound,SiteAdmin.AuthList,SiteAdmin.AuthUser,SiteAdmin.ApprovedUrls,PmWiki.WikiWord,PmWiki.PerGroupCustomizations,PmWiki.LocalCustomizations,PmWiki.AuthUser,PmWiki.MarkupExpressions,PmWiki.WikiFarms -text=(:Summary: core variables:)%0a%0a:$DefaultGroup:[[WikiGroup]] used by default (on startup) when no group is specified in the URL, as in "{$DefaultGroup}". %0a%0a:$DefaultName:Name of the default HomePage of each WikiGroup. Used when the group doesn't have a page with the same name as the group, as in "{$DefaultName}".%0a%0a:$DefaultPage:Startup page when PmWiki is called without a specified page, normally ''$DefaultGroup.$DefaultName''.%0a%0aNote: for $DefaultGroup, $DefaultName and $DefaultPage variables to work, they should be defined in the beginning of (farm)config.php, before any call to the function ResolvePageName(). This means, before any script from PmWiki and before any recipe that might be using this function.%0a%0a:$SiteGroup:Default group for storing configuration and utility pages such as [[Site.Search]], [[Site.EditForm]], [[Site.PageNotFound]], etc, as in "{$SiteGroup}".%0a%0a:$SiteAdminGroup:Default group for locked administrative pages such as [[SiteAdmin.AuthList]], [[SiteAdmin.AuthUser]], [[SiteAdmin.ApprovedUrls]], etc, as in "SiteAdmin".%0a%0a:$EnableWSPre:Enables a markup rule that causes lines with leading spaces to be treated as sections of preformatted text. If set to a value greater than 1, indicates the minimum number of leading spaces required for this treatment.%0a: :[@$EnableWSPre = 1; # leading spaces are preformatted text@]%0a: :[@$EnableWSPre = 0; # leading spaces are normal lines of text@]%0a: :[@$EnableWSPre = 4; # 4+ spaces are preformatted text@]%0a%0a:$EnableWikiWords:Enable [[WikiWord]] processing.%0a%0a:$LinkWikiWords:If set, then bare WikiWords in a page are automatically linked to pages of the same name. Note that this value can also be affected by the [@(:linkwikiwords:)@] and [@(:nolinkwikiwords:)@] directives.%0a: :[@$LinkWikiWords = 1; # turn on WikiWord links@]%0a: :[@$LinkWikiWords = 0; # disable WikiWord links@]%0a%0a:$SpaceWikiWords:If set, then WikiWords in pages are automatically spaced according to $AsSpacedFunction. Note that this value can also be affected by the [@(:spacewikiwords:)@] and [@(:nospacewikiwords:)@] directives.%0a: :[@$SpaceWikiWords = 1; # turn on WikiWord spacing@]%0a: :[@$SpaceWikiWords = 0; # turn off WikiWord spacing@]%0a%0a:$AsSpacedFunction:The name of the function used to convert WikiWords into normal, spaced strings. Defaults to '`AsSpaced'.%0a: :[@$AsSpacedFunction = '`MyAsSpaced';@]%0a%0a:$EnablePGCust:Allows/disables per-page and [[PerGroupCustomizations | per-group customizations]]. Can be set to zero in any [[local customization(s)]] file to prevent remaining page/group customizations from being loaded.%0a: :[@$EnablePGCust=0; # turn off per-page/group configs@]%0a%0a:$EnableLocalConfig:Allows/disables local/config.php customizations (usually for a farm's wikis). Can be set to zero in local/farmconfig.php to prevent the farm's wikis' local/config.php from being loaded.%0a: :[@$EnableLocalConfig = 0; # disable PmWiki's local/config@]%0a%0a:$GroupPattern: The regular expression pattern used for valid [[WikiGroup]] name specifications. Defaults to allowing any group name beginning with an uppercase letter, but can be set to limit the valid group names (see Cookbook:LimitWikiGroups).%0a: :[@# limit groups to Site, SiteAdmin, PmWiki, and `MyGroup@]%0a: :[@$GroupPattern = '(?:Site|SiteAdmin|PmWiki|`MyGroup)';@]%0a%0a:$NamePattern: The regular expression pattern used for valid page names. Defaults to allowing pages beginning with an uppercase letter or digit, followed by sequences of alphanumeric characters, hyphens, and underscores. %0a%0a:$WikiWordPattern: The pattern that describes a WikiWord.%0a%0a:$Author: Set to the current reader, who is potentially an author ([[PmWiki:AuthoringPhilosophy|see discussion]]), as in "{$Author}".%0a%0a:$AuthorGroup: The WikiGroup for user profiles. Defaults to 'Profiles'.%0a: :[@$AuthorGroup = 'Users';@]%0a%0a:$AuthId: For sites using [[AuthUser | user-based authorization]], tracks the "reader" or login name.%0a: :[@SessionAuth($pagename);@]%0a: :[@if( isset($AuthId) ) { // this person has been authenticated@]%0a%0a:$AuthPw: Request for documentation, meanwhile see [[http://permalink.gmane.org/gmane.comp.web.wiki.pmwiki.user/30037|here]].%0a: :[@SessionAuth($pagename);@]%0a: :[@if( isset($AuthPw) ) { // this person has entered a password@] %0a%0a:$TimeFmt: The format to use for dates and times, in [[http://php.net/strftime | strftime()]] format. The default value is [@'%25B %25d, %25Y at %25I:%25M %25p'@], which gives dates of the form "September 8, 2005 at 10:57 PM".%0a: :[@$TimeFmt = '%25B %25d, %25Y'; # dates as "September 8, 2005"@]%0a: :[@$TimeFmt = '%25Y-%25m-%25d'; # dates as "2005-09-08"@]%0a%0a:$FTimeFmt:Can be used to override the default date format used by the "ftime" function. The default $FTimeFmt is $TimeFmt. (See [[Markup Expressions]])%0a%0a:$LogoutRedirectFmt: Identifies the page to which the visitor should be sent after an [@?action=logout@]. Defaults to the current page.%0a: :[@$LogoutRedirectFmt = 'Site.Logout'; # ?action=logout target@]%0a%0a:$LogoutCookies: An array of cookie names to be removed when [@?action=logout@] is invoked.%0a%0a:$CookiePrefix: A string prefix to be prepended to cookies set from PmWiki scripts. It defaults to '', but can be set to a different value to avoid conflicts with similar-named cookies from other applications, or to allow multiple wikis from the same domain to store separate cookies.%0a: :[@$CookiePrefix = 'pmwiki_';@] # set cookie prefix to 'pmwiki_'%0a::If you have a [[WikiFarm(s)]], use the following in each field's ''config.php'' to get a unique prefix for each field in the farm, thus isolating each field's cookies.:%0a: :[@$CookiePrefix = substr($tmp = md5(__FILE__), 0, 5).'_';@]%0a%0a:$Version: A string representing the release version of PmWiki, as in "{$Version}".%0a%0a:$VersionNum: A number representing the release version of PmWiki,%0a with the major and minor release components padded with zeroes to%0a produce three digits. Thus, release "pmwiki-2.1.40" will have%0a $VersionNum set to 2001040, as in "{$VersionNum}".%0a%0a The first digit is a 2, the next three digits are the major%0a release number, and the last three digits are the minor release%0a number. Beta releases use 900-999 for the minor release number.%0a Thus:%0a--> [@%0a2.1.0 2001000%0a2.1.1 2001001%0a...%0a2.1.27 2001027%0a2.2.0-beta1 2001901%0a2.2.0-beta2 2001902%0a...%0a2.2.0-beta18 2001918%0a...%0a2.2.0 2002000%0a@]%0a%0a:$EnableRedirect:When enabled (default), causes page redirects to automatically be performed by the browser. Setting $EnableRedirect to zero causes PmWiki to pause and issue a "Redirect to ''link''" message instead. This is sometimes useful when debugging recipes to be able to see the results of actions before page redirections occur.%0a -time=1220178416 +text=(:Summary: core variables:)%0a%0a:$BaseNamePatterns:Allows population of the [@{$BaseName}@] PageVariable. The key to the hash is the pattern to be replaced and the value is the replacement string.%0a: :[@%0a# If {$FullName} is "Group.Page-Draft" then {$BaseName} is "Group.Page"%0a$BaseNamePatterns['/-Draft$/'] = '';%0a# If {$FullName} is "Comments-Group.Page" then {$BaseName} is "Group.Page"%0a$BaseNamePatterns['/^Comments-/'] = '';@]%0a%0a:$DefaultGroup:[[WikiGroup]] used by default (on startup) when no group is specified in the URL, as in "{$DefaultGroup}". %0a%0a:$DefaultName:Name of the default HomePage of each WikiGroup. Used when the group doesn't have a page with the same name as the group, as in "{$DefaultName}".%0a%0a:$DefaultPage:Startup page when PmWiki is called without a specified page, normally ''$DefaultGroup.$DefaultName''.%0a%0aNote: for $DefaultGroup, $DefaultName and $DefaultPage variables to work, they should be defined in the beginning of (farm)config.php, before any call to the function ResolvePageName(). This means, before any script from PmWiki and before any recipe that might be using this function.%0a%0a:$SiteGroup:Default group for storing configuration and utility pages such as [[Site.Search]], [[Site.EditForm]], [[Site.PageNotFound]], etc, as in "{$SiteGroup}".%0a%0a:$SiteAdminGroup:Default group for locked administrative pages such as [[SiteAdmin.AuthList]], [[SiteAdmin.AuthUser]], [[SiteAdmin.ApprovedUrls]], etc, as in "SiteAdmin".%0a%0a:$EnableWSPre:Enables a markup rule that causes lines with leading spaces to be treated as sections of preformatted text. If set to a value greater than 1, indicates the minimum number of leading spaces required for this treatment.%0a: :[@$EnableWSPre = 1; # leading spaces are preformatted text@]%0a: :[@$EnableWSPre = 0; # leading spaces are normal lines of text@]%0a: :[@$EnableWSPre = 4; # 4+ spaces are preformatted text@]%0a%0a:$EnableWikiWords:Enable [[WikiWord]] processing.%0a%0a:$LinkWikiWords:If set, then bare WikiWords in a page are automatically linked to pages of the same name. Note that this value can also be affected by the [@(:linkwikiwords:)@] and [@(:nolinkwikiwords:)@] directives.%0a: :[@$LinkWikiWords = 1; # turn on WikiWord links@]%0a: :[@$LinkWikiWords = 0; # disable WikiWord links@]%0a%0a:$SpaceWikiWords:If set, then WikiWords in pages are automatically spaced according to $AsSpacedFunction. Note that this value can also be affected by the [@(:spacewikiwords:)@] and [@(:nospacewikiwords:)@] directives.%0a: :[@$SpaceWikiWords = 1; # turn on WikiWord spacing@]%0a: :[@$SpaceWikiWords = 0; # turn off WikiWord spacing@]%0a%0a:$AsSpacedFunction:The name of the function used to convert WikiWords into normal, spaced strings. Defaults to '`AsSpaced'.%0a: :[@$AsSpacedFunction = '`MyAsSpaced';@]%0a%0a:$EnablePGCust:Allows/disables per-page and [[PerGroupCustomizations | per-group customizations]]. Can be set to zero in any [[local customization(s)]] file to prevent remaining page/group customizations from being loaded.%0a: :[@$EnablePGCust=0; # turn off per-page/group configs@]%0a%0a:$EnableLocalConfig:Allows/disables local/config.php customizations (usually for a farm's wikis). Can be set to zero in local/farmconfig.php to prevent the farm's wikis' local/config.php from being loaded.%0a: :[@$EnableLocalConfig = 0; # disable PmWiki's local/config@]%0a%0a:$GroupPattern: The regular expression pattern used for valid [[WikiGroup]] name specifications. Defaults to allowing any group name beginning with an uppercase letter, but can be set to limit the valid group names (see Cookbook:LimitWikiGroups).%0a: :[@# limit groups to Site, SiteAdmin, PmWiki, and `MyGroup@]%0a: :[@$GroupPattern = '(?:Site|SiteAdmin|PmWiki|`MyGroup)';@]%0a%0a:$NamePattern: The regular expression pattern used for valid page names. Defaults to allowing pages beginning with an uppercase letter or digit, followed by sequences of alphanumeric characters, hyphens, and underscores. %0a%0a:$WikiWordPattern: The pattern that describes a WikiWord.%0a%0a:$Author: Set to the current reader, who is potentially an author ([[PmWiki:AuthoringPhilosophy|see discussion]]), as in "{$Author}". See also $EnablePostAuthorRequired.%0a%0a:$AuthorGroup: The WikiGroup for user profiles. Defaults to 'Profiles'.%0a: :[@$AuthorGroup = 'Users';@]%0a%0a:$AuthId: For sites using [[AuthUser | user-based authorization]], tracks the "reader" or login name.%0a: :[@SessionAuth($pagename);@]%0a: :[@if( isset($AuthId) ) { // this person has been authenticated@]%0a%0a:$AuthPw: Request for documentation, meanwhile see [[http://permalink.gmane.org/gmane.comp.web.wiki.pmwiki.user/30037|here]].%0a: :[@SessionAuth($pagename);@]%0a: :[@if( isset($AuthPw) ) { // this person has entered a password@] %0a%0a:$TimeFmt: The format to use for dates and times, in [[http://php.net/strftime | strftime()]] format. The default value is [@'%25B %25d, %25Y at %25I:%25M %25p'@], which gives dates of the form "September 8, 2005 at 10:57 PM".%0a: :[@$TimeFmt = '%25B %25d, %25Y'; # dates as "September 8, 2005"@]%0a: :[@$TimeFmt = '%25Y-%25m-%25d'; # dates as "2005-09-08"@]%0a%0a:$FTimeFmt:Can be used to override the default date format used by the "ftime" function. The default $FTimeFmt is $TimeFmt. (See [[Markup Expressions]])%0a%0a:$LogoutRedirectFmt: Identifies the page to which the visitor should be sent after an [@?action=logout@]. Defaults to the current page.%0a: :[@$LogoutRedirectFmt = 'Site.Logout'; # ?action=logout target@]%0a%0a:$LogoutCookies: An array of cookie names to be removed when [@?action=logout@] is invoked.%0a%0a:$CookiePrefix: A string prefix to be prepended to cookies set from PmWiki scripts. It defaults to '', but can be set to a different value to avoid conflicts with similar-named cookies from other applications, or to allow multiple wikis from the same domain to store separate cookies.%0a: :[@$CookiePrefix = 'pmwiki_';@] # set cookie prefix to 'pmwiki_'%0a::If you have a [[WikiFarm(s)]], use the following in each field's ''config.php'' to get a unique prefix for each field in the farm, thus isolating each field's cookies.:%0a: :[@$CookiePrefix = substr($tmp = md5(__FILE__), 0, 5).'_';@]%0a%0a:$Version: A string representing the release version of PmWiki, as in "{$Version}".%0a%0a:$VersionNum: A number representing the release version of PmWiki,%0a with the major and minor release components padded with zeroes to%0a produce three digits. Thus, release "pmwiki-2.1.40" will have%0a $VersionNum set to 2001040, as in "{$VersionNum}".%0a%0a The first digit is a 2, the next three digits are the major%0a release number, and the last three digits are the minor release%0a number. Beta releases use 900-999 for the minor release number.%0a Thus:%0a--> [@%0a2.1.0 2001000%0a2.1.1 2001001%0a...%0a2.1.27 2001027%0a2.2.0-beta1 2001901%0a2.2.0-beta2 2001902%0a...%0a2.2.0-beta18 2001918%0a...%0a2.2.0 2002000%0a@]%0a%0a:$EnableRedirect:When enabled (default), causes page redirects to automatically be performed by the browser. Setting $EnableRedirect to zero causes PmWiki to pause and issue a "Redirect to ''link''" message instead. This is sometimes useful when debugging recipes to be able to see the results of actions before page redirections occur.%0a +time=1240705264