aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpetko <petko@524c5546-5005-0410-9a3e-e25e191bd360>2024-01-09 13:22:07 +0000
committerpetko <petko@524c5546-5005-0410-9a3e-e25e191bd360>2024-01-09 13:22:07 +0000
commitab403c73c928f43134455f84f67445e3559750ba (patch)
treefc980686c95659ae841b97ceed08a34e00c7564f
parentf68db81832d46be0b4930658c1197e5682dd5ef3 (diff)
downloadpmwiki.svn-ab403c73c928f43134455f84f67445e3559750ba.tar.bz2
Documentation update.
git-svn-id: svn://pmwiki.org/pmwiki/trunk@4579 524c5546-5005-0410-9a3e-e25e191bd360
-rw-r--r--wikilib.d/PmWiki.ChangeLog8
-rw-r--r--wikilib.d/PmWiki.CustomMarkup10
-rw-r--r--wikilib.d/PmWiki.Forms12
3 files changed, 15 insertions, 15 deletions
diff --git a/wikilib.d/PmWiki.ChangeLog b/wikilib.d/PmWiki.ChangeLog
index a2befdb3..4cff9fb0 100644
--- a/wikilib.d/PmWiki.ChangeLog
+++ b/wikilib.d/PmWiki.ChangeLog
@@ -1,9 +1,9 @@
version=pmwiki-2.3.29 ordered=1 urlencoded=1
author=Petko
charset=UTF-8
-csum=Add $PmFilterable. (+2)
+csum=PrintDiff() add $sincce argument. Forms enable input e_author not only for action=edit. (+91)
name=PmWiki.ChangeLog
-rev=1790
+rev=1791
targets=Cookbook.RecentChanges,PmWiki.MailingLists,PmWiki.Subversion,PITS.01497,Cookbook.DarkColorScheme,PmWiki.UploadVariables,Cookbook.PmSyntax-Talk,PmWiki.OtherVariables,PmWiki.Notify,PITS.01431,PITS.01495,PITS.01493,PmWiki.LayoutVariables,PmWiki.PagelistVariables,PITS.01494,Cookbook.FuseEdit,PmWiki.EditVariables,PmWiki.BasicVariables,PmWiki.SecurityVariables,PITS.01488,PITS.01489,Cookbook.SectionEdit,PITS.01486,PITS.01297,PITS.01485,Cookbook.EditHelp,PITS.01484,PITS.01208,PITS.01483,PITS.01480,PmWiki.PageVariables,PITS.01478,PITS.01477,Cookbook.PmSyntax,Cookbook.CustomSyntax,PITS.01418,PITS.00447,PITS.01475,PITS.00908,PITS.01095,PITS.01472,PITS.01461,PITS.01465,PITS.01454,PmWiki.Skins-Talk,Skins.SkinChange,Cookbook.ToggleNext,PmWiki.Links,PmWiki.Forms,PmWiki.TableOfContents,PITS.01448,Cookbook.RecipeCheck,PITS.01145,PmWiki.BlockMarkup,Cookbook.DeObMail,Cookbook.FixURL,Cookbook.NotSavedWarning,Cookbook.AutoTOC,Cookbook.DeltaBytesRecentChanges,Cookbook.RowspanInSimpleTables,Cookbook.LocalCSS,PmWiki.LinkVariables,Cookbook.PreviewChanges,PmWiki.MarkupExpressions,PmWiki.DebugVariables,PITS.01425,PITS.01422,PITS.01300,SiteAdmin.AuthList,PITS.01408,PITS.01404,Skins.2016,PITS.01406,PITS.01407,PITS.01400,PmWiki.PathVariables,Cookbook.HtmlUrls-Talk,PITS.01401,PITS.01390,PITS.01392,PITS.00638,PITS.01388,PITS.00951,Site.UploadQuickReference,PITS.00197,PITS.00435,PITS.01378,PITS.01379,PITS.01140,PITS.01373,PmWiki.TextFormattingRules-Talk,PITS.01087,PITS.00835,PITS.01110,PITS.01367,PITS.01032,PITS.00489,PITS.00497,PmWiki.Functions,PITS.01363,PITS.01360,PITS.01359,Site.EditQuickReference,PITS.01350,PmWiki.WikiStyles,PITS.00860,PITS.01337,PITS.01112,PmWiki.PageListTemplates,PITS.01345,PITS.01346,PmWiki.LinkSchemes,PITS.01278,PmWiki.PageDirectives,PITS.01319,PITS.01007,PITS.01259,PITS.01308,PITS.01304,PITS.00978,PITS.01292,PITS.01285,PITS.01282,PITS.01275,PITS.01271,PITS.01266,PmWiki.I18nVariables,PITS.01262,PITS.01260,PITS.01263,PITS.01253,PITS.01255,PITS.01242,PITS.01213,PITS.01212,PITS.01188,PITS.01180,PITS.01201,PITS.01217,PITS.01198,PITS.01190,PITS.01192,PITS.01199,PITS.01191,PITS.01132,PITS.01202,PITS.01197,PITS.01184,PITS.01164,PITS.01121,PITS.01127,PITS.01152,PITS.00657,PITS.01157,PITS.00571,PITS.01106,PITS.00796,PITS.00535,PITS.01098,PITS.00266,PITS.00779,PITS.01155,PITS.01156,PITS.01149,PITS.01150,PITS.01141,PmWiki.CustomMarkup,PITS.01125,PITS.00703,PITS.00088,PITS.00976,PITS.01146,PITS.00813,PITS.01126,PITS.01131,PITS.01071,PITS.00802,PITS.01102,PITS.00238,PITS.01114,PITS.01062,PITS.01103,PITS.01104,PITS.00915,PITS.01099,PITS.00396,PITS.01037,PITS.00836,PITS.00998,PITS.01073,PITS.00980,Cookbook.UTF-8,PmWiki.ReleaseNotes,PITS.00407,PITS.00919,PITS.01081,PITS.01066,PITS.00984,PmWiki.ChangeLogArchive
-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 (/) mailing lists]] to discuss feature development with us.%0a%0a(:Prerelease:Changes made to the [[PmWiki:Subversion | subversion pre-release]] of PmWiki. You can get \%0a[[https://www.pmwiki.org/pub/pmwiki-devel/pmwiki-latest-svn.zip|a full ZIP archive]] of the nightly version, or \%0a[[https://www.pmwiki.org/pub/pmwiki-devel/pmwiki-nightly.zip|a partial export]] with only the files changed since {$Version}.:)\%0a{$:Prerelease}%0a%0a* Add prototype for dark theme toggle (experimental). See PITS:01497 and Cookbook:DarkColorScheme.%0a* $EnableUploadMimeMatch with Fileinfo not enabled to deny uploads.%0a* upload.php fix warning for PHP 8.%0a* RecipeCheck use https, suggested by Simon. %0a* Add $PmFilterable.%0a[[#svn-revision-4574]]%0a* Update documentation.%0a%0a!!! Version 2.3.29 (2023-12-18) [[#v2329]]%0a* Fix urlapprove.php for PHP 8.2. %0a* PmSyntax textarea remove styles for width, height (Cookbook:PmSyntax-Talk), allow for fractional dimensions of the highlighted area.%0a* $MarkupDirectiveFunctions allow dashes in attribute names.%0a* Update documentation.%0a%0a!!! Version 2.3.28 (2023-11-27) [[#v2328]]%0a* Add input ''month'' and ''color'' fields.%0a* Add $NotifyRelatedTrailFmt.%0a* Reverse simpletable row backgrounds when there is a thead element.%0a* Fix pmwiki-utils.js when window.localStorage is disabled.%0a* UrlApprovals allow https: URLs if the http: URL for the same domain has been approved (PITS:01431).%0a* Update documentation.%0a%0a!!! Version 2.3.27 (2023-10-23) [[#v2327]]%0a* When merging last edit, if there is no change summary, reuse the last one. %0a* Keep unknown date/time formats for undefined timezone (PITS:01495).%0a* DiffRenderSource() fix for PHP 8, keep ins/del tags on the same line.%0a* The ".diffmarkup" element now has the style "white-space: pre-wrap".%0a* Add new keyword shortcuts Ctrl+B (bold), Ctrl+I (italic), Ctrl+K (link/unlink).%0a* Update documentation.%0a%0a%0a!!! Version 2.3.26 (2023-09-28) [[#v2326]]%0a* Add configurable $InputLabelFmt snippet (PITS:01493).%0a* Add configurable $TrailFmt snippets.%0a* Add $EnableSearchAtLeastOneTerm, default disabled.%0a* Unset upload extensions if size for the extension is set to 0.%0a* Update feeds.php for PHP 8.2 (PITS:01494).%0a* Update documentation.%0a%0a%0a!!! Version 2.3.25 (2023-07-29) [[#v2325]]%0a* Updates for PHP 8.2.%0a* Fix pagelist when 2+ directives on the same line, reported by Simon.%0a* Fix possible bug with internal group(header|footer) directives caused by PRR().%0a* Update documentation.%0a%0a%0a!!! Version 2.3.24 (2023-06-06) [[#v2324]]%0a* Add $EnableUploadMimeMatch.%0a* Add $EnableMergeLastMinorEdit, edit functions MergeLastMinorEdit (based on Cookbook:FuseEdit), SaveChangeSummary (refactored out of HandleEdit).%0a* Fix LogoutCookies() doesn't use a $pagename argument.%0a* PmForm add condition 'validemail' for use in template require.%0a* Add $PmCryptAlgo, pmcrypt() to call password_verify() if it exists. %0a* Refactor HandleDownload() split ServeDownload($filepath, $upname).%0a* Add InsertEditFunction($newfn, $where='%3cPostPage').%0a* Add $AuthFormRespCode.%0a* Add $EnableDownloadRanges, default 1.%0a* When the token is expired, reopen edit form rather than abort.%0a* LocalTimes add $EnableRCListLastEdit.%0a* Update documentation.%0a%0a!!! Version 2.3.23 (2023-05-03) [[#v2323]]%0a* Refactor pmtoken() to use session tokens, enable for core actions.%0a* Add %25pmhlt%25[@(:input pmtoken:)@] helper.%0a* PmForm add $PmFormEnablePmToken.%0a* Refactor @@HandleLogoutA()@@ split @@LogoutCookies()@@. %0a* Fix PRCB() for PHP %3c 7.4.%0a* Update documentation.%0a%0a!!! Version 2.3.22 (2023-04-06) [[#v2322]]%0a* Add scripts/pmform.php, Site.PmFormTemplates.%0a* FmtDateTimeZ() can now accept Unix timestamps.%0a* Pagelists fix bug with multiple category=+A,+B entries.%0a* Update for PHP 8.1 (PITS:01488).%0a* MarkupDirectiveFunctions will now cast numeric arguments to floats.%0a* Prevent errors in custom PageVariables from generating internal server errors (PITS:01489).%0a* Improve inline diff for rare cases (end of page).%0a* Forms/buttons with @@data-pmconfirm="Question"@@ will ask the question before they are submitted.%0a* Update documentation.%0a%0a%0a!!! Version 2.3.21 (2023-03-06) [[#v2321]]%0a* Add $IsPmArchive, $PmArchiveDir.%0a* Sortable tables with %3ctime datetime=""> elements can be sorted by the datetime attribute. Fix for tables with preexisting %3cthead> element.%0a* Updates for PHP8.%0a* Add CSV upload extension.%0a* LocalTimes add mode=3 to show old dates as MM'YY.%0a* Fix bug with multiline $MarkupDirectiveFunctions, reported by Antti Tikanm&auml;ki.%0a* Add $EnableCopyCode and Copy code button to %3cpre> blocks, suggested by Alex Dor&eacute;.%0a* Update PmTOC to work better with Cookbook:SectionEdit.%0a* Update documentation.%0a%0a!!! Version 2.3.20 (2023-02-12) [[#v2320]]%0a* Fix undefined variable warning, reported by Gregor Klari&ccaron;.%0a%0a!!! Version 2.3.19 (2023-02-11) [[#v2319]]%0a* Only set cookie params if headers not sent. %0a* Update for PHP8.2, reported by Dfaure. PageVar() update for PHP 8.%0a* Add variable $DiffPrepareInlineFunction.%0a* PageListCache() remove unused global $PageIndexFile.%0a* Add configurable $LocalCSSDir, $LocalCSSDirUrl.%0a* DownloadUrl() add $FmtV['$LinkDownload'] with current or future download link.%0a* Add pm_recode() helper function (based on PageStore::recodefn), check for more transcode options.%0a* HandleBrowse() add $FmtV['$PageSourceText'].%0a* Add helper function KeepBlock().%0a* Add $FarmPubDirPrefix, pm_servefile(), $ServeFileExts.%0a* Update documentation.%0a%0a!!! Version 2.3.18 (2023-01-15) [[#v2318]]%0a* Refactor scripts/utils.php, add pm_json_encode() (PITS:01486).%0a* EditAutoText() fix for lines ending with multiple backslashes.%0a* PmSyntax optimize/refactor for large pages (cont.), fix inline escaped texts could ignore line markups, add EnableStopwatch.%0a* Notify fix typo in regular expression.%0a* Add $EnableUploadVersions >=10 to rename base.ext to base-1.ext, base-2.ext,...%0a* CondAuth() fix bug with global $AuthList.%0a* Add helper function PRCB() for simpler preg_replace_callback passing variables.%0a* Update scripts/refcount.php for PHP 8, reported by George Murray.%0a* Add PageVariable $PageLogoUrl (PITS:01297).%0a* Update documentation.%0a%0a!!! Version 2.3.17 (2022-12-17) [[#v2317]]%0a* WikiStyles trim class names (PITS:01485).%0a* GUIEditButtons refactor to enable Undo in textarea; allow for custom functions to configure mopen, mclose, and unselect for their buttons.%0a* [[Cookbook:EditHelp|EditHelp]] refactor to allow undo; add shortcuts Ctrl+L convert selection to lowercase, Ctrl+Shift+L to uppercase, Ctrl+Shift+ArrowUp and ArrowDown to swap lines.%0a* Skip upgrade check if $EnableReadOnly.%0a* Fix bug with multiple $MarkupDirectiveFunctions.%0a* Add $EnableBaseNameConfig.%0a* PmSyntax optimize for larger pages (cont.).%0a* Input password add class "inputbox" like the other fields.%0a* CondAuth() added way to check for usergroup permissions.%0a* Update in pagelist.php for PHP 8.%0a* Documentation update.%0a%0a!!! Version 2.3.16 (2022-11-28) [[#v2316]]%0a* Class PPRC add generic callbacks.%0a* IncludeText() update for PHP 8, reported by V.Krishn.%0a* WikiStyle add 'overflow', 'notoc'.%0a* Add PmNonce().%0a* PmTOC update indented link style->classname. %0a* Responsive skin: replace %25pmhlt%25[@[[%3c%3c]]@] with %25hlt html%25[@%3cbr class='clearboth' />@], update PmTOC styles.%0a* $EnableListIncludedPages use class name instead of style. %0a* guiedit.js remove unneeded style.%0a* PmSyntax realign font for nested programming languages in the edit form, optimize for large pages.%0a* Only call session_status() if function exists.%0a* Edit form remove unsafe-inline script.%0a* Revert WikiStyleToClassName(), PrePrintFmt() -- need more work (PITS:01484).%0a* Documentation update.%0a%0a!!! Version 2.3.15 (2022-11-21) [[#v2315]]%0a* CSS pre, code relative/scalable font-size (pmwiki-responsive skin).%0a* PmSyntax add variable --pmsyntax-fontsize-editform and split from --pmsyntax-fontsize [[https://www.pmichaud.com/pipermail/pmwiki-users/2022-November/064936.html|#]].%0a* PmSyntax fix [@[[Highlight]]@] label font size and family (reported by Hans).%0a* Add variable $CookieSameSite default to 'Lax'%0a* Add argument $samesite to pmsetcookie(), default to $CookieSameSite, refactor for old and new PHP versions. %0a* Add function pm_session_start() respecting local configuration.%0a* CSP header add base-uri=self; object-src 'none'.%0a* Add $HTTPHeaders['XSSP'] = 'X-XSS-Protection: 1; mode=block'.%0a* Rewrite GUIButtons logic to avoid unsafe-inline JavaScript.%0a* Refactor WikiStyles, replace inline styles with class names to avoid unsafe-inline CSS.%0a* Refactor PQA(), tables, cells, to replace inline style="..." with class names to avoid unsafe-inline CSS.%0a* Add PrePrintFmt(), refactor PrintFmt(), PrintSkin() to process wiki pages, skin parts, and skin functions to HTML before outputting headers.%0a* Fix XSS vulnerability.%0a* Documentation update.%0a%0a!!! Version 2.3.14 (2022-11-03) [[#v2314]]%0a* Searchbox also escape custom field names.%0a* Prevent double-encoded entities in searchbox (reported by Simon).%0a* Trim $Author (PITS:01208).%0a* Replace autofocus inline JavaScript with attributes.%0a* Edit form: the label next to the "Minor edit" checkbox now toggles the checkbox.%0a* PmSyntax recognize %25pmhlt%25[@(:template requires? ...:)@].%0a* Update for PHP 8. %0a* Obsolete PCCF() from PHP 7.2 not 8.0.%0a* Add array $ObsoleteMarkups, function TraceMarkup(), update Markup(), Markup_e() and ObsoleteMarkup(), to retrieve and show files and line numbers for obsolete/disabled markup rules.%0a* Fix bug with PSFT format %25L.%0a* Update documentation.%0a%0a!!! Version 2.3.13 (2022-10-07) [[#v2313]]%0a* Close potential XSS vulnerability, reported by lukystreik (PITS:01483).%0a* Refactor $MultiFactorAuthFunction, add $FailedLoginsFunction.%0a* Update documentation.%0a%0a!!! Version 2.3.12 (2022-09-25) [[#v2312]]%0a* Stripmagic() cast null to "" and other fixes for PHP 8.%0a* Fix parse error for complex conditionals with empty variables (PITS:01480).%0a* PSFT() and MarkupExpression [@ftime@] add %25L as human readable local timestamp. %0a* MarkupRestore() fix wrong cast to empty string of false-ish values.%0a* PrintAuthForm() split from PmWikiAuth(). %0a* Fix warning for unneeded session_regenerate_id() (reported by George Murray).%0a* Update documentation.%0a%0a!!! Version 2.3.11 (2022-08-30) [[#v2311]]%0a* Add [[PageVariables]] %25pmhlt%25 [@{$GroupHomePage}@], [@{$GroupHomePageName}@], [@{$GroupHomePageTitle}@], [@{$GroupHomePageTitlespaced}@].%0a* Add $MarkupDirectiveFunctions.%0a* Fix stripmagic() for arrays recently broke after PHP8 update.%0a* Update documentation.%0a%0a!!! Version 2.3.10 (2022-08-20) [[#v2310]]%0a* Update for PHP 8.1 (reported by Armin Bühler).%0a* Forms will now prefill wildcard variables from $DefaultUnsetPageTextVars or $DefaultEmptyPageTextVars.%0a* $EnablePmSyntax = 3; will enable syntax highlighting in the edit form by default, without the user clicking on "Highlight". Fix occasional text mis-alignment between the text area and the highlighted block.%0a* Update documentation.%0a%0a!!! Version 2.3.9 (2022-08-18) [[#v239]]%0a* Add non-wildcard $DefaultUnsetPageTextVars to %25pmhlt%25[@(:input default:)@] (reported by Johnny).%0a* PmSyntax handles new selectors pre.pmhlt, code.pmhlt.%0a* Update for PHP 8 (PITS:01478).%0a* Update documentation.%0a%0a%0a!!! Version 2.3.8 (2022-07-22) [[#v238]]%0a* PmSyntax fix for 2 different %25pmhlt%25 [@%25hlt%25@] on the same line (reported by Simon).%0a* Fix broken include when the first page doesn't exist.%0a* Update documentation.%0a%0a!!! Version 2.3.7 (2022-06-28) [[#v237]]%0a* $HTTPHeaders add X-Frame-Options (suggested by Imagine Dragon) and Content-Security-Policy to disallow embedding in external websites by default.%0a* $EnableHighlight will now remember any links to PmWiki variables and restore them after the highlighting, see [[thread->https://www.pmwiki.org/pipermail/pmwiki-users/2022-June/064887.html]].%0a* $EnablePmSyntax will now process %25pmhlt%25[@%25hlt pmwiki%25@] in addition to [@%25pmhlt%25@] blocks, and escaped markup after it will be tentatively highlighted.%0a* Update documentation.%0a%0a!!! Version 2.3.6 (2022-06-19) [[#v236]]%0a* Fixes for PHP 8.%0a* Add form attribute "lang".%0a* Sortable tables allow for table headers to have markup such as bold (except links). It will now use a case-insensitive natural ordering.%0a* Allow for $UploadVerifyFunction to modify $upname.%0a* Add variable $PageIndexTermsFunction.%0a* Searchbox allow for removal of submit button if [@label=""@]; add default [@placeholder="$[Search]"@].%0a* Fix author.php may be included before some variables are defined, reported by Said Achmiz.%0a* $EnableHighlight convert code blocks to plain text, see [[thread->https://www.pmwiki.org/pipermail/pmwiki-users/2022-June/064887.html]].%0a* Documentation update.%0a%0a%0a!!! Version 2.3.5 (2022-05-23) [[#v235]]%0a* Fix broken list=grouphomes (PITS:01477).%0a* Add DisableSkinParts() helper function for recipes.%0a* HandlePostUpload: add @@$FmtV["$filepath"]@@ and @@$FmtV["$upurl"]@@ with the file path and direct URL to the newly uploaded file.%0a* In pmwiki-utils.js, replace forgotten ''let'' with ''var'' (suggested by SteP).%0a* Update for PHP 8.1.%0a* Update documentation.%0a%0a!!! Version 2.3.4 (2022-04-22) [[#v234]]%0a* Fixes for PHP 8 warnings, reported by Siegfried Seibert.%0a* Update documentation.%0a%0a!!! Version 2.3.3 (2022-03-26) [[#v233]]%0a* Fix for PHP 8 warnings, reported by Jean-Patrick Charrey, Dominique Faure and Siegfried Seibert.%0a* Update README.txt and docs/ files, suggested by Simon Davis.%0a* Update documentation.%0a%0a!!! Version 2.3.2 (2022-02-09) [[#v232]]%0a* Allow for $EnableLocalTimes to define custom duration of the pulled page history.%0a* Rename variable $EnableIncludedPages to $EnableListIncludedPages (avoid ambiguity).%0a* Remove $LinkAlt when an embedded picture without an alternative text fails to load.%0a* PmSyntax:%0a** Allow for line breaks \\ inside headings, tables, list items (like the core).%0a** Parallel processing of multiple blocks.%0a* Add scripts/utils.php; move loading of pmwiki-utils.js and PmSyntax to scripts/utils.js.%0a** Add $EnablePmUtils, default enabled.%0a** Parallel processing of the pmwiki-utils.js utility functions.%0a** Move pmwiki-utils.js move to $HTMLHeaderFmt (often prevents page redraw with the TOC/PmToggle/LocalTimes).%0a* Fix bug causing invalid page name when the name is "Group.0".%0a* Fix PHP 8.1.2 warnings, reported by J&uuml;rgen Godau and Dominique Faure.%0a* LocaltTimes fix "rcnew" classes for wikis with the older format.%0a* Update documentation.%0a%0a!!! Version 2.3.1 (2022-01-15) [[#v231]]%0a%0a* Fix the release script which broke the $VersionNum variable and the [@[[#anchor]]@] markup with the PmWiki-responsive skin.%0a%0a!!! Version 2.3.0 (2022-01-15) [[#v230]]%0a* Add PmSyntax, $EnablePmSyntax, $CustomSyntax, [@{$EnabledIMap}@], see Cookbook:PmSyntax, Cookbook:CustomSyntax.%0a* [@(:markup:)@] can now have @@class=norender@@ to only show the source code without processing it.%0a* Updates for PHP 8.1, hide warnings, add PSFT() replacement for strftime() and 2 callbacks, $EnableFTimeNew, update core function calls, add [@%25o@] for the ordinal suffix of the date (PITS:01418).%0a* Notify: @@tz=@@ (timezone) per-user.%0a* PageList add category= argument (PITS:00447, PITS:01475); link= and category= now accept multiple pages, wildcards, and negations (PITS:00908).%0a* [=[[!Category]]=] links can have alternative text (PITS:01095).%0a* Simplify/optimize pmwiki-utils.js when using datasets, simplify sorting of table rows without cloning, add LocalTimes().%0a* Page history diff anchors to also have "id=" attributes in addition to "name=".%0a* Add $EnableLocalTimes (default disabled) and styles, add HandleDiffList().%0a* Add markup %25pmhlt%25[@@2022-01-09T08:35:00Z@]%25%25 output as %3ctime>; localized if $EnableLocalTimes.%0a** Add $CurrentLocalTime in the above format, used by default in $RecentChangesFmt.%0a* Add $EnableRecentUploads (only Site.AllRecentChanges, only if $RecentUploadsFmt not defined).%0a* PmTOC update CSS for properly indented subheadings.%0a* Edit form $EnableIncludedPages, add placeholders to e_changesummary and e_author. Enable $EnableNotSavedWarning, add to sample-config.php. EditHelp to behave more like a word processor, typing "Enter" twice without writing text removes the preceding bullet.%0a* Responsive skin details>summary:hover {color:navy, cursor: pointer;}.%0a* PrintDiff() add classes for the delay between edits: diffday, diffweek, diffmonth, diffyear.%0a* Add helper function @@DownloadUrl($pagename, $path)@@ moved from @@LinkUpload()@@.%0a* Add [=$[ULby]=] i18n string 'uploaded by'.%0a* Update documentation.%0a%0a%0a!!! Version 2.2.145 (2021-12-11) [[#v22145]]%0a* Hide undefined variable notices for PHP8. %0a* Pagelist searches with wrong $SearchPatterns (list=abc argument) will now use $SearchPatterns["default"] rather than an empty array (effectively all pages). This is to allow admins to limit search locations.%0a* Obsolete markups: change &#9888; emoji for entity [=&#9888;=] (emoji doesn't work in non-UTF8 wikis).%0a* Update documentation.%0a%0a!!! Version 2.2.144 (2021-11-06) [[#v22144]]%0a* Fix CmpPageAttr() for PHP 8 (suggested by Chris Caputo).%0a* Optimize conditional "exists" if called many times, like from a pagelist.%0a* Allow for CondExists(), MatchPageNames(), and MatchNames() to be called with a $caseinsensitive argument set to ''false'' (default case insensitive is ''true'' like before).%0a* Update intermap.txt for Meatball wiki (PITS:01472).%0a* Update documentation.%0a%0a!!! Version 2.2.143 (2021-10-02) [[#v22143]]%0a* Prevent PHP from crashing with older markups and patterns.%0a* Add ObsoleteMarkup(). Obsolete markup rules are now disabled and will appear framed with a "warning" icon.%0a* Update documentation.%0a%0a!!! Version 2.2.142 (2021-08-31) [[#v22142]]%0a* Mute some PHP notices.%0a* Add form attributes autofocus, accept.%0a* Update documentation.%0a%0a!!! Version 2.2.141 (2021-07-09) [[#v22141]]%0a* Add $MultiFactorAuthFunction.%0a* Add $PageIndexFoldFunction.%0a* Update documentation%0a%0a!!! Version 2.2.140 (2021-06-26) [[#v22140]]%0a* Fix warnings for undefined variables in PHP 8 (PITS:01461).%0a* Update pub/drt-utils.js to use the new API function call for Highlight.js, the old one having been deprecated. This change requires Highlight.js version 10.7.0 or newer (currently 11.0.0).%0a* Update documentation.%0a%0a!!! Version 2.2.139 (2021-05-05) [[#v22139]]%0a* Remove empty title attributes, reported by Martin Cuno.%0a* Hide warning in pagelist.php for PHP 8, reported by Dominique Faure.%0a* Hide warning in wikiwords.php for PHP 8, reported by Jue (PITS:01461).%0a* Update documentation.%0a%0a!!! Version 2.2.138 (2021-03-02) [[#v22138]]%0a* Fix details summary incorrectly escaped HTML, reported by Jack Applin (PITS:01465).%0a* Update documentation.%0a%0a!!! Version 2.2.137 (2021-02-26) [[#v22137]]%0a* Fix bug with twice encoded entities in PQA() quoted arguments.%0a%0a!!! Version 2.2.136 (2021-02-26) [[#v22136]]%0a* Fix XSS vulnerability for WikiStyles reported today by Igor Sak-Sakovskiy.%0a* The PQA() function accepts a second argument $keep default true.%0a%0a!!! Version 2.2.135 (2021-01-31) [[#v22135]]%0a* Fix a number of PHP8 compatibility issues. Report others at PITS:01461.%0a* Add pmtoken(), AutoCheckToken() currently transparent.%0a* Blocklists: disabled a defunct one.%0a* PmTOC: rewrite handling of section editing links.%0a* Update documentation.%0a%0a%0a!!! Version 2.2.134 (2020-11-30) [[#v22134]]%0a* Update documentation.%0a%0a!!! Version 2.2.133 (2020-10-25) [[#v22133]]%0a* Escape unintended variable evaluation in link tooltip titles, reported by Finar.%0a* Responsive skin css: remove ul/ol forced padding (clips numbered list markers in long lists, reported by Colin Cody; complex to override cross-browser).%0a* Add image extensions WEBP and APNG (PITS:01454) and upload extensions.%0a* Fix potential vulnerability to CWE-384: Session Fixation, reported by Dominique Faure. Add $EnableAuthPostRegenerateSID default enabled.%0a* RecipeCheck - only inject CSS when the action is called.%0a* Update documentation.%0a%0a!!! Version 2.2.132 (2020-09-30) [[#v22132]]%0a* Update documentation.%0a%0a!!! Version 2.2.131 (2020-08-30) [[#v22131]]%0a* Update documentation.%0a%0a!!! Version 2.2.130 (2020-07-04) [[#v22130]]%0a* Update documentation.%0a%0a!!! Version 2.2.129 (2020-05-21) [[#v22129]]%0a* Mute some PHP notices.%0a* Copy "simpletable" styles from the "pmwiki-responsive" skin into the old "pmwiki" skin.%0a* Update documentation.%0a%0a!!! Version 2.2.128 (2020-04-26) [[#v22128]]%0a* Strip some trailing spaces and convert some tabs to spaces.%0a* Add comments next to preg_replace() and create_function() where old addons may cause PHP deprecation notices.%0a* Mute some PHP notices.%0a* Print the invalid pagename in the error message.%0a* Update documentation.%0a%0a!!! Version 2.2.127 (2020-03-23) [[#v22127]]%0a* Mute some PHP "undefined variable" notices.%0a* Responsive skin set #wikiedit textarea max-height: 60vh (after discussion+tests at PmWiki:Skins-Talk). %0a* Prefix PmTOC classes "pmtoc-show" and "pmtoc-hide" to avoid processing by other frameworks (reported by Finar).%0a* Add Skins:SkinChange to the core, enabled by either of the variables $EnableAutoSkinList and/or $PageSkinList.%0a* Add FileSizeCompact() and DiffTimeCompact() (can be used by recipes).%0a* Add $FmtV["$upresult"] can be intercepted by recipes.%0a* Update documentation.%0a%0a!!! Version 2.2.126 (2020-02-01) [[#v22126]]%0a* Mute some "Undefined" notices. %0a* Fix caches.php to write an updated .htaccess format.%0a* Fix bug with $PmTOC['MinNumber'] = -1 reported by SteP.%0a* Update documentation.%0a%0a%0a!!! Version 2.2.124, 2.2.125 (2020-01-27) [[#v22124]] [[#v22125]]%0a* Hide .PmTOCdiv if empty.%0a* Add $SetCookieFunction.%0a* Add $ToggleNextSelector, see Cookbook:ToggleNext.%0a* Update documentation.%0a%0a%0a!!! Version 2.2.123 (2019-12-31) [[#v22123]]%0a* Allow for [[Links#escaped | escaped [@[=link address=]@]]] to have any special characters, including quotes, parentheses and pipes.%0a* Fix PmXMail when the link contains a quote, and to work from headers, footers and sidebars.%0a* Add [[forms|form]] attribute "formnovalidate" (suggested by Robert Riebisch).%0a* Allow [[table of contents]] to work better with Cookbook:SectionEdit (reported by Johan Bengtsson).%0a* Mute a number of PHP notices for undefined variables. %0a* Add that "URL" means in browser in sample-config.php (PITS:01448). %0a* Add Cookbook:RecipeCheck in diag.php.%0a* Refactor functions that handle $EnableRCDiffBytes to show the deltas in the page histories.%0a* Remove $EnableRelativePageVars from sample-config.php (confusing, PITS:01145).%0a* Add upload extensions [[https://developers.google.com/speed/webp | @@webp@@ ]] image format and [[https://www.opus-codec.org/ | @@opus@@]] audio codec.%0a* Update documentation.%0a%0a!!! Version 2.2.122 (2019-11-19) [[#v22122]]%0aVersion 2.2.121 was released by mistake and contained some experimental code that was meant to be tested first.%0a* ObfuscateLinkIMap: Fix bug with special or international characters in custom subject fields, reported by FidelioEspoir.%0a* Add $DefaultUnsetPageTextVars, $DefaultEmptyPageTextVars.%0a* Mute "Uninitialized string offset messages" for error_reporting(E_ALL), reported by DFaure.%0a* Fix PmTOC, when NumberedHeadings is enabled, to number headings even when the TOC would not be created.%0a* Add [@{$$EachCount}@] pagelist template pseudovariable, containing the count for the current "each" loop.%0a* Add $InputAttrs @@role@@ and @@aria-*@@ form attributes, allow aria-\\w* attributes for the [@(:searchbox:)@] field.%0a* Update documentation.%0a%0a!!! Version 2.2.120 (2019-10-13) [[#v22120]]%0a* Add @@(:[[forms#datalist|input datalist]]:)@@ form element.%0a* Add [@(:details summary="...":)...(:detailsend:)@] [[block markup]].%0a* Fix bugs with guiedit.php/guiedit.js reported by FidelioEspoir.%0a* PmTOC: add max-height and overflow-auto to the block.%0a* Update documentation.%0a%0a!!! Version 2.2.119 (2019-10-03) [[#v22119]]%0a* Update for PHP 7.4 "string offset with curly braces is deprecated".%0a* Add @@required="required"@@ attributes to input author/uploader fields when $EnableUploadAuthorRequired or $EnablePostAuthorRequired are set.%0a* Add @@required="required"@@ attributes to the "upload file" element (to prevent posting the form without an attached file).%0a* Add ObfuscateLinkIMap() based on Cookbook:DeObMail, default disabled.%0a* GuiEdit: Add FixUrl button based on Cookbook:FixURL default disabled, add $EnableGuiEditFixUrl;%0a* EditForm: Add features from Cookbook:NotSavedWarning, default disabled, add $EnableNotSavedWarning.%0a* EditForm: Add scroll position to edit text area will be remembered on save-and-edit and preview.%0a* EditForm: Add $EnableEditAutoText and features from Cookbook:EditHelp. %0a* Add $PmTOC, [@(:toc:)@], [@(:notoc:)@], based on a simplified variant of Cookbook:AutoTOC.%0a* Fix bug with pagelist while preview, reported by Finar.%0a* Add $EnableSortable, basic sortable tables based on public domain code from [[https://github.com/tofsjonas/sortable|Jonas Earendel]].%0a* Add $EnableRCDiffBytes based on Cookbook:DeltaBytesRecentChanges. %0a* Add $EnableSimpleTableRowspan replicating features of Cookbook:RowspanInSimpleTables.%0a* Add $WikiPageCSSFmt enables CSS in a wiki page, based on Cookbook:LocalCSS.%0a* Add $EnableHighlight code highlight feature compatible with "highlight.js".%0a* Attachlist @@ext=@@ and @@names=@@ arguments now accept patterns and negatives like @@ext=jpg,png@@, @@ext=-pdf@@, or @@names=-th*---*.jpg@@.%0a* Attachlist: allow both ext= and names= to cohabitate.%0a* MarkupExpr: remove unused declaration.%0a* EditAutoText: use event.ctrlKey and event.shiftKey instead of 2 functions.%0a* Redirect: add 3rd argument $redirecturl which can be provided directly%0a* Add $AddLinkCSS['othergroup'] and $AddLinkCSS['samedomain'] can contain link CSS classes.%0a* Update documentation.%0a%0a!!! Version 2.2.118 (2019-08-28) [[#v22118]]%0a* Add $EnablePreviewChanges and PreviewDiff() based on Cookbook:PreviewChanges.%0a* Update documentation.%0a%0a!!! Version 2.2.117 (2019-07-28) [[#v22117]]%0a* Add $EnableUploadAuthorRequired default to $EnablePostAuthorRequired, add Author field in upload form.%0a* Implement partial content indirect downloads (suggested by Christopher Cox, required for embedded video on iOS).%0a* Add allowed upload video extensions 'm4v' and '3gp'.%0a* Fix lowercase "Content-Disposition" header for downloads.%0a* Update documentation.%0a%0a!!! Version 2.2.116 (2019-06-19) [[#v22116]]%0a* Add $PageListVarFoldFn, defaults to $StrFoldFunction, for international case-insensitive matches of page (text) variables.%0a* Update documentation.%0a%0a!!! Version 2.2.115 (2019-05-13) [[#v22115]]%0a* Responsive skin: Simplify CSS for custom backgrounds, remove repetition.%0a* Update documentation.%0a%0a!!! Version 2.2.114 (2019-04-02) [[#v22114]]%0a* Fix bug with input select lists where an already defined id= attribute may get overwritten.%0a* Vardoc: Move the id= attribute from a standalone anchor to the definition term element (allows ":target" styling).%0a* Vardoc: Localize table header and link text (suggested by Michael F. Wolff).%0a* Add $SkinTemplateIncludeLevel, IncludeTemplate skin directive.%0a* Add input "tel" type, and attribute "pattern". Fix classnames of new input types.%0a* Update documentation.%0a%0a!!! Version 2.2.113 (2019-03-01) [[#v22113]]%0a* Add input button element.%0a* Add $EnableInputDataAttr.%0a* Update documentation.%0a%0a!!! Version 2.2.112 (2019-01-09) [[#v22112]]%0a* Fix switch break for PHP 7.3, reported by Hans-Jürgen Godau.%0a* Update documentation.%0a%0a!!! Version 2.2.111 (2018-12-08) [[#v22111]]%0a* Add @@$[==]Id$@@ subversion keyword to pmwiki.php, requested by Peter Gragert.%0a* Fix responsive skin search form max-width in desktop mode, reported by Moni Kellermann. %0a* Add $DenyHtaccessContent variable. Update protective .htaccess files.%0a* Add tz= and locale= arguments to [@{(ftime )}@] [[MarkupExpression(s)]] (PHP5+).%0a* Update documentation.%0a%0a!!! Version 2.2.110 (2018-11-05) [[#v22110]]%0a* Fix [@{(substr )}@] markup expression with non-number arguments could cause warnings, reported by Simon.%0a* Add $PageListSortCmpFunction, default to current 'strcasecmp'.%0a* Add global $MarkupMarkupLevel which changes when the processing is inside [@(:markup:)@] blocks.%0a* Fix inconsistent white space with inline @@[=[@escaped code@]=]@@, reported by Dannybpng.%0a* Update documentation.%0a%0a!!! Version 2.2.109 (2018-07-09) [[#v22109]]%0a* Update pmcrypt() to exclude negative -@groups from hash checking.%0a* Add $EnableMarkupDiag to backtrace all markup calls, suggested by ChuckG.%0a* Fix Path InterMap broken in 2.2.108, reported by ChuckG.%0a* Update documentation.%0a%0a!!! Version 2.2.108 (2018-07-05) [[#v22108]]%0a* Add $PCCFOverrideFunction.%0a* $AuthUserPageFmt can now be an array of page names.%0a* Add $PageCacheFileFmt default to "%25s/%25s,cache" (like before), allowing custom cache filenames.%0a* Form checkbox labels now have the same tooltip title as the checkbox.%0a* Add [@%25reversed%25@] WikiStyle.%0a* RefCount: add label to checkbox, class to table.%0a* Vardoc: fix markup call, reported by Hans-Jürgen Godau.%0a* pmcrypt() return false when salt appears to be some old PmWiki attribute.%0a* Default InterMap PmWiki URLs have now the HTTPS protocol (suggested by Simon).%0a* Update documentation.%0a%0a!!! Version 2.2.107 (2018-02-02) [[#v22107]]%0a* Fix Forms and Pagelists warnings in PHP 7.2, reported by DFaure.%0a** Fix order=title broken with the previous commit, reported by ChuckG.%0a* Add $MailFunction.%0a* Add ".rtl *" styles.%0a* Update documentation.%0a%0a!!! Version 2.2.106 (2017-12-01) [[#v22106]]%0a* Add pmsetcookie(), $EnableCookieSecure, $EnableCookieHTTPOnly (PITS:01425).%0a* Refactor PageListSort() to make it work for PHP 7.2 without requiring create_function().%0a** Fix ordering broken with the previous commit, reported by ChuckG.%0a* Fix `wikiword markup, reported by Steve Glover.%0a* Update documentation.%0a%0a!!! Version 2.2.105 (2017-11-07) [[#v22105]]%0a* Refactor @@HandleUpload()@@ - add @@UploadSetVars($pagename)@@ to allow custom upload add-ons to set variables.%0a* Fix bug with PQA() that caused invalid HTML with attributes glued together.%0a%0a!!! Version 2.2.104 (2017-10-11) [[#v22104]]%0a* Fix bug with WikiTrails introduced with 2.2.103 (PITS:01422).%0a%0a!!! Version 2.2.103 (2017-10-01) [[#v22103]]%0a* Add pagelist list=grouphomes and fmt=#grouphomes.%0a* Update all scripts for PHP 7.2 (bugtrack).%0a* Make responsive skin also compatible with PmWiki versions 2.2.55 or earlier.%0a* Add *.vtt (web subtitles) as allowed upload extension.%0a* Fix Charset headers for xlpage-iso-*.php%0a* Refactor PageStore class to remove create_function() calls.%0a* Add "title" attribute to input form elements.%0a* Re-add the definition of the $rrep variable in Markup expressions, reported by ChuckG.%0a* Add $AuthLDAPReferrals to set LDAP_OPT_REFERRALS if needed, reported by Kirk Zurell.%0a* Fix missing $pagename for WikiWord links.%0a* Update documentation.%0a%0a%0a!!! Version 2.2.102 (2017-08-05) [[#v22102]]%0a* Revert fix for PITS:01300, the markup engine breaks when a text variable content is longer than 2699 characters.%0a* Add a text box in [[SiteAdmin.AuthList]] to allow filtering of the results.%0a%0a!!! Version 2.2.101 (2017-07-30) [[#v22101]]%0a* Rename function PageStore to __construct, to prevent PHP 7 strict or deprecated notices.%0a%0a!!! Version 2.2.100 (2017-07-30) [[#v22100]]%0a* Workaround around Subversion incompatibility with @@$Author[==]:...$@@ string not intended as SVN keyword.%0a* Responsive skin: add spacing above the #wikitext block, similar to the default skin.%0a* Update documentation.%0a%0a!!! Version 2.2.99 (2017-06-26) [[#v2299]]%0a* Fix Preview didn't show changes due to $ROSPatterns (PITS:01408).%0a* Remove markup rules for previewing author signature not needed anymore.%0a* Fix bug and warning appearing in PHP 4 installations.%0a* Update Wikipedia intermap entry (secure https).%0a* Fix bug with [@[[%3c%3c]]@] styles "clear:both".%0a* {-Fix incomplete definition of page text variable halts the rendering (PITS:01300).-}%0a* Fix $Version didn't work as a vardoc link.%0a* Update documentation.%0a%0a!!! Version 2.2.98 (2017-05-31) [[#v2298]]%0a* Fix WikiStyles where "pct" was incorrectly dropped from some classnames (PITS:01404).%0a* Hide warning about missing intermap file.%0a* Add pmwiki-responsive skin, based on modified Skins:2016.%0a* Responsive skin: Hide icon if PageActions empty. Fix "close" icon didn't appear for the PageActions block. Unrestrict menu height. Switching from portrait view with menu open to landscape: page should not be greyed out (PITS:01406). Landscape view: fix overflow for search form in Epiphany (likely Safari and other AppleWebKit-based browsers). Move the %3cmain> tag up to allow scrolling of the whole #wikibody. Large preformatted blocks will also scroll in the mobile view. Set limit for desktop layout to 50em~800px. Scrollable tables via cosmetic JavaScript.%0a* Both skins: Set default text color (PITS:01406).%0a* Fix Deprecated notice for Site.AuthUser password attributes.%0a* Vardoc links now use MakeLink() to allow a custom LinkPage function, fix bug reported by ChuckG.%0a* $InclCount now counts per browsed page (for multi-page processing recipes).%0a* Make $markupid variable available to markup replacement functions.%0a* Refactor function ReplaceOnSave to allow easier calling from recipes (PITS:01407).%0a* Enable *.mkv as allowed video extension.%0a* Fix bug with attachlist markup.%0a* Fix alternative bold/italics markup in sample-config.php (PITS:01400).%0a* Fix lost space in markup tables, replace markup tables %3ccode> with %3cpre> and add style "pre-wrap" (reported by ChuckG).%0a* Update documentation.%0a%0a!!! Version 2.2.97 (2017-04-07) [[#v2297]]%0a* Fix bug concerning $ScriptUrl when $EnablePathInfo is set, introduced in 2.2.96, reported by 3 users.%0a* Update documentation.%0a%0a!!! Version 2.2.96 (2017-04-05) [[#v2296]]%0a* Fix severe PHP code injection vulnerability, reported by Gabriel Margiani.%0a** Filter $pagename to exclude certain characters.%0a** Add $pagename_unfiltered in case a recipe requires it.%0a* Update documentation.%0a%0a!!! Version 2.2.95 (2017-02-28) [[#v2295]]%0a* Update documentation.%0a%0a!!! Version 2.2.94 (2017-01-31) [[#v2294]]%0a* Strip both .html and .htm extensions (Cookbook:HtmlUrls-Talk).%0a* Clear $PageExistsCache[$pagename] when a page is created or deleted (PITS:01401).%0a* Update documentation.%0a%0a!!! Version 2.2.93 (2016-12-31) [[#v2293]]%0a* Update documentation.%0a%0a!!! Version 2.2.92 (2016-11-30) [[#v2292]]%0a* Skip checking for $AllowPassword if empty or false.%0a* Enable FmtPageName() to expand PageVariables with asterisks.%0a* Update documentation.%0a%0a!!! Version 2.2.91 (2016-09-30) [[#v2291]]%0a* Update documentation.%0a%0a!!! Version 2.2.90 (2016-08-31) [[#v2290]]%0a* Add action parameter to upload form URL.%0a* Add @@imgonly@@ and @@imgcaption@@ CSS classes (PITS:01390).%0a* Fix plus-links with suffix [@[[Page|+]]s@] (PITS:01392).%0a* Update documentation.%0a%0a!!! Version 2.2.89 (2016-07-30) [[#v2289]]%0a* Add identifiers to Site.EditForm elements to enable easier styling.%0a* Add $SimpleTableDefaultClassName, default unset (PITS:00638).%0a* Add temporary $new['=html'] entry, in SaveAttributes().%0a* Fix superfluous line breaks in SiteAdmin.AuthList.%0a* Add optional placeholder attribute in [@(:searchbox:)@].%0a* Add $SearchBoxInputType, default 'text'.%0a* Set $HTMLStylesFmt via SDVA() in vardoc.php, urlapprove.php, and xlpage-utf-8.php.%0a* Fix vardoc.php to recognize and link variables $pagename, $Author, $Skin, and to sort case insensitively.%0a* Update documentation.%0a%0a!!! Version 2.2.88 (2016-06-29) [[#v2288]]%0a* Fix invalid HTML output of WikiTrail links (PITS:01388).%0a* Add 4th argument $double_encode to PHSC() for safe replacement of htmlspecialchars().%0a* Add page variable [@{$SiteAdminGroup}@] (PITS:00951).%0a* Update documentation.%0a%0a!!! Version 2.2.87 (2016-05-31) [[#v2287]]%0a* Add $HTMLTagAttr, to allow inclusion of lang, manifest and other attributes.%0a* Add $EnableRevUserAgent, $FmtV['$DiffUserAgent'].%0a* Fix relative link in [[Site.UploadQuickReference]].%0a* Update documentation.%0a%0a!!! Version 2.2.86 (2016-04-28) [[#v2286]]%0a* Fix PageStore() for PHP 7.%0a* Fix $DefaultPasswords for PHP 7.%0a* Update documentation.%0a%0a!!! Version 2.2.85 (2016-03-31) [[#v2285]]%0a* Add svg(z) and SVG(Z) as embeddable image extensions (PITS:00197, PITS:00435).%0a* Add *.svgz as allowed upload extension.%0a* Update documentation.%0a%0a!!! Version 2.2.84 (2016-02-21) [[#v2284]]%0a* Update/fix URL in UPGRADES.txt (PITS:01378).%0a* Fix indent and outdent CSS for RTL languages (PITS:01379).%0a* Add $EnableLinkPlusTitlespaced (PITS:01140).%0a* Update documentation.%0a%0a!!! Version 2.2.83 (2015-12-31) [[#v2283]]%0a* Update documentation.%0a%0a!!! Version 2.2.82 (2015-11-30) [[#v2282]]%0a* Enable stripmagic() to process arrays recursively.%0a* Update documentation.%0a%0a!!! Version 2.2.81 (2015-10-31) [[#v2281]]%0a* Fix single line PageTextVariable definition (reported by HansB).%0a* Add .ltr and .rtl CSS classes for UTF-8.%0a* Update documentation.%0a%0a!!! Version 2.2.80 (2015-09-30) [[#v2280]]%0a* Modify [@(:searchbox:)@] to use type="search" input.%0a* Update documentation.%0a%0a!!! Version 2.2.79 (2015-08-27) [[#v2279]]%0a* Modify guiedit.js::insMarkup() to accept a custom function name processing the text, and a custom id for the text area.%0a* Add CSS basic colors 'fuchsia','olive','lime','teal','aqua','orange' and 'grey' as WikiStyles (PITS:01373).%0a* Add $EnableROSEscape, default 0 (PmWiki:TextFormattingRules-Talk).%0a* Remove 'target' attribute in input forms (breaks PmForm).%0a* Add HTML5 input types email, url, number, date, search.%0a* Add attribution in script comments.%0a* Update documentation.%0a%0a!!! Version 2.2.78 (2015-07-21) [[#v2278]]%0a* Update $RobotPattern with current user agents.%0a* Accept 'target' attribute in input forms.%0a* Update documentation.%0a%0a!!! Version 2.2.77 (2015-06-19) [[#v2277]]%0a* Add generic function MakeNames() to process MakePageNames().%0a* Extend [@(:if attachments:)@] to specify file and page names (PITS:01087).%0a* Optimize PageStore::recode() to cache utf8_decode and utf8_encode callbacks.%0a* Add [@{$WikiTitle}@] page variable.%0a* Update documentation.%0a%0a!!! Version 2.2.76 (2015-05-31) [[#v2276]]%0a* Recover posted arrays (indexed or associative, not multidimensional) when a password is required (PITS:00835, PITS:01110).%0a* Add label argument to checkbox and radio inputs (PITS:01367).%0a* Enable PHSC() to process arrays recursively.%0a* Enable processing of arrays as input values (PITS:01032).%0a* Add CSS classes to standalone image div and caption (PITS:00489, PITS:00497).%0a* Update documentation.%0a%0a!!! Version 2.2.75 (2015-04-26) [[#v2275]]%0a* Fix uploads to respect $EnableReadOnly.%0a* Escape HTML special characters when printing failed callback creation.%0a* Add [[Functions#pmcrypt | pmcrypt()]] for PHP 5.6 compatibility.%0a* Add markup for HTML5 [[PmWiki:BlockMarkup#semantic | semantic ]] tags article, section, nav, header, footer, aside, address.%0a* Update documentation.%0a%0a%0a!!! Version 2.2.74 (2015-03-28) [[#v2274]]%0a* Allow translation of the "OK" string in forms (PITS:01363).%0a* Update documentation.%0a%0a!!! Version 2.2.73 (2015-02-28) [[#v2273]]%0a* Update documentation.%0a%0a!!! Version 2.2.72 (2015-01-27) [[#v2272]]%0a* Enable markup debug messages even when debug_backtrace() is not available.%0a* Add $AbortFunction.%0a* Restore ability to set a custom $MarkupWordwrapFunction, add $MarkupWrapTag (related to earlier fix for PITS:01360).%0a* Update documentation.%0a%0a!!! Version 2.2.71 (2014-12-29) [[#v2271]]%0a* Add $DraftActionsPattern.%0a* Enable "input default source" parameter to contain multiple pages.%0a* Enable "pagelist request" parameter to contain a list of (dis)allowed parameters.%0a* Enable Markup() backtrace for ?action=ruleset.%0a* Fix strict warning for blacklisted uploads (PITS:01359).%0a* Fix wrong hard wrap in [@(:markup:)@] code examples (PITS:01360).%0a* Update documentation.%0a%0a!!! Version 2.2.70 (2014-11-08) [[#v2270]]%0a* Update documentation.%0a%0a!!! Version 2.2.69 (2014-10-13) [[#v2269]]%0a* Fix DRange() for ISO-8601 dates +/- X days.%0a* Fix wording in [[Site.UploadQuickReference]].%0a* Update documentation.%0a%0a!!! Version 2.2.68 (2014-09-01) [[#v2268]]%0a* Add Skins: InterMap prefix.%0a* Add signature to [[Site.EditQuickReference]] (PITS:01350).%0a* Allow $PostConfig entries to be launched after per-page customization, before other stdconfig.php inclusions if values%3c50.%0a* Add [[WikiStyles]] clear, min and max width and height (PITS:00860), fix [=%25p class=...%25=] with more than one space.%0a* Update documentation.%0a%0a!!! Version 2.2.67 (2014-08-02) [[#v2267]]%0a* Fix InputDefault/PageTextVariables inconsistency (PITS:01337).%0a* Update documentation.%0a%0a!!! Version 2.2.66 (2014-07-02) [[#v2266]]%0a* Fix Author in Notifcations when deleting pages (PITS:01112).%0a* Exclude "_" to be considered as a function name in various $*Patterns.%0a* Update documentation.%0a%0a!!! [[#v2265]] Version 2.2.65 (2014-06-07)%0a* Fix [={$$PseudoVars}=] containing [={*$PageVars}=] in [[PageList Templates]].%0a* Fix wording in scripts/.htaccess (PITS:01345).%0a* Fix fixperms() if directory owner is root (PITS:01346).%0a* Update documentation.%0a%0a!!! [[#v2264]] Version 2.2.64 (2014-05-08)%0a* Add [={(mod)}=] [[PmWiki/MarkupExpressions | markup expression]].%0a* Add tel: and geo: [[PmWiki/LinkSchemes | URI schemes]].%0a* Add $SysMergePassthru to allow Merge() to use passthru() instead of popen().%0a* Update documentation.%0a%0a!!! [[#v2263]] Version 2.2.63 (2014-04-05)%0a* Allow [[PmWiki/Forms | form]] elements to have a dash in the attribute names.%0a* Strip magic slashes for pagelist/search request vars.%0a* Allow input attributes readonly, placeholder and autocomplete for HTML5 sites.%0a* Update documentation.%0a%0a!!! [[#v2262]] Version 2.2.62 (2014-02-28)%0a* Add $CallbackFnTemplates["return"].%0a* Add 4th argument to Markup_e() - $template.%0a* Add $EnableTableAutoValignTop.%0a* Update documentation.%0a%0a!!! [[#v2261]] Version 2.2.61 (2014-01-31)%0a* Add $TableCellAlignFmt.%0a* Remove unused snippet in prefs.php (reported by Oliver Betz).%0a* Remove unused calls to PSS() (reported by John Rankin).%0a* Update documentation.%0a%0a!!! [[#v2260]] Version 2.2.60 (2014-01-12)%0a* Revert to previous pmwiki.css file.%0a%0a!!! [[#v2259]] Version 2.2.59 (2014-01-11)%0a* Fix checking multiple posted fields in blocklist.php (reported by Randy Brown).%0a* Allow Markup_e() to accept a callback as well as code.%0a* Fix "+" shortcut for internal anchor links.%0a* Disable HTML cache if count($_GET)>1 not >2 (PITS:01278).%0a* Fix query string if a "?" is encoded to uppercase "%253F".%0a* Replace CSS font sizes from points (fixed) to percents (relative) for the default skin.%0a* Fix nested conditionals containing $pagename (reported by Benjamin Grassineau).%0a* Update documentation.%0a%0a!!! [[#v2258]] Version 2.2.58 (2013-12-25)%0a* Allow $LinkUpload to be usable in [=(:attachlist:)=].%0a* Enable customizations of [=(:input auth_form:)=].%0a* Remove unused variable $Block in FormatTableRow(), reported by Klonk.%0a* Fix $EnableBlocklistImmediate to check all posted fields for blocked terms.%0a* Add $GLOBALS['MarkupToHTML'] to pass parameters such as $pagename to markup calls.%0a* Update documentation.%0a%0a!!! [[#v2257]] Version 2.2.57 (2013-11-03)%0a* Encode international character used for detection of a recode function.%0a* Enable $IMapLinkFmt['Attach:'] to be used in [[PmWiki/PageDirectives#attachlist|[=(:attachlist:)=]]] links.%0a* Add $MakePageNameSplitPattern.%0a* Update documentation.%0a%0a!!! [[#v2256]] Version 2.2.56 (2013-09-30)%0a* Work in progress to remove the core dependency of the deprecated "eval" feature of the preg_replace() function (PITS:01319).%0a* Add functions PCCF(), PPRE(), PPRA(), Markup_e(), migrating all core calls to these functions.%0a* Fix detection of proper PageStore->recodefn.%0a* Update documentation.%0a%0a%0a!!! [[#v2255]] Version 2.2.55 (2013-09-16)%0a* Add $EnableDraftAtomicDiff (PITS:01007).%0a* Update documentation.%0a%0a!!! [[#v2254]] Version 2.2.54 (2013-08-13)%0a* Fix broken page history for draft pages, reported by ChuckG.%0a* Update documentation.%0a%0a!!! [[#v2253]] Version 2.2.53 (2013-07-08)%0a* Show a message when the post has been blocked because of too many unapproved links.%0a* Update documentation.%0a%0a!!! [[#v2252]] Version 2.2.52 (2013-06-08)%0a* Add docx, pptx, xlsx upload extentions.%0a* Hide E_DEPRECATED warnings for PHP 5.5.%0a* Update documentation.%0a%0a!!! [[#v2251]] Version 2.2.51 (2013-05-08)%0a* Update url to MoinMoin's blocklist.%0a* Comment-out blacklist.chongqed.org as the domain appears to have expired.%0a* Fix possible XSS vulnerability in prefs.php, discovered today.%0a* Fix access keys to be a single character.%0a* Fix $AuthorPage if there is a group named the same as the author (PITS:01259).%0a* Update documentation.%0a%0a!!! [[#v2250]] Version 2.2.50 (2013-04-08)%0a* Update documentation.%0a%0a!!! [[#v2249]] Version 2.2.49 (2013-03-09)%0a* Add $UploadBlacklist array.%0a* Update documentation.%0a%0a!!! [[#v2248]] Version 2.2.48 (2013-02-11)%0a* Fix bug introduced yesterday with some links, reported by Michael Weiner (PITS:01308).%0a%0a!!! [[#v2247]] Version 2.2.47 (2013-02-10)%0a* Enable tooltip titles for links to anchors on the same page.%0a* Update documentation.%0a%0a!!! [[#v2246]] Version 2.2.46 (2013-01-07)%0a* Add third parameter to fixperms() explicitly setting the permissions.%0a* Add $UploadPermAdd and $UploadPermSet variables.%0a* Update documentation.%0a%0a!!! [[#v2245]] Version 2.2.45 (2012-12-02)%0a* Cleanup some PHP notices (PITS:01304).%0a* Update documentation.%0a%0a!!! [[#v2244]] Version 2.2.44 (2012-10-21)%0a* Better display of whitespace in page histories.%0a* Fix definition for PageTextVariables containing a dash (PITS:00978).%0a* Update documentation.%0a%0a!!! [[#v2243]] Version 2.2.43 (2012-09-20)%0a* Allow for HTML attribute names to contain dashes, eg. data-transition, data-role etc.%0a* Remove warning when previewing Site.EditForm.%0a* Update documentation.%0a%0a!!! [[#v2242]] Version 2.2.42 (2012-08-20)%0a* Convert the line-endings in the docs/ directory to \r\n compatible with Windows.%0a* Modify PHSC() to call htmlspecialchars() with a single-byte encoding argument.%0a* Update documentation.%0a%0a!!! [[#v2241]] Version 2.2.41 (2012-08-12)%0a* Change $KeepToken to "\034\034" which is compatible with more encodings.%0a* Update documentation.%0a%0a!!! [[#v2240]] Version 2.2.40 (2012-07-21)%0a* Add PHSC() helper function as a replacement of htmlspecialchars() for PHP 5.4 (PITS:01292).%0a* Update documentation.%0a%0a!!! [[#v2239]] Version 2.2.39 (2012-06-25)%0a* Fix URL encoding of attachment links.%0a* Update documentation.%0a%0a!!! [[#v2238]] Version 2.2.38 (2012-05-21)%0a* Fix "Wrong parameter count for utf8_decode" warning, reported by Simon.%0a* Update documentation.%0a%0a!!! [[#v2237]] Version 2.2.37 (2012-05-01)%0a* Add page filename encoding functions.%0a* Better handling of dots in [@[[#anchor_1.2]]@] sections (PITS:01285).%0a* Expand PageVariables in [[PageList templates]] defaults (PITS:01282).%0a* Add test for iconv() and mb_convert_encoding(), refactor recode().%0a* Update documentation.%0a%0a!!! [[#v2236]] Version 2.2.36 (2011-12-28)%0a* Add $EnableOldCharset variable and $page["=oldcharset"] entry.%0a* Refactor PageStore->recode() to recover Windows-1252 characters.%0a* Add exit line to xlpage-iso-8859-2.php (PITS:01275).%0a* Fix difference in defining and removing "invisible" PTVs.%0a* Update documentation.%0a%0a!!! [[#v2235]] Version 2.2.35 (2011-11-11)%0a* Fix critical PHP injection vulnerability (PITS:01271, reported by Egidio Romano).%0a* Important change: Disable script loading from XLPage().%0a* Move the processing of [@[[link|+]]@] inside LinkPage() and delete markup rule from stdmarkup.php.%0a* Modify MakeLink() to better handle link titles.%0a* Add optional $LinkTitleFunction allowing recipes to customize the link titles.%0a* Fix ReadTrail() to better handle links with titles.%0a* Add title attributes for the HTML templates in the @@ $LinkPage*Fmt @@ variables.%0a* Add upload extensions svg, xcf, ogg, flac, ogv, mp4, webm, odg, epub.%0a* Minor optimization for the MarkupExpressions for UTF-8 strings.%0a* Minor optimization of the rendering of page history.%0a%0a!!! [[#v2234]] Version 2.2.34 (2011-10-10)%0a* Add [[PmWiki/MarkupExpressions]] replacements for UTF-8.%0a* Reset timestamps of Site(Admin).AuthUser to 1000000000, used in upgrades.php.%0a* Update documentation.%0a%0a!!! [[#v2233]] Version 2.2.33 (2011-09-23)%0a* Fix locked states for Site and SiteAdmin GroupAttributes (reported by Brijesh Kothari).%0a* Fix intermap.txt entries PITS: and Wikipedia: to point to their current locations.%0a* Fix refcount.php to produce valid HTML (PITS:01266).%0a%0a!!! [[#v2232]] Version 2.2.32 (2011-09-18)%0a* Add required html xmlns attribute to the print skin template.%0a* Add PageStore->recode() function.%0a* Add $DefaultPageCharset array.%0a* Optimize for speed the inline diff for page history when too many lines were added or deleted.%0a* Update and convert to UTF-8 the documentation.%0a%0a%25note%25 Note: Due to a manipulation error, a version 2.2.31 was created before it was ready for a release.%0a%0a!!! [[#v2230]] Version 2.2.30 (2011-08-13)%0a* Fix $Charset definition in iso-8859-*.php files.%0a* Add $EnableRangeMatchUTF8, set it to 1 to enable range matches in UTF-8.%0a* Update documentation.%0a%0a!!! [[#v2229]] Version 2.2.29 (2011-07-24)%0a* Fix Attach links that were broken with the Path fix in 2.2.28.%0a* Add $IMapLocalPath array containing InterMap prefixes that should be treated as local.%0a%0a!!! [[#v2228]] Version 2.2.28 (2011-07-24)%0a* Fix potential XSS vulnerability in refcount.php (PITS:01262).%0a* Fix bug in Path: links (PITS:01260).%0a* Fix potential XSS vulnerability in custom SitePreferences (PITS:01263).%0a* Update documentation.%0a%0a!!! [[#v2227]] Version 2.2.27 (2011-06-19)%0a* Add block WikiStyle [=%25justify%25=] (PITS:01253).%0a* Remove unused %3cvspace> after a redirection (PITS:01255).%0a* Add ?nodiff=1 parameter for page history to disable diff rendering and show only restore links.%0a* Update documentation.%0a%0a!!! [[#v2226]] Version 2.2.26 (2011-05-21)%0a* Fix ReadTrail(), redundant replacing of hashes, already done in MakePageName().%0a* Update documentation.%0a%0a!!! [[#v2225]] Version 2.2.25 (2011-03-22)%0a* Update documentation.%0a%0a!!! [[#v2224]] Version 2.2.24 (2011-02-15)%0a* Add [@{$$PageTrailDepth}@] pseudovariable for [[PageList templates]].%0a* Fix PageVar(), add $authpage array for an authenticated page data, removed $EnablePageVarAuth.%0a* Update documentation.%0a%0a!!! [[#v2223]] Version 2.2.23 (2011-01-25)%0a* Default $EnablePageVarAuth to 0 until the resolution of PITS:01242.%0a%0a!!! [[#v2222]] Version 2.2.22 (2011-01-16)%0a* Add $EnableXLPageScriptLoad to XLPage() to prevent editors from changing the encoding.%0a* PageVariables now respect authentications (PITS:01213).%0a* Add $EnablePageVarAuth.%0a* Update documentation.%0a%0a!!! [[#v2221]] Version 2.2.21 (2010-12-14)%0a* Fix potential XSS vulnerability, reported by DFaure.%0a* Fix invalid HTML for simple table captions, reported by JL.%0a* Fix WikiStyles could work not properly if a value was empty like accesskey="".%0a%0a!!! [[#v2220]] Version 2.2.20 (2010-12-14)%0a* Fix Pagelist [={$$variable}=] didn't work in template none (PITS:01212).%0a* Fix interface access keys in browse mode (PITS:01188).%0a* Add PmL10n: intermap prefix for the Localization/ group on pmwiki.org (PITS:01180).%0a* Fix AuthUser excluding members didn't work (PITS:01201).%0a* Update documentation.%0a%0a!!! [[#v2219]] Version 2.2.19 (2010-11-10)%0a* Update documentation.%0a%0a!!! [[#v2218]] Version 2.2.18 (2010-09-04)%0a* Fix $SaveAttrPatterns to skip nested conditionals (reported by RandyB).%0a* Fix RecentChanges when an edit summary contains the dollar sign (PITS:01217).%0a* Fix RDF feed number of elements (PITS:01198).%0a* Update documentation.%0a%0a!!! [[#v2217]] Version 2.2.17 (2010-06-20)%0a* Add tabindex as a valid form attribute (PITS:01190).%0a* Collapse adjacent insertions in DiffRenderSource (PITS:01192).%0a* Fix HandleDownload to flush() output before exit (PITS:01199).%0a* Fix HandleDownload to respect $EnableIMSCaching (PITS:01191).%0a* Add $PostConfig functions and scripts, loaded after stdconfig.php (PITS:01132).%0a* Add $AuthUserPat variable for the regexp pattern in AuthUserId() (PITS:01202).%0a* Pass $authlist as last parameter to $AuthUserFunctions (PITS:01197).%0a* Fix "exists" conditional to work with old link markup.%0a* Update documentation.%0a%0a!!! [[#v2216]] Version 2.2.16 (2010-05-10)%0a* Allow "exists" conditional to accept wildcards (PITS:01184)%0a* Fix GUI button [=%25center%25=] which didn't work correctly.%0a* Fix incorrectly parsed quote in PQA(), possible script injection (discovered by Hanno Boeck).%0a%0a!!! [[#v2215]] Version 2.2.15 (2010-03-27)%0a* Add @@ (Auth|Edit)Form @@ to auto-translated titles.%0a* Fix [@ (:if auth LEVEL:) @] to respect $HandleAuth (PITS:01164).%0a* Skip loading of the second half of draft.php if $action!="edit".%0a* Fix bug with [@ (:template none:) @] introduced in 2.2.14, reported by Holger.%0a* Fix HandleDownload() to use binary file-read.%0a%0a!!! [[#v2214]] Version 2.2.14 (2010-02-27)%0a* Fix inline styles in WikiTrails (PITS:01121).%0a* Add a negation parameter to pagelist first/last templates (PITS:01127).%0a* Refactor FPLTemplateFormat(), move repeated code blocks into FPLExpandItemVars().%0a* Add $EnableUndefinedTemplateVars allowing to hide or show undefined template/include [={$$variables}=] (PITS:01152).%0a* Add "title" attribute to external links (PITS:00657).%0a* Add FmtPageTitle() to allow automatic i18n titles for RecentChanges and other technical pages (PITS:01157).%0a* Update documentation.%0a%0a!!! [[#v2213]] Version 2.2.13 (2010-02-21)%0a* Replace deprecated in PHP 5.3 function split() with explode().%0a* Add $WordDiffFunction default to PHPDiff().%0a* Use existing border colors as highlighting background.%0a* Refactor/optimize DiffRenderSource(), merge with DiffRenderInline().%0a* Change default history to show word-level highlighting.%0a* Fix bug with $DiffKeepNum which kept less revisions than it should.%0a* Fix RetrieveAuthPage() call from HandleDiff().%0a* Update documentation.%0a%0a!!! [[#v2212]] Version 2.2.12 (2010-02-17)%0a* Allow a custom $DiffHTMLFunction to skip the line rendering if it returns false.%0a* Add $EnableDiffInline, simple word-level diffs (PITS:00571).%0a* Update documentation.%0a%0a!!! [[#v2211]] Version 2.2.11 (2010-02-14)%0a* Break PrintDiff() into customizable functions (PITS:01106).%0a* Add anchors to individual diffs (PITS:00796).%0a* Remove unused $RecipeInfo definition in markupexpr.php (reported by P.Bowers).%0a* Add [=(:head:) and (:headnr:)=] table directives (PITS:00535).%0a* Fix $GroupPattern and $NamePattern in xlpage-utf-8.php.%0a* Update documentation.%0a%0a!!! [[#v229]] [[#v2210]] Version 2.2.9, 2.2.10 (2010-01-17)%0a* Fix i18n string in PasswdVar(), reported by SteP.%0a* Fix sample-config.php with correct information about $EnableWSPre (PITS:01145).%0a* Fix range searches for wikis in UTF-8 (reported by Maxim).%0a* Fix global variable $StringFolding in scripts/xlpage-utf-8.php.%0a* Fix markup for italics in creole.php.%0a* Fix previews for PTVs, [[PageList templates]] and included sections (PITS:01098).%0a* Add $DiffKeepNum - number of revisions kept, even if older than $DiffKeepDays.%0a* Add Yandex to robots.php.%0a* Change default $EnableRelativePageVars to 1 (PITS:01145).%0a* Add fifth parameter to SetProperty() : keep existing property.%0a* Add $EnablePageTitlePriority (PITS:00266, PITS:00779).%0a* Update documentation.%0a%0a!!! [[#v228]] Version 2.2.8 (2009-12-07)%0a* Fix apostrophes in Author field (PITS:01155).%0a* Fix Condition "exists" for PHP 5.3 (PITS:01156).%0a* Update documentation.%0a%0a!!! [[#v227]] Version 2.2.7 (2009-11-08)%0a* Fix GlobToPCRE() to work with !excl and -excl with PHP 5.3 (PITS:01149).%0a* Fix HandleDownload() correctly quote the filenames (PITS:01150).%0a* Fix SessionAuth() for PHP 5.3, the $_REQUEST array doesn't contain the $_COOKIE array (PITS:01141).%0a* Fix default timezone for PHP 5.3 (PITS:01141).%0a* Update documentation.%0a%0a!!! [[#v226]] Version 2.2.6 (2009-10-04)%0a* Escape apostrophes for multiline textarea/hidden form fields.%0a* Fix global unset of $MarkupRules in [[PmWiki/CustomMarkup|Markup()]] and DisableMarkup(), reported by D.Faure.%0a* Fix call to BuildMarkupRules() in MarkupToHTML(), suggested by Pm.%0a* Allow disabling of $PageListFilters and $FPLTemplateFunctions if set to -1 and thus allow replacing a core function with a custom one.%0a* Fix DRange() returned timestamps +1min or +1day when it shouldn't (PITS:01125).%0a* Add $MarkupWordwrapFunction to allow custom [@(:markup:)@] line width for multibyte wikis (PITS:00703).%0a* Add $MakeUploadNamePatterns to allow custom filename normalization for uploads.%0a* Add a fourth argument to PostRecentChanges() to allow this function to be called with a custom $RecentChangesFmt array.%0a* Add $RecentUploadsFmt, to allow logging of new uploads to the RecentChanges pages (PITS:00088).%0a* Fix Notify for some installations in safe_mode (PITS:00976).%0a* Add $HTMLHeaderFmt['guiedit'] variable in guiedit.php to allow customization (PITS:01146).%0a* Update documentation.%0a%0a!!! [[#v225]] Version 2.2.5 (2009-08-25)%0a* Add *.7z as accepted upload extension (PITS:00813).%0a* Fix global variable $HandleAttrFmt in HandleAttr (PITS:01126).%0a* Allow brackets in input element names (PITS:01131).%0a* Fix CSS class applied twice (PITS:01071).%0a* Fix Not-Modified headers could prevent caching (PITS:00802).%0a* Break FPLTemplate() into configurable sub-parts (PITS:01102).%0a* Add [@(:template none:)@] section for [[PageList templates]].%0a* Fix attr-protected page could be deleted with edit permissions (PITS:00238).%0a* Update documentation.%0a%0a!!! [[#v224]] Version 2.2.4 (2009-07-16)%0a* Fix bug with page attributes, which somehow didn't make it in the 2.2.3 release.%0a* Fix bug with HTML entities in XLPages introduced earlier today in 2.2.3 (reverted, PITS:01114).%0a%0a!!! [[#v223]] Version 2.2.3 (2009-07-16)%0a* Fix action=logout could incorrectly set a session cookie (PITS:01062).%0a* Fix page history trim in vardoc.php (PITS:01103).%0a* Add $EnableUploadGroupAuth, use group password for downloads (PITS:01104).%0a* Fix recursive PTV loops, added $MaxPageTextVars (PITS:00915, PITS:01099).%0a* Fix mkdirp() messages for absolute paths (PITS:00396).%0a* Fix sample-config.php order for urlapprove.php (PITS:01037).%0a* Fix broken signature links on preview.%0a* Fix crypt.php (action=crypt) could malfunction for passwords with quotes or apostrophes.%0a* Fix @@ @_site_*@@ passwords to work in GroupAttributes (PITS:00836, PITS:00998).%0a* Fix possible XSS vulnerabilities, reported by Michael Engelke.%0a* Update documentation.%0a%0a!!! [[#v222]] 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!!! [[#v221]] 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!!! [[#v220]] 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!!! [[#older]] Older versions%0a[[(PmWiki:)ChangeLog Archive]] - changes prior to version 2.2.0.%0a
-time=1703851234
+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 (/) mailing lists]] to discuss feature development with us.%0a%0a(:Prerelease:Changes made to the [[PmWiki:Subversion | subversion pre-release]] of PmWiki. You can get \%0a[[https://www.pmwiki.org/pub/pmwiki-devel/pmwiki-latest-svn.zip|a full ZIP archive]] of the nightly version, or \%0a[[https://www.pmwiki.org/pub/pmwiki-devel/pmwiki-nightly.zip|a partial export]] with only the files changed since {$Version}.:)\%0a{$:Prerelease}%0a%0a* Add prototype for dark theme toggle (experimental). See PITS:01497 and Cookbook:DarkColorScheme.%0a* $EnableUploadMimeMatch with Fileinfo not enabled to deny uploads.%0a* upload.php fix warning for PHP 8.%0a* RecipeCheck use https, suggested by Simon. %0a* Add $PmFilterable.%0a* PrintDiff() add $since argument.%0a* Forms enable input e_author not only for action=edit.%0a[[#svn-revision-4578]]%0a* Update documentation.%0a%0a!!! Version 2.3.29 (2023-12-18) [[#v2329]]%0a* Fix urlapprove.php for PHP 8.2. %0a* PmSyntax textarea remove styles for width, height (Cookbook:PmSyntax-Talk), allow for fractional dimensions of the highlighted area.%0a* $MarkupDirectiveFunctions allow dashes in attribute names.%0a* Update documentation.%0a%0a!!! Version 2.3.28 (2023-11-27) [[#v2328]]%0a* Add input ''month'' and ''color'' fields.%0a* Add $NotifyRelatedTrailFmt.%0a* Reverse simpletable row backgrounds when there is a thead element.%0a* Fix pmwiki-utils.js when window.localStorage is disabled.%0a* UrlApprovals allow https: URLs if the http: URL for the same domain has been approved (PITS:01431).%0a* Update documentation.%0a%0a!!! Version 2.3.27 (2023-10-23) [[#v2327]]%0a* When merging last edit, if there is no change summary, reuse the last one. %0a* Keep unknown date/time formats for undefined timezone (PITS:01495).%0a* DiffRenderSource() fix for PHP 8, keep ins/del tags on the same line.%0a* The ".diffmarkup" element now has the style "white-space: pre-wrap".%0a* Add new keyword shortcuts Ctrl+B (bold), Ctrl+I (italic), Ctrl+K (link/unlink).%0a* Update documentation.%0a%0a%0a!!! Version 2.3.26 (2023-09-28) [[#v2326]]%0a* Add configurable $InputLabelFmt snippet (PITS:01493).%0a* Add configurable $TrailFmt snippets.%0a* Add $EnableSearchAtLeastOneTerm, default disabled.%0a* Unset upload extensions if size for the extension is set to 0.%0a* Update feeds.php for PHP 8.2 (PITS:01494).%0a* Update documentation.%0a%0a%0a!!! Version 2.3.25 (2023-07-29) [[#v2325]]%0a* Updates for PHP 8.2.%0a* Fix pagelist when 2+ directives on the same line, reported by Simon.%0a* Fix possible bug with internal group(header|footer) directives caused by PRR().%0a* Update documentation.%0a%0a%0a!!! Version 2.3.24 (2023-06-06) [[#v2324]]%0a* Add $EnableUploadMimeMatch.%0a* Add $EnableMergeLastMinorEdit, edit functions MergeLastMinorEdit (based on Cookbook:FuseEdit), SaveChangeSummary (refactored out of HandleEdit).%0a* Fix LogoutCookies() doesn't use a $pagename argument.%0a* PmForm add condition 'validemail' for use in template require.%0a* Add $PmCryptAlgo, pmcrypt() to call password_verify() if it exists. %0a* Refactor HandleDownload() split ServeDownload($filepath, $upname).%0a* Add InsertEditFunction($newfn, $where='%3cPostPage').%0a* Add $AuthFormRespCode.%0a* Add $EnableDownloadRanges, default 1.%0a* When the token is expired, reopen edit form rather than abort.%0a* LocalTimes add $EnableRCListLastEdit.%0a* Update documentation.%0a%0a!!! Version 2.3.23 (2023-05-03) [[#v2323]]%0a* Refactor pmtoken() to use session tokens, enable for core actions.%0a* Add %25pmhlt%25[@(:input pmtoken:)@] helper.%0a* PmForm add $PmFormEnablePmToken.%0a* Refactor @@HandleLogoutA()@@ split @@LogoutCookies()@@. %0a* Fix PRCB() for PHP %3c 7.4.%0a* Update documentation.%0a%0a!!! Version 2.3.22 (2023-04-06) [[#v2322]]%0a* Add scripts/pmform.php, Site.PmFormTemplates.%0a* FmtDateTimeZ() can now accept Unix timestamps.%0a* Pagelists fix bug with multiple category=+A,+B entries.%0a* Update for PHP 8.1 (PITS:01488).%0a* MarkupDirectiveFunctions will now cast numeric arguments to floats.%0a* Prevent errors in custom PageVariables from generating internal server errors (PITS:01489).%0a* Improve inline diff for rare cases (end of page).%0a* Forms/buttons with @@data-pmconfirm="Question"@@ will ask the question before they are submitted.%0a* Update documentation.%0a%0a%0a!!! Version 2.3.21 (2023-03-06) [[#v2321]]%0a* Add $IsPmArchive, $PmArchiveDir.%0a* Sortable tables with %3ctime datetime=""> elements can be sorted by the datetime attribute. Fix for tables with preexisting %3cthead> element.%0a* Updates for PHP8.%0a* Add CSV upload extension.%0a* LocalTimes add mode=3 to show old dates as MM'YY.%0a* Fix bug with multiline $MarkupDirectiveFunctions, reported by Antti Tikanm&auml;ki.%0a* Add $EnableCopyCode and Copy code button to %3cpre> blocks, suggested by Alex Dor&eacute;.%0a* Update PmTOC to work better with Cookbook:SectionEdit.%0a* Update documentation.%0a%0a!!! Version 2.3.20 (2023-02-12) [[#v2320]]%0a* Fix undefined variable warning, reported by Gregor Klari&ccaron;.%0a%0a!!! Version 2.3.19 (2023-02-11) [[#v2319]]%0a* Only set cookie params if headers not sent. %0a* Update for PHP8.2, reported by Dfaure. PageVar() update for PHP 8.%0a* Add variable $DiffPrepareInlineFunction.%0a* PageListCache() remove unused global $PageIndexFile.%0a* Add configurable $LocalCSSDir, $LocalCSSDirUrl.%0a* DownloadUrl() add $FmtV['$LinkDownload'] with current or future download link.%0a* Add pm_recode() helper function (based on PageStore::recodefn), check for more transcode options.%0a* HandleBrowse() add $FmtV['$PageSourceText'].%0a* Add helper function KeepBlock().%0a* Add $FarmPubDirPrefix, pm_servefile(), $ServeFileExts.%0a* Update documentation.%0a%0a!!! Version 2.3.18 (2023-01-15) [[#v2318]]%0a* Refactor scripts/utils.php, add pm_json_encode() (PITS:01486).%0a* EditAutoText() fix for lines ending with multiple backslashes.%0a* PmSyntax optimize/refactor for large pages (cont.), fix inline escaped texts could ignore line markups, add EnableStopwatch.%0a* Notify fix typo in regular expression.%0a* Add $EnableUploadVersions >=10 to rename base.ext to base-1.ext, base-2.ext,...%0a* CondAuth() fix bug with global $AuthList.%0a* Add helper function PRCB() for simpler preg_replace_callback passing variables.%0a* Update scripts/refcount.php for PHP 8, reported by George Murray.%0a* Add PageVariable $PageLogoUrl (PITS:01297).%0a* Update documentation.%0a%0a!!! Version 2.3.17 (2022-12-17) [[#v2317]]%0a* WikiStyles trim class names (PITS:01485).%0a* GUIEditButtons refactor to enable Undo in textarea; allow for custom functions to configure mopen, mclose, and unselect for their buttons.%0a* [[Cookbook:EditHelp|EditHelp]] refactor to allow undo; add shortcuts Ctrl+L convert selection to lowercase, Ctrl+Shift+L to uppercase, Ctrl+Shift+ArrowUp and ArrowDown to swap lines.%0a* Skip upgrade check if $EnableReadOnly.%0a* Fix bug with multiple $MarkupDirectiveFunctions.%0a* Add $EnableBaseNameConfig.%0a* PmSyntax optimize for larger pages (cont.).%0a* Input password add class "inputbox" like the other fields.%0a* CondAuth() added way to check for usergroup permissions.%0a* Update in pagelist.php for PHP 8.%0a* Documentation update.%0a%0a!!! Version 2.3.16 (2022-11-28) [[#v2316]]%0a* Class PPRC add generic callbacks.%0a* IncludeText() update for PHP 8, reported by V.Krishn.%0a* WikiStyle add 'overflow', 'notoc'.%0a* Add PmNonce().%0a* PmTOC update indented link style->classname. %0a* Responsive skin: replace %25pmhlt%25[@[[%3c%3c]]@] with %25hlt html%25[@%3cbr class='clearboth' />@], update PmTOC styles.%0a* $EnableListIncludedPages use class name instead of style. %0a* guiedit.js remove unneeded style.%0a* PmSyntax realign font for nested programming languages in the edit form, optimize for large pages.%0a* Only call session_status() if function exists.%0a* Edit form remove unsafe-inline script.%0a* Revert WikiStyleToClassName(), PrePrintFmt() -- need more work (PITS:01484).%0a* Documentation update.%0a%0a!!! Version 2.3.15 (2022-11-21) [[#v2315]]%0a* CSS pre, code relative/scalable font-size (pmwiki-responsive skin).%0a* PmSyntax add variable --pmsyntax-fontsize-editform and split from --pmsyntax-fontsize [[https://www.pmichaud.com/pipermail/pmwiki-users/2022-November/064936.html|#]].%0a* PmSyntax fix [@[[Highlight]]@] label font size and family (reported by Hans).%0a* Add variable $CookieSameSite default to 'Lax'%0a* Add argument $samesite to pmsetcookie(), default to $CookieSameSite, refactor for old and new PHP versions. %0a* Add function pm_session_start() respecting local configuration.%0a* CSP header add base-uri=self; object-src 'none'.%0a* Add $HTTPHeaders['XSSP'] = 'X-XSS-Protection: 1; mode=block'.%0a* Rewrite GUIButtons logic to avoid unsafe-inline JavaScript.%0a* Refactor WikiStyles, replace inline styles with class names to avoid unsafe-inline CSS.%0a* Refactor PQA(), tables, cells, to replace inline style="..." with class names to avoid unsafe-inline CSS.%0a* Add PrePrintFmt(), refactor PrintFmt(), PrintSkin() to process wiki pages, skin parts, and skin functions to HTML before outputting headers.%0a* Fix XSS vulnerability.%0a* Documentation update.%0a%0a!!! Version 2.3.14 (2022-11-03) [[#v2314]]%0a* Searchbox also escape custom field names.%0a* Prevent double-encoded entities in searchbox (reported by Simon).%0a* Trim $Author (PITS:01208).%0a* Replace autofocus inline JavaScript with attributes.%0a* Edit form: the label next to the "Minor edit" checkbox now toggles the checkbox.%0a* PmSyntax recognize %25pmhlt%25[@(:template requires? ...:)@].%0a* Update for PHP 8. %0a* Obsolete PCCF() from PHP 7.2 not 8.0.%0a* Add array $ObsoleteMarkups, function TraceMarkup(), update Markup(), Markup_e() and ObsoleteMarkup(), to retrieve and show files and line numbers for obsolete/disabled markup rules.%0a* Fix bug with PSFT format %25L.%0a* Update documentation.%0a%0a!!! Version 2.3.13 (2022-10-07) [[#v2313]]%0a* Close potential XSS vulnerability, reported by lukystreik (PITS:01483).%0a* Refactor $MultiFactorAuthFunction, add $FailedLoginsFunction.%0a* Update documentation.%0a%0a!!! Version 2.3.12 (2022-09-25) [[#v2312]]%0a* Stripmagic() cast null to "" and other fixes for PHP 8.%0a* Fix parse error for complex conditionals with empty variables (PITS:01480).%0a* PSFT() and MarkupExpression [@ftime@] add %25L as human readable local timestamp. %0a* MarkupRestore() fix wrong cast to empty string of false-ish values.%0a* PrintAuthForm() split from PmWikiAuth(). %0a* Fix warning for unneeded session_regenerate_id() (reported by George Murray).%0a* Update documentation.%0a%0a!!! Version 2.3.11 (2022-08-30) [[#v2311]]%0a* Add [[PageVariables]] %25pmhlt%25 [@{$GroupHomePage}@], [@{$GroupHomePageName}@], [@{$GroupHomePageTitle}@], [@{$GroupHomePageTitlespaced}@].%0a* Add $MarkupDirectiveFunctions.%0a* Fix stripmagic() for arrays recently broke after PHP8 update.%0a* Update documentation.%0a%0a!!! Version 2.3.10 (2022-08-20) [[#v2310]]%0a* Update for PHP 8.1 (reported by Armin Bühler).%0a* Forms will now prefill wildcard variables from $DefaultUnsetPageTextVars or $DefaultEmptyPageTextVars.%0a* $EnablePmSyntax = 3; will enable syntax highlighting in the edit form by default, without the user clicking on "Highlight". Fix occasional text mis-alignment between the text area and the highlighted block.%0a* Update documentation.%0a%0a!!! Version 2.3.9 (2022-08-18) [[#v239]]%0a* Add non-wildcard $DefaultUnsetPageTextVars to %25pmhlt%25[@(:input default:)@] (reported by Johnny).%0a* PmSyntax handles new selectors pre.pmhlt, code.pmhlt.%0a* Update for PHP 8 (PITS:01478).%0a* Update documentation.%0a%0a%0a!!! Version 2.3.8 (2022-07-22) [[#v238]]%0a* PmSyntax fix for 2 different %25pmhlt%25 [@%25hlt%25@] on the same line (reported by Simon).%0a* Fix broken include when the first page doesn't exist.%0a* Update documentation.%0a%0a!!! Version 2.3.7 (2022-06-28) [[#v237]]%0a* $HTTPHeaders add X-Frame-Options (suggested by Imagine Dragon) and Content-Security-Policy to disallow embedding in external websites by default.%0a* $EnableHighlight will now remember any links to PmWiki variables and restore them after the highlighting, see [[thread->https://www.pmwiki.org/pipermail/pmwiki-users/2022-June/064887.html]].%0a* $EnablePmSyntax will now process %25pmhlt%25[@%25hlt pmwiki%25@] in addition to [@%25pmhlt%25@] blocks, and escaped markup after it will be tentatively highlighted.%0a* Update documentation.%0a%0a!!! Version 2.3.6 (2022-06-19) [[#v236]]%0a* Fixes for PHP 8.%0a* Add form attribute "lang".%0a* Sortable tables allow for table headers to have markup such as bold (except links). It will now use a case-insensitive natural ordering.%0a* Allow for $UploadVerifyFunction to modify $upname.%0a* Add variable $PageIndexTermsFunction.%0a* Searchbox allow for removal of submit button if [@label=""@]; add default [@placeholder="$[Search]"@].%0a* Fix author.php may be included before some variables are defined, reported by Said Achmiz.%0a* $EnableHighlight convert code blocks to plain text, see [[thread->https://www.pmwiki.org/pipermail/pmwiki-users/2022-June/064887.html]].%0a* Documentation update.%0a%0a%0a!!! Version 2.3.5 (2022-05-23) [[#v235]]%0a* Fix broken list=grouphomes (PITS:01477).%0a* Add DisableSkinParts() helper function for recipes.%0a* HandlePostUpload: add @@$FmtV["$filepath"]@@ and @@$FmtV["$upurl"]@@ with the file path and direct URL to the newly uploaded file.%0a* In pmwiki-utils.js, replace forgotten ''let'' with ''var'' (suggested by SteP).%0a* Update for PHP 8.1.%0a* Update documentation.%0a%0a!!! Version 2.3.4 (2022-04-22) [[#v234]]%0a* Fixes for PHP 8 warnings, reported by Siegfried Seibert.%0a* Update documentation.%0a%0a!!! Version 2.3.3 (2022-03-26) [[#v233]]%0a* Fix for PHP 8 warnings, reported by Jean-Patrick Charrey, Dominique Faure and Siegfried Seibert.%0a* Update README.txt and docs/ files, suggested by Simon Davis.%0a* Update documentation.%0a%0a!!! Version 2.3.2 (2022-02-09) [[#v232]]%0a* Allow for $EnableLocalTimes to define custom duration of the pulled page history.%0a* Rename variable $EnableIncludedPages to $EnableListIncludedPages (avoid ambiguity).%0a* Remove $LinkAlt when an embedded picture without an alternative text fails to load.%0a* PmSyntax:%0a** Allow for line breaks \\ inside headings, tables, list items (like the core).%0a** Parallel processing of multiple blocks.%0a* Add scripts/utils.php; move loading of pmwiki-utils.js and PmSyntax to scripts/utils.js.%0a** Add $EnablePmUtils, default enabled.%0a** Parallel processing of the pmwiki-utils.js utility functions.%0a** Move pmwiki-utils.js move to $HTMLHeaderFmt (often prevents page redraw with the TOC/PmToggle/LocalTimes).%0a* Fix bug causing invalid page name when the name is "Group.0".%0a* Fix PHP 8.1.2 warnings, reported by J&uuml;rgen Godau and Dominique Faure.%0a* LocaltTimes fix "rcnew" classes for wikis with the older format.%0a* Update documentation.%0a%0a!!! Version 2.3.1 (2022-01-15) [[#v231]]%0a%0a* Fix the release script which broke the $VersionNum variable and the [@[[#anchor]]@] markup with the PmWiki-responsive skin.%0a%0a!!! Version 2.3.0 (2022-01-15) [[#v230]]%0a* Add PmSyntax, $EnablePmSyntax, $CustomSyntax, [@{$EnabledIMap}@], see Cookbook:PmSyntax, Cookbook:CustomSyntax.%0a* [@(:markup:)@] can now have @@class=norender@@ to only show the source code without processing it.%0a* Updates for PHP 8.1, hide warnings, add PSFT() replacement for strftime() and 2 callbacks, $EnableFTimeNew, update core function calls, add [@%25o@] for the ordinal suffix of the date (PITS:01418).%0a* Notify: @@tz=@@ (timezone) per-user.%0a* PageList add category= argument (PITS:00447, PITS:01475); link= and category= now accept multiple pages, wildcards, and negations (PITS:00908).%0a* [=[[!Category]]=] links can have alternative text (PITS:01095).%0a* Simplify/optimize pmwiki-utils.js when using datasets, simplify sorting of table rows without cloning, add LocalTimes().%0a* Page history diff anchors to also have "id=" attributes in addition to "name=".%0a* Add $EnableLocalTimes (default disabled) and styles, add HandleDiffList().%0a* Add markup %25pmhlt%25[@@2022-01-09T08:35:00Z@]%25%25 output as %3ctime>; localized if $EnableLocalTimes.%0a** Add $CurrentLocalTime in the above format, used by default in $RecentChangesFmt.%0a* Add $EnableRecentUploads (only Site.AllRecentChanges, only if $RecentUploadsFmt not defined).%0a* PmTOC update CSS for properly indented subheadings.%0a* Edit form $EnableIncludedPages, add placeholders to e_changesummary and e_author. Enable $EnableNotSavedWarning, add to sample-config.php. EditHelp to behave more like a word processor, typing "Enter" twice without writing text removes the preceding bullet.%0a* Responsive skin details>summary:hover {color:navy, cursor: pointer;}.%0a* PrintDiff() add classes for the delay between edits: diffday, diffweek, diffmonth, diffyear.%0a* Add helper function @@DownloadUrl($pagename, $path)@@ moved from @@LinkUpload()@@.%0a* Add [=$[ULby]=] i18n string 'uploaded by'.%0a* Update documentation.%0a%0a%0a!!! Version 2.2.145 (2021-12-11) [[#v22145]]%0a* Hide undefined variable notices for PHP8. %0a* Pagelist searches with wrong $SearchPatterns (list=abc argument) will now use $SearchPatterns["default"] rather than an empty array (effectively all pages). This is to allow admins to limit search locations.%0a* Obsolete markups: change &#9888; emoji for entity [=&#9888;=] (emoji doesn't work in non-UTF8 wikis).%0a* Update documentation.%0a%0a!!! Version 2.2.144 (2021-11-06) [[#v22144]]%0a* Fix CmpPageAttr() for PHP 8 (suggested by Chris Caputo).%0a* Optimize conditional "exists" if called many times, like from a pagelist.%0a* Allow for CondExists(), MatchPageNames(), and MatchNames() to be called with a $caseinsensitive argument set to ''false'' (default case insensitive is ''true'' like before).%0a* Update intermap.txt for Meatball wiki (PITS:01472).%0a* Update documentation.%0a%0a!!! Version 2.2.143 (2021-10-02) [[#v22143]]%0a* Prevent PHP from crashing with older markups and patterns.%0a* Add ObsoleteMarkup(). Obsolete markup rules are now disabled and will appear framed with a "warning" icon.%0a* Update documentation.%0a%0a!!! Version 2.2.142 (2021-08-31) [[#v22142]]%0a* Mute some PHP notices.%0a* Add form attributes autofocus, accept.%0a* Update documentation.%0a%0a!!! Version 2.2.141 (2021-07-09) [[#v22141]]%0a* Add $MultiFactorAuthFunction.%0a* Add $PageIndexFoldFunction.%0a* Update documentation%0a%0a!!! Version 2.2.140 (2021-06-26) [[#v22140]]%0a* Fix warnings for undefined variables in PHP 8 (PITS:01461).%0a* Update pub/drt-utils.js to use the new API function call for Highlight.js, the old one having been deprecated. This change requires Highlight.js version 10.7.0 or newer (currently 11.0.0).%0a* Update documentation.%0a%0a!!! Version 2.2.139 (2021-05-05) [[#v22139]]%0a* Remove empty title attributes, reported by Martin Cuno.%0a* Hide warning in pagelist.php for PHP 8, reported by Dominique Faure.%0a* Hide warning in wikiwords.php for PHP 8, reported by Jue (PITS:01461).%0a* Update documentation.%0a%0a!!! Version 2.2.138 (2021-03-02) [[#v22138]]%0a* Fix details summary incorrectly escaped HTML, reported by Jack Applin (PITS:01465).%0a* Update documentation.%0a%0a!!! Version 2.2.137 (2021-02-26) [[#v22137]]%0a* Fix bug with twice encoded entities in PQA() quoted arguments.%0a%0a!!! Version 2.2.136 (2021-02-26) [[#v22136]]%0a* Fix XSS vulnerability for WikiStyles reported today by Igor Sak-Sakovskiy.%0a* The PQA() function accepts a second argument $keep default true.%0a%0a!!! Version 2.2.135 (2021-01-31) [[#v22135]]%0a* Fix a number of PHP8 compatibility issues. Report others at PITS:01461.%0a* Add pmtoken(), AutoCheckToken() currently transparent.%0a* Blocklists: disabled a defunct one.%0a* PmTOC: rewrite handling of section editing links.%0a* Update documentation.%0a%0a%0a!!! Version 2.2.134 (2020-11-30) [[#v22134]]%0a* Update documentation.%0a%0a!!! Version 2.2.133 (2020-10-25) [[#v22133]]%0a* Escape unintended variable evaluation in link tooltip titles, reported by Finar.%0a* Responsive skin css: remove ul/ol forced padding (clips numbered list markers in long lists, reported by Colin Cody; complex to override cross-browser).%0a* Add image extensions WEBP and APNG (PITS:01454) and upload extensions.%0a* Fix potential vulnerability to CWE-384: Session Fixation, reported by Dominique Faure. Add $EnableAuthPostRegenerateSID default enabled.%0a* RecipeCheck - only inject CSS when the action is called.%0a* Update documentation.%0a%0a!!! Version 2.2.132 (2020-09-30) [[#v22132]]%0a* Update documentation.%0a%0a!!! Version 2.2.131 (2020-08-30) [[#v22131]]%0a* Update documentation.%0a%0a!!! Version 2.2.130 (2020-07-04) [[#v22130]]%0a* Update documentation.%0a%0a!!! Version 2.2.129 (2020-05-21) [[#v22129]]%0a* Mute some PHP notices.%0a* Copy "simpletable" styles from the "pmwiki-responsive" skin into the old "pmwiki" skin.%0a* Update documentation.%0a%0a!!! Version 2.2.128 (2020-04-26) [[#v22128]]%0a* Strip some trailing spaces and convert some tabs to spaces.%0a* Add comments next to preg_replace() and create_function() where old addons may cause PHP deprecation notices.%0a* Mute some PHP notices.%0a* Print the invalid pagename in the error message.%0a* Update documentation.%0a%0a!!! Version 2.2.127 (2020-03-23) [[#v22127]]%0a* Mute some PHP "undefined variable" notices.%0a* Responsive skin set #wikiedit textarea max-height: 60vh (after discussion+tests at PmWiki:Skins-Talk). %0a* Prefix PmTOC classes "pmtoc-show" and "pmtoc-hide" to avoid processing by other frameworks (reported by Finar).%0a* Add Skins:SkinChange to the core, enabled by either of the variables $EnableAutoSkinList and/or $PageSkinList.%0a* Add FileSizeCompact() and DiffTimeCompact() (can be used by recipes).%0a* Add $FmtV["$upresult"] can be intercepted by recipes.%0a* Update documentation.%0a%0a!!! Version 2.2.126 (2020-02-01) [[#v22126]]%0a* Mute some "Undefined" notices. %0a* Fix caches.php to write an updated .htaccess format.%0a* Fix bug with $PmTOC['MinNumber'] = -1 reported by SteP.%0a* Update documentation.%0a%0a%0a!!! Version 2.2.124, 2.2.125 (2020-01-27) [[#v22124]] [[#v22125]]%0a* Hide .PmTOCdiv if empty.%0a* Add $SetCookieFunction.%0a* Add $ToggleNextSelector, see Cookbook:ToggleNext.%0a* Update documentation.%0a%0a%0a!!! Version 2.2.123 (2019-12-31) [[#v22123]]%0a* Allow for [[Links#escaped | escaped [@[=link address=]@]]] to have any special characters, including quotes, parentheses and pipes.%0a* Fix PmXMail when the link contains a quote, and to work from headers, footers and sidebars.%0a* Add [[forms|form]] attribute "formnovalidate" (suggested by Robert Riebisch).%0a* Allow [[table of contents]] to work better with Cookbook:SectionEdit (reported by Johan Bengtsson).%0a* Mute a number of PHP notices for undefined variables. %0a* Add that "URL" means in browser in sample-config.php (PITS:01448). %0a* Add Cookbook:RecipeCheck in diag.php.%0a* Refactor functions that handle $EnableRCDiffBytes to show the deltas in the page histories.%0a* Remove $EnableRelativePageVars from sample-config.php (confusing, PITS:01145).%0a* Add upload extensions [[https://developers.google.com/speed/webp | @@webp@@ ]] image format and [[https://www.opus-codec.org/ | @@opus@@]] audio codec.%0a* Update documentation.%0a%0a!!! Version 2.2.122 (2019-11-19) [[#v22122]]%0aVersion 2.2.121 was released by mistake and contained some experimental code that was meant to be tested first.%0a* ObfuscateLinkIMap: Fix bug with special or international characters in custom subject fields, reported by FidelioEspoir.%0a* Add $DefaultUnsetPageTextVars, $DefaultEmptyPageTextVars.%0a* Mute "Uninitialized string offset messages" for error_reporting(E_ALL), reported by DFaure.%0a* Fix PmTOC, when NumberedHeadings is enabled, to number headings even when the TOC would not be created.%0a* Add [@{$$EachCount}@] pagelist template pseudovariable, containing the count for the current "each" loop.%0a* Add $InputAttrs @@role@@ and @@aria-*@@ form attributes, allow aria-\\w* attributes for the [@(:searchbox:)@] field.%0a* Update documentation.%0a%0a!!! Version 2.2.120 (2019-10-13) [[#v22120]]%0a* Add @@(:[[forms#datalist|input datalist]]:)@@ form element.%0a* Add [@(:details summary="...":)...(:detailsend:)@] [[block markup]].%0a* Fix bugs with guiedit.php/guiedit.js reported by FidelioEspoir.%0a* PmTOC: add max-height and overflow-auto to the block.%0a* Update documentation.%0a%0a!!! Version 2.2.119 (2019-10-03) [[#v22119]]%0a* Update for PHP 7.4 "string offset with curly braces is deprecated".%0a* Add @@required="required"@@ attributes to input author/uploader fields when $EnableUploadAuthorRequired or $EnablePostAuthorRequired are set.%0a* Add @@required="required"@@ attributes to the "upload file" element (to prevent posting the form without an attached file).%0a* Add ObfuscateLinkIMap() based on Cookbook:DeObMail, default disabled.%0a* GuiEdit: Add FixUrl button based on Cookbook:FixURL default disabled, add $EnableGuiEditFixUrl;%0a* EditForm: Add features from Cookbook:NotSavedWarning, default disabled, add $EnableNotSavedWarning.%0a* EditForm: Add scroll position to edit text area will be remembered on save-and-edit and preview.%0a* EditForm: Add $EnableEditAutoText and features from Cookbook:EditHelp. %0a* Add $PmTOC, [@(:toc:)@], [@(:notoc:)@], based on a simplified variant of Cookbook:AutoTOC.%0a* Fix bug with pagelist while preview, reported by Finar.%0a* Add $EnableSortable, basic sortable tables based on public domain code from [[https://github.com/tofsjonas/sortable|Jonas Earendel]].%0a* Add $EnableRCDiffBytes based on Cookbook:DeltaBytesRecentChanges. %0a* Add $EnableSimpleTableRowspan replicating features of Cookbook:RowspanInSimpleTables.%0a* Add $WikiPageCSSFmt enables CSS in a wiki page, based on Cookbook:LocalCSS.%0a* Add $EnableHighlight code highlight feature compatible with "highlight.js".%0a* Attachlist @@ext=@@ and @@names=@@ arguments now accept patterns and negatives like @@ext=jpg,png@@, @@ext=-pdf@@, or @@names=-th*---*.jpg@@.%0a* Attachlist: allow both ext= and names= to cohabitate.%0a* MarkupExpr: remove unused declaration.%0a* EditAutoText: use event.ctrlKey and event.shiftKey instead of 2 functions.%0a* Redirect: add 3rd argument $redirecturl which can be provided directly%0a* Add $AddLinkCSS['othergroup'] and $AddLinkCSS['samedomain'] can contain link CSS classes.%0a* Update documentation.%0a%0a!!! Version 2.2.118 (2019-08-28) [[#v22118]]%0a* Add $EnablePreviewChanges and PreviewDiff() based on Cookbook:PreviewChanges.%0a* Update documentation.%0a%0a!!! Version 2.2.117 (2019-07-28) [[#v22117]]%0a* Add $EnableUploadAuthorRequired default to $EnablePostAuthorRequired, add Author field in upload form.%0a* Implement partial content indirect downloads (suggested by Christopher Cox, required for embedded video on iOS).%0a* Add allowed upload video extensions 'm4v' and '3gp'.%0a* Fix lowercase "Content-Disposition" header for downloads.%0a* Update documentation.%0a%0a!!! Version 2.2.116 (2019-06-19) [[#v22116]]%0a* Add $PageListVarFoldFn, defaults to $StrFoldFunction, for international case-insensitive matches of page (text) variables.%0a* Update documentation.%0a%0a!!! Version 2.2.115 (2019-05-13) [[#v22115]]%0a* Responsive skin: Simplify CSS for custom backgrounds, remove repetition.%0a* Update documentation.%0a%0a!!! Version 2.2.114 (2019-04-02) [[#v22114]]%0a* Fix bug with input select lists where an already defined id= attribute may get overwritten.%0a* Vardoc: Move the id= attribute from a standalone anchor to the definition term element (allows ":target" styling).%0a* Vardoc: Localize table header and link text (suggested by Michael F. Wolff).%0a* Add $SkinTemplateIncludeLevel, IncludeTemplate skin directive.%0a* Add input "tel" type, and attribute "pattern". Fix classnames of new input types.%0a* Update documentation.%0a%0a!!! Version 2.2.113 (2019-03-01) [[#v22113]]%0a* Add input button element.%0a* Add $EnableInputDataAttr.%0a* Update documentation.%0a%0a!!! Version 2.2.112 (2019-01-09) [[#v22112]]%0a* Fix switch break for PHP 7.3, reported by Hans-Jürgen Godau.%0a* Update documentation.%0a%0a!!! Version 2.2.111 (2018-12-08) [[#v22111]]%0a* Add @@$[==]Id$@@ subversion keyword to pmwiki.php, requested by Peter Gragert.%0a* Fix responsive skin search form max-width in desktop mode, reported by Moni Kellermann. %0a* Add $DenyHtaccessContent variable. Update protective .htaccess files.%0a* Add tz= and locale= arguments to [@{(ftime )}@] [[MarkupExpression(s)]] (PHP5+).%0a* Update documentation.%0a%0a!!! Version 2.2.110 (2018-11-05) [[#v22110]]%0a* Fix [@{(substr )}@] markup expression with non-number arguments could cause warnings, reported by Simon.%0a* Add $PageListSortCmpFunction, default to current 'strcasecmp'.%0a* Add global $MarkupMarkupLevel which changes when the processing is inside [@(:markup:)@] blocks.%0a* Fix inconsistent white space with inline @@[=[@escaped code@]=]@@, reported by Dannybpng.%0a* Update documentation.%0a%0a!!! Version 2.2.109 (2018-07-09) [[#v22109]]%0a* Update pmcrypt() to exclude negative -@groups from hash checking.%0a* Add $EnableMarkupDiag to backtrace all markup calls, suggested by ChuckG.%0a* Fix Path InterMap broken in 2.2.108, reported by ChuckG.%0a* Update documentation.%0a%0a!!! Version 2.2.108 (2018-07-05) [[#v22108]]%0a* Add $PCCFOverrideFunction.%0a* $AuthUserPageFmt can now be an array of page names.%0a* Add $PageCacheFileFmt default to "%25s/%25s,cache" (like before), allowing custom cache filenames.%0a* Form checkbox labels now have the same tooltip title as the checkbox.%0a* Add [@%25reversed%25@] WikiStyle.%0a* RefCount: add label to checkbox, class to table.%0a* Vardoc: fix markup call, reported by Hans-Jürgen Godau.%0a* pmcrypt() return false when salt appears to be some old PmWiki attribute.%0a* Default InterMap PmWiki URLs have now the HTTPS protocol (suggested by Simon).%0a* Update documentation.%0a%0a!!! Version 2.2.107 (2018-02-02) [[#v22107]]%0a* Fix Forms and Pagelists warnings in PHP 7.2, reported by DFaure.%0a** Fix order=title broken with the previous commit, reported by ChuckG.%0a* Add $MailFunction.%0a* Add ".rtl *" styles.%0a* Update documentation.%0a%0a!!! Version 2.2.106 (2017-12-01) [[#v22106]]%0a* Add pmsetcookie(), $EnableCookieSecure, $EnableCookieHTTPOnly (PITS:01425).%0a* Refactor PageListSort() to make it work for PHP 7.2 without requiring create_function().%0a** Fix ordering broken with the previous commit, reported by ChuckG.%0a* Fix `wikiword markup, reported by Steve Glover.%0a* Update documentation.%0a%0a!!! Version 2.2.105 (2017-11-07) [[#v22105]]%0a* Refactor @@HandleUpload()@@ - add @@UploadSetVars($pagename)@@ to allow custom upload add-ons to set variables.%0a* Fix bug with PQA() that caused invalid HTML with attributes glued together.%0a%0a!!! Version 2.2.104 (2017-10-11) [[#v22104]]%0a* Fix bug with WikiTrails introduced with 2.2.103 (PITS:01422).%0a%0a!!! Version 2.2.103 (2017-10-01) [[#v22103]]%0a* Add pagelist list=grouphomes and fmt=#grouphomes.%0a* Update all scripts for PHP 7.2 (bugtrack).%0a* Make responsive skin also compatible with PmWiki versions 2.2.55 or earlier.%0a* Add *.vtt (web subtitles) as allowed upload extension.%0a* Fix Charset headers for xlpage-iso-*.php%0a* Refactor PageStore class to remove create_function() calls.%0a* Add "title" attribute to input form elements.%0a* Re-add the definition of the $rrep variable in Markup expressions, reported by ChuckG.%0a* Add $AuthLDAPReferrals to set LDAP_OPT_REFERRALS if needed, reported by Kirk Zurell.%0a* Fix missing $pagename for WikiWord links.%0a* Update documentation.%0a%0a%0a!!! Version 2.2.102 (2017-08-05) [[#v22102]]%0a* Revert fix for PITS:01300, the markup engine breaks when a text variable content is longer than 2699 characters.%0a* Add a text box in [[SiteAdmin.AuthList]] to allow filtering of the results.%0a%0a!!! Version 2.2.101 (2017-07-30) [[#v22101]]%0a* Rename function PageStore to __construct, to prevent PHP 7 strict or deprecated notices.%0a%0a!!! Version 2.2.100 (2017-07-30) [[#v22100]]%0a* Workaround around Subversion incompatibility with @@$Author[==]:...$@@ string not intended as SVN keyword.%0a* Responsive skin: add spacing above the #wikitext block, similar to the default skin.%0a* Update documentation.%0a%0a!!! Version 2.2.99 (2017-06-26) [[#v2299]]%0a* Fix Preview didn't show changes due to $ROSPatterns (PITS:01408).%0a* Remove markup rules for previewing author signature not needed anymore.%0a* Fix bug and warning appearing in PHP 4 installations.%0a* Update Wikipedia intermap entry (secure https).%0a* Fix bug with [@[[%3c%3c]]@] styles "clear:both".%0a* {-Fix incomplete definition of page text variable halts the rendering (PITS:01300).-}%0a* Fix $Version didn't work as a vardoc link.%0a* Update documentation.%0a%0a!!! Version 2.2.98 (2017-05-31) [[#v2298]]%0a* Fix WikiStyles where "pct" was incorrectly dropped from some classnames (PITS:01404).%0a* Hide warning about missing intermap file.%0a* Add pmwiki-responsive skin, based on modified Skins:2016.%0a* Responsive skin: Hide icon if PageActions empty. Fix "close" icon didn't appear for the PageActions block. Unrestrict menu height. Switching from portrait view with menu open to landscape: page should not be greyed out (PITS:01406). Landscape view: fix overflow for search form in Epiphany (likely Safari and other AppleWebKit-based browsers). Move the %3cmain> tag up to allow scrolling of the whole #wikibody. Large preformatted blocks will also scroll in the mobile view. Set limit for desktop layout to 50em~800px. Scrollable tables via cosmetic JavaScript.%0a* Both skins: Set default text color (PITS:01406).%0a* Fix Deprecated notice for Site.AuthUser password attributes.%0a* Vardoc links now use MakeLink() to allow a custom LinkPage function, fix bug reported by ChuckG.%0a* $InclCount now counts per browsed page (for multi-page processing recipes).%0a* Make $markupid variable available to markup replacement functions.%0a* Refactor function ReplaceOnSave to allow easier calling from recipes (PITS:01407).%0a* Enable *.mkv as allowed video extension.%0a* Fix bug with attachlist markup.%0a* Fix alternative bold/italics markup in sample-config.php (PITS:01400).%0a* Fix lost space in markup tables, replace markup tables %3ccode> with %3cpre> and add style "pre-wrap" (reported by ChuckG).%0a* Update documentation.%0a%0a!!! Version 2.2.97 (2017-04-07) [[#v2297]]%0a* Fix bug concerning $ScriptUrl when $EnablePathInfo is set, introduced in 2.2.96, reported by 3 users.%0a* Update documentation.%0a%0a!!! Version 2.2.96 (2017-04-05) [[#v2296]]%0a* Fix severe PHP code injection vulnerability, reported by Gabriel Margiani.%0a** Filter $pagename to exclude certain characters.%0a** Add $pagename_unfiltered in case a recipe requires it.%0a* Update documentation.%0a%0a!!! Version 2.2.95 (2017-02-28) [[#v2295]]%0a* Update documentation.%0a%0a!!! Version 2.2.94 (2017-01-31) [[#v2294]]%0a* Strip both .html and .htm extensions (Cookbook:HtmlUrls-Talk).%0a* Clear $PageExistsCache[$pagename] when a page is created or deleted (PITS:01401).%0a* Update documentation.%0a%0a!!! Version 2.2.93 (2016-12-31) [[#v2293]]%0a* Update documentation.%0a%0a!!! Version 2.2.92 (2016-11-30) [[#v2292]]%0a* Skip checking for $AllowPassword if empty or false.%0a* Enable FmtPageName() to expand PageVariables with asterisks.%0a* Update documentation.%0a%0a!!! Version 2.2.91 (2016-09-30) [[#v2291]]%0a* Update documentation.%0a%0a!!! Version 2.2.90 (2016-08-31) [[#v2290]]%0a* Add action parameter to upload form URL.%0a* Add @@imgonly@@ and @@imgcaption@@ CSS classes (PITS:01390).%0a* Fix plus-links with suffix [@[[Page|+]]s@] (PITS:01392).%0a* Update documentation.%0a%0a!!! Version 2.2.89 (2016-07-30) [[#v2289]]%0a* Add identifiers to Site.EditForm elements to enable easier styling.%0a* Add $SimpleTableDefaultClassName, default unset (PITS:00638).%0a* Add temporary $new['=html'] entry, in SaveAttributes().%0a* Fix superfluous line breaks in SiteAdmin.AuthList.%0a* Add optional placeholder attribute in [@(:searchbox:)@].%0a* Add $SearchBoxInputType, default 'text'.%0a* Set $HTMLStylesFmt via SDVA() in vardoc.php, urlapprove.php, and xlpage-utf-8.php.%0a* Fix vardoc.php to recognize and link variables $pagename, $Author, $Skin, and to sort case insensitively.%0a* Update documentation.%0a%0a!!! Version 2.2.88 (2016-06-29) [[#v2288]]%0a* Fix invalid HTML output of WikiTrail links (PITS:01388).%0a* Add 4th argument $double_encode to PHSC() for safe replacement of htmlspecialchars().%0a* Add page variable [@{$SiteAdminGroup}@] (PITS:00951).%0a* Update documentation.%0a%0a!!! Version 2.2.87 (2016-05-31) [[#v2287]]%0a* Add $HTMLTagAttr, to allow inclusion of lang, manifest and other attributes.%0a* Add $EnableRevUserAgent, $FmtV['$DiffUserAgent'].%0a* Fix relative link in [[Site.UploadQuickReference]].%0a* Update documentation.%0a%0a!!! Version 2.2.86 (2016-04-28) [[#v2286]]%0a* Fix PageStore() for PHP 7.%0a* Fix $DefaultPasswords for PHP 7.%0a* Update documentation.%0a%0a!!! Version 2.2.85 (2016-03-31) [[#v2285]]%0a* Add svg(z) and SVG(Z) as embeddable image extensions (PITS:00197, PITS:00435).%0a* Add *.svgz as allowed upload extension.%0a* Update documentation.%0a%0a!!! Version 2.2.84 (2016-02-21) [[#v2284]]%0a* Update/fix URL in UPGRADES.txt (PITS:01378).%0a* Fix indent and outdent CSS for RTL languages (PITS:01379).%0a* Add $EnableLinkPlusTitlespaced (PITS:01140).%0a* Update documentation.%0a%0a!!! Version 2.2.83 (2015-12-31) [[#v2283]]%0a* Update documentation.%0a%0a!!! Version 2.2.82 (2015-11-30) [[#v2282]]%0a* Enable stripmagic() to process arrays recursively.%0a* Update documentation.%0a%0a!!! Version 2.2.81 (2015-10-31) [[#v2281]]%0a* Fix single line PageTextVariable definition (reported by HansB).%0a* Add .ltr and .rtl CSS classes for UTF-8.%0a* Update documentation.%0a%0a!!! Version 2.2.80 (2015-09-30) [[#v2280]]%0a* Modify [@(:searchbox:)@] to use type="search" input.%0a* Update documentation.%0a%0a!!! Version 2.2.79 (2015-08-27) [[#v2279]]%0a* Modify guiedit.js::insMarkup() to accept a custom function name processing the text, and a custom id for the text area.%0a* Add CSS basic colors 'fuchsia','olive','lime','teal','aqua','orange' and 'grey' as WikiStyles (PITS:01373).%0a* Add $EnableROSEscape, default 0 (PmWiki:TextFormattingRules-Talk).%0a* Remove 'target' attribute in input forms (breaks PmForm).%0a* Add HTML5 input types email, url, number, date, search.%0a* Add attribution in script comments.%0a* Update documentation.%0a%0a!!! Version 2.2.78 (2015-07-21) [[#v2278]]%0a* Update $RobotPattern with current user agents.%0a* Accept 'target' attribute in input forms.%0a* Update documentation.%0a%0a!!! Version 2.2.77 (2015-06-19) [[#v2277]]%0a* Add generic function MakeNames() to process MakePageNames().%0a* Extend [@(:if attachments:)@] to specify file and page names (PITS:01087).%0a* Optimize PageStore::recode() to cache utf8_decode and utf8_encode callbacks.%0a* Add [@{$WikiTitle}@] page variable.%0a* Update documentation.%0a%0a!!! Version 2.2.76 (2015-05-31) [[#v2276]]%0a* Recover posted arrays (indexed or associative, not multidimensional) when a password is required (PITS:00835, PITS:01110).%0a* Add label argument to checkbox and radio inputs (PITS:01367).%0a* Enable PHSC() to process arrays recursively.%0a* Enable processing of arrays as input values (PITS:01032).%0a* Add CSS classes to standalone image div and caption (PITS:00489, PITS:00497).%0a* Update documentation.%0a%0a!!! Version 2.2.75 (2015-04-26) [[#v2275]]%0a* Fix uploads to respect $EnableReadOnly.%0a* Escape HTML special characters when printing failed callback creation.%0a* Add [[Functions#pmcrypt | pmcrypt()]] for PHP 5.6 compatibility.%0a* Add markup for HTML5 [[PmWiki:BlockMarkup#semantic | semantic ]] tags article, section, nav, header, footer, aside, address.%0a* Update documentation.%0a%0a%0a!!! Version 2.2.74 (2015-03-28) [[#v2274]]%0a* Allow translation of the "OK" string in forms (PITS:01363).%0a* Update documentation.%0a%0a!!! Version 2.2.73 (2015-02-28) [[#v2273]]%0a* Update documentation.%0a%0a!!! Version 2.2.72 (2015-01-27) [[#v2272]]%0a* Enable markup debug messages even when debug_backtrace() is not available.%0a* Add $AbortFunction.%0a* Restore ability to set a custom $MarkupWordwrapFunction, add $MarkupWrapTag (related to earlier fix for PITS:01360).%0a* Update documentation.%0a%0a!!! Version 2.2.71 (2014-12-29) [[#v2271]]%0a* Add $DraftActionsPattern.%0a* Enable "input default source" parameter to contain multiple pages.%0a* Enable "pagelist request" parameter to contain a list of (dis)allowed parameters.%0a* Enable Markup() backtrace for ?action=ruleset.%0a* Fix strict warning for blacklisted uploads (PITS:01359).%0a* Fix wrong hard wrap in [@(:markup:)@] code examples (PITS:01360).%0a* Update documentation.%0a%0a!!! Version 2.2.70 (2014-11-08) [[#v2270]]%0a* Update documentation.%0a%0a!!! Version 2.2.69 (2014-10-13) [[#v2269]]%0a* Fix DRange() for ISO-8601 dates +/- X days.%0a* Fix wording in [[Site.UploadQuickReference]].%0a* Update documentation.%0a%0a!!! Version 2.2.68 (2014-09-01) [[#v2268]]%0a* Add Skins: InterMap prefix.%0a* Add signature to [[Site.EditQuickReference]] (PITS:01350).%0a* Allow $PostConfig entries to be launched after per-page customization, before other stdconfig.php inclusions if values%3c50.%0a* Add [[WikiStyles]] clear, min and max width and height (PITS:00860), fix [=%25p class=...%25=] with more than one space.%0a* Update documentation.%0a%0a!!! Version 2.2.67 (2014-08-02) [[#v2267]]%0a* Fix InputDefault/PageTextVariables inconsistency (PITS:01337).%0a* Update documentation.%0a%0a!!! Version 2.2.66 (2014-07-02) [[#v2266]]%0a* Fix Author in Notifcations when deleting pages (PITS:01112).%0a* Exclude "_" to be considered as a function name in various $*Patterns.%0a* Update documentation.%0a%0a!!! [[#v2265]] Version 2.2.65 (2014-06-07)%0a* Fix [={$$PseudoVars}=] containing [={*$PageVars}=] in [[PageList Templates]].%0a* Fix wording in scripts/.htaccess (PITS:01345).%0a* Fix fixperms() if directory owner is root (PITS:01346).%0a* Update documentation.%0a%0a!!! [[#v2264]] Version 2.2.64 (2014-05-08)%0a* Add [={(mod)}=] [[PmWiki/MarkupExpressions | markup expression]].%0a* Add tel: and geo: [[PmWiki/LinkSchemes | URI schemes]].%0a* Add $SysMergePassthru to allow Merge() to use passthru() instead of popen().%0a* Update documentation.%0a%0a!!! [[#v2263]] Version 2.2.63 (2014-04-05)%0a* Allow [[PmWiki/Forms | form]] elements to have a dash in the attribute names.%0a* Strip magic slashes for pagelist/search request vars.%0a* Allow input attributes readonly, placeholder and autocomplete for HTML5 sites.%0a* Update documentation.%0a%0a!!! [[#v2262]] Version 2.2.62 (2014-02-28)%0a* Add $CallbackFnTemplates["return"].%0a* Add 4th argument to Markup_e() - $template.%0a* Add $EnableTableAutoValignTop.%0a* Update documentation.%0a%0a!!! [[#v2261]] Version 2.2.61 (2014-01-31)%0a* Add $TableCellAlignFmt.%0a* Remove unused snippet in prefs.php (reported by Oliver Betz).%0a* Remove unused calls to PSS() (reported by John Rankin).%0a* Update documentation.%0a%0a!!! [[#v2260]] Version 2.2.60 (2014-01-12)%0a* Revert to previous pmwiki.css file.%0a%0a!!! [[#v2259]] Version 2.2.59 (2014-01-11)%0a* Fix checking multiple posted fields in blocklist.php (reported by Randy Brown).%0a* Allow Markup_e() to accept a callback as well as code.%0a* Fix "+" shortcut for internal anchor links.%0a* Disable HTML cache if count($_GET)>1 not >2 (PITS:01278).%0a* Fix query string if a "?" is encoded to uppercase "%253F".%0a* Replace CSS font sizes from points (fixed) to percents (relative) for the default skin.%0a* Fix nested conditionals containing $pagename (reported by Benjamin Grassineau).%0a* Update documentation.%0a%0a!!! [[#v2258]] Version 2.2.58 (2013-12-25)%0a* Allow $LinkUpload to be usable in [=(:attachlist:)=].%0a* Enable customizations of [=(:input auth_form:)=].%0a* Remove unused variable $Block in FormatTableRow(), reported by Klonk.%0a* Fix $EnableBlocklistImmediate to check all posted fields for blocked terms.%0a* Add $GLOBALS['MarkupToHTML'] to pass parameters such as $pagename to markup calls.%0a* Update documentation.%0a%0a!!! [[#v2257]] Version 2.2.57 (2013-11-03)%0a* Encode international character used for detection of a recode function.%0a* Enable $IMapLinkFmt['Attach:'] to be used in [[PmWiki/PageDirectives#attachlist|[=(:attachlist:)=]]] links.%0a* Add $MakePageNameSplitPattern.%0a* Update documentation.%0a%0a!!! [[#v2256]] Version 2.2.56 (2013-09-30)%0a* Work in progress to remove the core dependency of the deprecated "eval" feature of the preg_replace() function (PITS:01319).%0a* Add functions PCCF(), PPRE(), PPRA(), Markup_e(), migrating all core calls to these functions.%0a* Fix detection of proper PageStore->recodefn.%0a* Update documentation.%0a%0a%0a!!! [[#v2255]] Version 2.2.55 (2013-09-16)%0a* Add $EnableDraftAtomicDiff (PITS:01007).%0a* Update documentation.%0a%0a!!! [[#v2254]] Version 2.2.54 (2013-08-13)%0a* Fix broken page history for draft pages, reported by ChuckG.%0a* Update documentation.%0a%0a!!! [[#v2253]] Version 2.2.53 (2013-07-08)%0a* Show a message when the post has been blocked because of too many unapproved links.%0a* Update documentation.%0a%0a!!! [[#v2252]] Version 2.2.52 (2013-06-08)%0a* Add docx, pptx, xlsx upload extentions.%0a* Hide E_DEPRECATED warnings for PHP 5.5.%0a* Update documentation.%0a%0a!!! [[#v2251]] Version 2.2.51 (2013-05-08)%0a* Update url to MoinMoin's blocklist.%0a* Comment-out blacklist.chongqed.org as the domain appears to have expired.%0a* Fix possible XSS vulnerability in prefs.php, discovered today.%0a* Fix access keys to be a single character.%0a* Fix $AuthorPage if there is a group named the same as the author (PITS:01259).%0a* Update documentation.%0a%0a!!! [[#v2250]] Version 2.2.50 (2013-04-08)%0a* Update documentation.%0a%0a!!! [[#v2249]] Version 2.2.49 (2013-03-09)%0a* Add $UploadBlacklist array.%0a* Update documentation.%0a%0a!!! [[#v2248]] Version 2.2.48 (2013-02-11)%0a* Fix bug introduced yesterday with some links, reported by Michael Weiner (PITS:01308).%0a%0a!!! [[#v2247]] Version 2.2.47 (2013-02-10)%0a* Enable tooltip titles for links to anchors on the same page.%0a* Update documentation.%0a%0a!!! [[#v2246]] Version 2.2.46 (2013-01-07)%0a* Add third parameter to fixperms() explicitly setting the permissions.%0a* Add $UploadPermAdd and $UploadPermSet variables.%0a* Update documentation.%0a%0a!!! [[#v2245]] Version 2.2.45 (2012-12-02)%0a* Cleanup some PHP notices (PITS:01304).%0a* Update documentation.%0a%0a!!! [[#v2244]] Version 2.2.44 (2012-10-21)%0a* Better display of whitespace in page histories.%0a* Fix definition for PageTextVariables containing a dash (PITS:00978).%0a* Update documentation.%0a%0a!!! [[#v2243]] Version 2.2.43 (2012-09-20)%0a* Allow for HTML attribute names to contain dashes, eg. data-transition, data-role etc.%0a* Remove warning when previewing Site.EditForm.%0a* Update documentation.%0a%0a!!! [[#v2242]] Version 2.2.42 (2012-08-20)%0a* Convert the line-endings in the docs/ directory to \r\n compatible with Windows.%0a* Modify PHSC() to call htmlspecialchars() with a single-byte encoding argument.%0a* Update documentation.%0a%0a!!! [[#v2241]] Version 2.2.41 (2012-08-12)%0a* Change $KeepToken to "\034\034" which is compatible with more encodings.%0a* Update documentation.%0a%0a!!! [[#v2240]] Version 2.2.40 (2012-07-21)%0a* Add PHSC() helper function as a replacement of htmlspecialchars() for PHP 5.4 (PITS:01292).%0a* Update documentation.%0a%0a!!! [[#v2239]] Version 2.2.39 (2012-06-25)%0a* Fix URL encoding of attachment links.%0a* Update documentation.%0a%0a!!! [[#v2238]] Version 2.2.38 (2012-05-21)%0a* Fix "Wrong parameter count for utf8_decode" warning, reported by Simon.%0a* Update documentation.%0a%0a!!! [[#v2237]] Version 2.2.37 (2012-05-01)%0a* Add page filename encoding functions.%0a* Better handling of dots in [@[[#anchor_1.2]]@] sections (PITS:01285).%0a* Expand PageVariables in [[PageList templates]] defaults (PITS:01282).%0a* Add test for iconv() and mb_convert_encoding(), refactor recode().%0a* Update documentation.%0a%0a!!! [[#v2236]] Version 2.2.36 (2011-12-28)%0a* Add $EnableOldCharset variable and $page["=oldcharset"] entry.%0a* Refactor PageStore->recode() to recover Windows-1252 characters.%0a* Add exit line to xlpage-iso-8859-2.php (PITS:01275).%0a* Fix difference in defining and removing "invisible" PTVs.%0a* Update documentation.%0a%0a!!! [[#v2235]] Version 2.2.35 (2011-11-11)%0a* Fix critical PHP injection vulnerability (PITS:01271, reported by Egidio Romano).%0a* Important change: Disable script loading from XLPage().%0a* Move the processing of [@[[link|+]]@] inside LinkPage() and delete markup rule from stdmarkup.php.%0a* Modify MakeLink() to better handle link titles.%0a* Add optional $LinkTitleFunction allowing recipes to customize the link titles.%0a* Fix ReadTrail() to better handle links with titles.%0a* Add title attributes for the HTML templates in the @@ $LinkPage*Fmt @@ variables.%0a* Add upload extensions svg, xcf, ogg, flac, ogv, mp4, webm, odg, epub.%0a* Minor optimization for the MarkupExpressions for UTF-8 strings.%0a* Minor optimization of the rendering of page history.%0a%0a!!! [[#v2234]] Version 2.2.34 (2011-10-10)%0a* Add [[PmWiki/MarkupExpressions]] replacements for UTF-8.%0a* Reset timestamps of Site(Admin).AuthUser to 1000000000, used in upgrades.php.%0a* Update documentation.%0a%0a!!! [[#v2233]] Version 2.2.33 (2011-09-23)%0a* Fix locked states for Site and SiteAdmin GroupAttributes (reported by Brijesh Kothari).%0a* Fix intermap.txt entries PITS: and Wikipedia: to point to their current locations.%0a* Fix refcount.php to produce valid HTML (PITS:01266).%0a%0a!!! [[#v2232]] Version 2.2.32 (2011-09-18)%0a* Add required html xmlns attribute to the print skin template.%0a* Add PageStore->recode() function.%0a* Add $DefaultPageCharset array.%0a* Optimize for speed the inline diff for page history when too many lines were added or deleted.%0a* Update and convert to UTF-8 the documentation.%0a%0a%25note%25 Note: Due to a manipulation error, a version 2.2.31 was created before it was ready for a release.%0a%0a!!! [[#v2230]] Version 2.2.30 (2011-08-13)%0a* Fix $Charset definition in iso-8859-*.php files.%0a* Add $EnableRangeMatchUTF8, set it to 1 to enable range matches in UTF-8.%0a* Update documentation.%0a%0a!!! [[#v2229]] Version 2.2.29 (2011-07-24)%0a* Fix Attach links that were broken with the Path fix in 2.2.28.%0a* Add $IMapLocalPath array containing InterMap prefixes that should be treated as local.%0a%0a!!! [[#v2228]] Version 2.2.28 (2011-07-24)%0a* Fix potential XSS vulnerability in refcount.php (PITS:01262).%0a* Fix bug in Path: links (PITS:01260).%0a* Fix potential XSS vulnerability in custom SitePreferences (PITS:01263).%0a* Update documentation.%0a%0a!!! [[#v2227]] Version 2.2.27 (2011-06-19)%0a* Add block WikiStyle [=%25justify%25=] (PITS:01253).%0a* Remove unused %3cvspace> after a redirection (PITS:01255).%0a* Add ?nodiff=1 parameter for page history to disable diff rendering and show only restore links.%0a* Update documentation.%0a%0a!!! [[#v2226]] Version 2.2.26 (2011-05-21)%0a* Fix ReadTrail(), redundant replacing of hashes, already done in MakePageName().%0a* Update documentation.%0a%0a!!! [[#v2225]] Version 2.2.25 (2011-03-22)%0a* Update documentation.%0a%0a!!! [[#v2224]] Version 2.2.24 (2011-02-15)%0a* Add [@{$$PageTrailDepth}@] pseudovariable for [[PageList templates]].%0a* Fix PageVar(), add $authpage array for an authenticated page data, removed $EnablePageVarAuth.%0a* Update documentation.%0a%0a!!! [[#v2223]] Version 2.2.23 (2011-01-25)%0a* Default $EnablePageVarAuth to 0 until the resolution of PITS:01242.%0a%0a!!! [[#v2222]] Version 2.2.22 (2011-01-16)%0a* Add $EnableXLPageScriptLoad to XLPage() to prevent editors from changing the encoding.%0a* PageVariables now respect authentications (PITS:01213).%0a* Add $EnablePageVarAuth.%0a* Update documentation.%0a%0a!!! [[#v2221]] Version 2.2.21 (2010-12-14)%0a* Fix potential XSS vulnerability, reported by DFaure.%0a* Fix invalid HTML for simple table captions, reported by JL.%0a* Fix WikiStyles could work not properly if a value was empty like accesskey="".%0a%0a!!! [[#v2220]] Version 2.2.20 (2010-12-14)%0a* Fix Pagelist [={$$variable}=] didn't work in template none (PITS:01212).%0a* Fix interface access keys in browse mode (PITS:01188).%0a* Add PmL10n: intermap prefix for the Localization/ group on pmwiki.org (PITS:01180).%0a* Fix AuthUser excluding members didn't work (PITS:01201).%0a* Update documentation.%0a%0a!!! [[#v2219]] Version 2.2.19 (2010-11-10)%0a* Update documentation.%0a%0a!!! [[#v2218]] Version 2.2.18 (2010-09-04)%0a* Fix $SaveAttrPatterns to skip nested conditionals (reported by RandyB).%0a* Fix RecentChanges when an edit summary contains the dollar sign (PITS:01217).%0a* Fix RDF feed number of elements (PITS:01198).%0a* Update documentation.%0a%0a!!! [[#v2217]] Version 2.2.17 (2010-06-20)%0a* Add tabindex as a valid form attribute (PITS:01190).%0a* Collapse adjacent insertions in DiffRenderSource (PITS:01192).%0a* Fix HandleDownload to flush() output before exit (PITS:01199).%0a* Fix HandleDownload to respect $EnableIMSCaching (PITS:01191).%0a* Add $PostConfig functions and scripts, loaded after stdconfig.php (PITS:01132).%0a* Add $AuthUserPat variable for the regexp pattern in AuthUserId() (PITS:01202).%0a* Pass $authlist as last parameter to $AuthUserFunctions (PITS:01197).%0a* Fix "exists" conditional to work with old link markup.%0a* Update documentation.%0a%0a!!! [[#v2216]] Version 2.2.16 (2010-05-10)%0a* Allow "exists" conditional to accept wildcards (PITS:01184)%0a* Fix GUI button [=%25center%25=] which didn't work correctly.%0a* Fix incorrectly parsed quote in PQA(), possible script injection (discovered by Hanno Boeck).%0a%0a!!! [[#v2215]] Version 2.2.15 (2010-03-27)%0a* Add @@ (Auth|Edit)Form @@ to auto-translated titles.%0a* Fix [@ (:if auth LEVEL:) @] to respect $HandleAuth (PITS:01164).%0a* Skip loading of the second half of draft.php if $action!="edit".%0a* Fix bug with [@ (:template none:) @] introduced in 2.2.14, reported by Holger.%0a* Fix HandleDownload() to use binary file-read.%0a%0a!!! [[#v2214]] Version 2.2.14 (2010-02-27)%0a* Fix inline styles in WikiTrails (PITS:01121).%0a* Add a negation parameter to pagelist first/last templates (PITS:01127).%0a* Refactor FPLTemplateFormat(), move repeated code blocks into FPLExpandItemVars().%0a* Add $EnableUndefinedTemplateVars allowing to hide or show undefined template/include [={$$variables}=] (PITS:01152).%0a* Add "title" attribute to external links (PITS:00657).%0a* Add FmtPageTitle() to allow automatic i18n titles for RecentChanges and other technical pages (PITS:01157).%0a* Update documentation.%0a%0a!!! [[#v2213]] Version 2.2.13 (2010-02-21)%0a* Replace deprecated in PHP 5.3 function split() with explode().%0a* Add $WordDiffFunction default to PHPDiff().%0a* Use existing border colors as highlighting background.%0a* Refactor/optimize DiffRenderSource(), merge with DiffRenderInline().%0a* Change default history to show word-level highlighting.%0a* Fix bug with $DiffKeepNum which kept less revisions than it should.%0a* Fix RetrieveAuthPage() call from HandleDiff().%0a* Update documentation.%0a%0a!!! [[#v2212]] Version 2.2.12 (2010-02-17)%0a* Allow a custom $DiffHTMLFunction to skip the line rendering if it returns false.%0a* Add $EnableDiffInline, simple word-level diffs (PITS:00571).%0a* Update documentation.%0a%0a!!! [[#v2211]] Version 2.2.11 (2010-02-14)%0a* Break PrintDiff() into customizable functions (PITS:01106).%0a* Add anchors to individual diffs (PITS:00796).%0a* Remove unused $RecipeInfo definition in markupexpr.php (reported by P.Bowers).%0a* Add [=(:head:) and (:headnr:)=] table directives (PITS:00535).%0a* Fix $GroupPattern and $NamePattern in xlpage-utf-8.php.%0a* Update documentation.%0a%0a!!! [[#v229]] [[#v2210]] Version 2.2.9, 2.2.10 (2010-01-17)%0a* Fix i18n string in PasswdVar(), reported by SteP.%0a* Fix sample-config.php with correct information about $EnableWSPre (PITS:01145).%0a* Fix range searches for wikis in UTF-8 (reported by Maxim).%0a* Fix global variable $StringFolding in scripts/xlpage-utf-8.php.%0a* Fix markup for italics in creole.php.%0a* Fix previews for PTVs, [[PageList templates]] and included sections (PITS:01098).%0a* Add $DiffKeepNum - number of revisions kept, even if older than $DiffKeepDays.%0a* Add Yandex to robots.php.%0a* Change default $EnableRelativePageVars to 1 (PITS:01145).%0a* Add fifth parameter to SetProperty() : keep existing property.%0a* Add $EnablePageTitlePriority (PITS:00266, PITS:00779).%0a* Update documentation.%0a%0a!!! [[#v228]] Version 2.2.8 (2009-12-07)%0a* Fix apostrophes in Author field (PITS:01155).%0a* Fix Condition "exists" for PHP 5.3 (PITS:01156).%0a* Update documentation.%0a%0a!!! [[#v227]] Version 2.2.7 (2009-11-08)%0a* Fix GlobToPCRE() to work with !excl and -excl with PHP 5.3 (PITS:01149).%0a* Fix HandleDownload() correctly quote the filenames (PITS:01150).%0a* Fix SessionAuth() for PHP 5.3, the $_REQUEST array doesn't contain the $_COOKIE array (PITS:01141).%0a* Fix default timezone for PHP 5.3 (PITS:01141).%0a* Update documentation.%0a%0a!!! [[#v226]] Version 2.2.6 (2009-10-04)%0a* Escape apostrophes for multiline textarea/hidden form fields.%0a* Fix global unset of $MarkupRules in [[PmWiki/CustomMarkup|Markup()]] and DisableMarkup(), reported by D.Faure.%0a* Fix call to BuildMarkupRules() in MarkupToHTML(), suggested by Pm.%0a* Allow disabling of $PageListFilters and $FPLTemplateFunctions if set to -1 and thus allow replacing a core function with a custom one.%0a* Fix DRange() returned timestamps +1min or +1day when it shouldn't (PITS:01125).%0a* Add $MarkupWordwrapFunction to allow custom [@(:markup:)@] line width for multibyte wikis (PITS:00703).%0a* Add $MakeUploadNamePatterns to allow custom filename normalization for uploads.%0a* Add a fourth argument to PostRecentChanges() to allow this function to be called with a custom $RecentChangesFmt array.%0a* Add $RecentUploadsFmt, to allow logging of new uploads to the RecentChanges pages (PITS:00088).%0a* Fix Notify for some installations in safe_mode (PITS:00976).%0a* Add $HTMLHeaderFmt['guiedit'] variable in guiedit.php to allow customization (PITS:01146).%0a* Update documentation.%0a%0a!!! [[#v225]] Version 2.2.5 (2009-08-25)%0a* Add *.7z as accepted upload extension (PITS:00813).%0a* Fix global variable $HandleAttrFmt in HandleAttr (PITS:01126).%0a* Allow brackets in input element names (PITS:01131).%0a* Fix CSS class applied twice (PITS:01071).%0a* Fix Not-Modified headers could prevent caching (PITS:00802).%0a* Break FPLTemplate() into configurable sub-parts (PITS:01102).%0a* Add [@(:template none:)@] section for [[PageList templates]].%0a* Fix attr-protected page could be deleted with edit permissions (PITS:00238).%0a* Update documentation.%0a%0a!!! [[#v224]] Version 2.2.4 (2009-07-16)%0a* Fix bug with page attributes, which somehow didn't make it in the 2.2.3 release.%0a* Fix bug with HTML entities in XLPages introduced earlier today in 2.2.3 (reverted, PITS:01114).%0a%0a!!! [[#v223]] Version 2.2.3 (2009-07-16)%0a* Fix action=logout could incorrectly set a session cookie (PITS:01062).%0a* Fix page history trim in vardoc.php (PITS:01103).%0a* Add $EnableUploadGroupAuth, use group password for downloads (PITS:01104).%0a* Fix recursive PTV loops, added $MaxPageTextVars (PITS:00915, PITS:01099).%0a* Fix mkdirp() messages for absolute paths (PITS:00396).%0a* Fix sample-config.php order for urlapprove.php (PITS:01037).%0a* Fix broken signature links on preview.%0a* Fix crypt.php (action=crypt) could malfunction for passwords with quotes or apostrophes.%0a* Fix @@ @_site_*@@ passwords to work in GroupAttributes (PITS:00836, PITS:00998).%0a* Fix possible XSS vulnerabilities, reported by Michael Engelke.%0a* Update documentation.%0a%0a!!! [[#v222]] 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!!! [[#v221]] 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!!! [[#v220]] 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!!! [[#older]] Older versions%0a[[(PmWiki:)ChangeLog Archive]] - changes prior to version 2.2.0.%0a
+time=1704806020
diff --git a/wikilib.d/PmWiki.CustomMarkup b/wikilib.d/PmWiki.CustomMarkup
index 4fa481d2..2ccc5b23 100644
--- a/wikilib.d/PmWiki.CustomMarkup
+++ b/wikilib.d/PmWiki.CustomMarkup
@@ -1,9 +1,9 @@
version=pmwiki-2.3.29 ordered=1 urlencoded=1
author=simon
charset=UTF-8
-csum=add (hopefully) clarity about ordering (+230)
+csum=link to Cookbook/MarkupDirectiveFunctions (+170)
name=PmWiki.CustomMarkup
-rev=197
-targets=PmWiki.PageTextVariables,PmWiki.Links,PmWiki.CustomMarkup,PmWiki.DebugVariables,Cookbook.Cookbook,PmWiki.LocalCustomizations,Cookbook.ParseArgs,PmWiki.ReleaseNotes,PmWiki.Functions,PmWiki.BasicVariables,PmWiki.CustomMarkup-Talk,PmWiki.MailingLists,Cookbook.JavaScript,Cookbook.JavaScript-Editable,PmWiki.Skins,PmWiki.LayoutVariables,PmWiki.CustomMarkupAlt,Category.Markup,!Markup
-text=(:Summary: Using the Markup() function for custom wiki syntax; migration to PHP 5.5:)%0a(:Audience: administrators (intermediate) :)%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 "[[https://www.php.net/manual/en/function.preg-replace.php | preg_replace]]" function.%0a%0a!! Introduction%0aRules are added to the translation engine via PmWiki's %25hlt php%25@@Markup()@@ function, which looks like%0a->%25hlt php%25[@Markup($name, $when, $pattern, $replace); # if no evaluation is needed, or if PHP %3c 5.5@]%0a->%25hlt php%25@@Markup($name, $when, $pattern, $replace_function); # if evaluation is needed@@'%0a'^#^' DEPRECATED, will not work as of PHP 7.2%0a->@@{-Markup_e($name, $when, $pattern, $replace); # if evaluation is needed and 5.5%3c=PHP%3c=7.1-}@@%0a%0a* %25hlt php%25[@$name@] is a unique name (a string) given to the rule%0a* %25hlt php%25[@$when@] says when the rule should be applied relative to other rules or phases, can be preceded by "@@%3c@@" or "@@>@@"%0a* %25hlt php%25[@$pattern@] is the pattern to be searched for in the markup text%0a* %25hlt php%25[@$replace@] is the text or HTML that should replace the matched pattern.%0a* %25hlt php%25[@$replace_function@] is the name of the function which should be called with the match, and should return the replacement.%0a%0aFor example, here's the code that creates the rule for %25pmhlt%25[@''emphasized text''@] (in ''@@scripts/stdmarkup.php@@''):%0a->%25hlt php%25[@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 %25hlt html%25[@%3cem>@] and [@%3c/em>@].%0a%0a!!! Sequence in which rules are applied%0aThe first two parameters to %25hlt php%25@@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 (or placeholder rules):%0a%0a _begin start of translation%0a [={$var}=] [[Page Text Variables]] happen here.%0a fulltext translations to be performed on the full text %0a split conversion of the full markup text into lines to be processed%0a directives directive processing%0a inline inline markups%0a links conversion of [[links]], url-links, and WikiWords %0a block block markups%0a style style handling %0a _end end of translation%0a%0a%0aThis argument is normally specified as a left-angle bracket "@@%3c@@" ("before") or a right-angle bracket "@@>@@" ("after") followed by the name of another rule or the name of a phase. %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!!!! [={$var}=] and [=(:if ...:)=] conditionals%0aA 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. This happens before conditional %25pmhlt%25[@(:if...:)@] expressions, which is why page text variables are processed even if they are defined inside [@(:if false:)@].%0a%0a!!! Markup regular expression definition%0aThe third parameter is a Perl-compatible regular expression. Basically, it is a slash, a [[regular expression -> https://www.php.net/manual/en/reference.pcre.pattern.syntax.php]], another slash, and a set of optional [[modifiers -> https://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%0a!!! Replacement text%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 %25hlt html%25[@"%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 %25pmhlt%25[@@@monospaced@@@] text:%0a%0a->%25hlt php%25[@Markup("@@", "inline", "/@@(.*?)@@/", "%3ccode>$1%3c/code>");@]%0a%0aand for a [@[:comment ...:]@] directive that is simply removed from the output:%0a%0a->%25hlt php%25[@Markup("comment", "directives", "/\\[:comment .*?:\\]/", '');@]%0a%0aOkay, now how about the rule for %25pmhlt%25[@'''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 %25hlt php%25@@Markup()@@ can be used to specify the new rule's relationship to any other rule:%0a%0a->%25hlt php%25[@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->%25hlt php%25[@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!! @@%3c:vspace>@@ and @@%3c:block>@@%0a@@%3c:vspace>@@ is inserted into the page text very early in page text processing to preserve an empty line (i.e. two newlines in a row). Very late in processing HTML is inserted into the page output to preserve the empty lines.%0aUnless markup processing detects this it can be ignored.%0a%0a@@%3c:block>@@\\%0aAt the start of a line, @@%3c:block>@@ means "start a block-level element",%0ai.e. break out of the paragraphs.%0a%0aSay you have these markups:%0a* %25pmhlt%25@@(:abc:)@@ returns 'ABC'%0a* %25pmhlt%25@@(:def:)@@ returns '%3c:block>DEF'%0a%0aThis wiki text:%0a Some text%0a %25pmhlt%25@@(:abc:)@@%0a some other text%0a%0awill produce this HTML (simplified):%0a %25hlt html%25[@%3cp>Some text%0a ABC%0a some other text%3c/p>@]%0a%0aWhile this wiki text:%0a Some text%0a %25pmhlt%25@@(:def:)@@%0a some other text%0a%0awill produce this HTML (simplified):%0a %25hlt html%25[@%3cp>Some text%3c/p>%0a DEF%0a %3cp>some other text%3c/p>@]%0a%0aThis is intended for a markup rule to return a block level element like%0a%25hlt html%25@@%3cdiv>...%3c/div>@@ that is not allowed inside an HTML paragraph.%0a%0a!! Other common examples%0a!!! Define a custom markup to produce a specific HTML or Javascript sequence%0a%0aSuppose an admin wants to have a simple "%25pmhlt%25[@(:example:)@]" markup that will always produce a fixed HTML string in the output, such as for a webring, Google AdSense display, or Javascript. The %25hlt php%25@@Markup()@@ call to do this would be:%0a-> %25hlt php%25[@%0aMarkup('example', 'directives',%0a '/\\(:example:\\)/',%0a Keep("%3cdiv class='example'>%3cp>Here is a %0a %3ca target='_blank' href='https://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 %25hlt php%25@@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 https://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%0a->%25red%25 The /e modifier has been deprecated and should not be used in ongoing development. See [[#php55|below]] for more details.%25%25%0a%0aFor older PHP versions (%3c 7.2) an 'e' option on the [@$pattern@] parameter causes the [@$replace@] parameter to be treated as a PHP expression to be evaluated instead of replacement text. To avoid using the deprecated e/ parameter, a markup to produce a random number between 1 and 100 might now look like:%0a-> %25hlt php%25[@%0aMarkup('random', 'directives',%0a '/\\(:random:\\)/',%0a "MyRandomFunction");%0afunction MyRandomFunction() {%0a return rand(1, 100);%0a}%0a@]%0a%0aThis calls the PHP built-in %25hlt php%25@@rand()@@ function and substitutes the directive with the result. Any function can be called, including functions defined in a [[local customization(s)]] file or in [[Cookbook:Cookbook|Cookbook]] recipes.%0a%0aArguments can also be passed by using regular expression capturing parentheses, thus%0a-> %25hlt php%25[@%0aMarkup('randomargs', 'directives',%0a '/\\(:random (\\d+) (\\d+):\\)/',%0a "MyRandomFunction");%0afunction MyRandomFunction($m) {%0a return rand($m[1], $m[2]);%0a}%0a@]%0a%0awill cause the markup %25pmhlt%25[@(:random 50 100:)@] to generate a random number between 50 and 100.%0a%0a->%25note%25 Note: the /e modifier in regular expressions is deprecated since PHP version 5.5, and removed since PHP version 7. The reason for this is, that malicious authors could pass strings that could 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[[#php55]]%0a!! Migration to PHP 5.5 and @@Markup_e()@@%0aSince PHP version 5.5, the @@/e@@ evaluation modifier is deprecated and some hosting providers don't allow its use.%0a%0aRecent [[ReleaseNotes | versions]] of the PmWiki core (2.2.58 and newer) allow new ways to define markup rules without being dependent on the @@/e@@ eval modifier. The historical ways to define markup rules are not removed and work, but may be incompatible with PHP 5.5 installations.%0a%0a''Note: whether your replacement pattern needs evaluation or not, you must use %25hlt php%25@@Markup()@@%25%25 and %25red%25not @@Markup_e()@@.%25%25'' The latter is deprecated and should no longer be used for new recipes and customizations, and old recipes using @@Markup_e@@ should be upgraded to the new format.%0a%0aThe examples below all require PmWiki 2.2.58 (2013-12-25) or newer but the latest version is recommended.%0a%0a>>frame%3c%3c%0aTHE SHORT ANSWER: If your markup regular expression (the 3rd argument) contains an "e" after the closing slash (i.e., @@/regex/e@@ or @@/regex/se@@ or etc) AND your 4th argument is entirely surrounded with double-quotes then you may be able to get away with simply following these simple steps:%0a%0a# Delete the "e" from after the closing slash in the 3rd argument%0a# Create a new replacement function with $m as argument.%0a# In your function, the previous occurrences of '$1', '$2', etc. are now found as $m[1], $m[2], etc. You should no longer call @@[[Functions#PSS|PSS()]]@@.%0a# In your function, call %25hlt php%25@@extract($GLOBALS['MarkupToHTML']);@@ in order to get the current $pagename and @@$markupid@@.%0a# Your function needs to '''return''' the result from the markup processing, either html or another markup.%0a# Set the name of the replacement function as 4th argument of the Markup() call.%0a%0aIn some cases this will not suffice - it depends on how quoting was done - but in many cases following these simple steps will result in PHP 5.5+ compatibility. %0a%0aIf you try those steps and are still having problems then continue to read below for a deeper understanding.%0a>>%3c%3c%0a%0aThe following is acceptable for PHP 5.5+ (compatible with PmWiki 2.2.58+, will also work in PHP 5.4 and older)%0a* %25hlt php%25@@Markup($name, $when, $pattern, $replace)@@; %0a** @@$pattern@@ can no longer have an "@@/e@@" modifier%0a** @@$replace@@ can be a function name (callback) which will be called with the array of matches as argument%0a** instead of a string, the fourth parameter can be a definition of an anonymous function (note you can use anon functions this way since [[https://www.php.net/manual/en/functions.anonymous.php | PHP 5.3.0+]]).%0a%0a* {-@@Markup_e($name, $when, $pattern, $replace)@@;-} %25red%25 DEPRECATED, should no longer be used%0a%0aExamples:%0a%0a* For PHP 5.4 and older, this was acceptable:%25hlt php%25[@%0aMarkup('randomargs', 'directives',%0a '/\\(:random (\\d+) (\\d+):\\)/e',%0a "rand('$1', '$2')"%0a );@]%0a%0a* For PHP 5.5 and newer, $replace is callback, we call %25hlt php%25@@Markup()@@:[@%0aMarkup('randomargs', 'directives',%0a '/\\(:random (\\d+) (\\d+):\\)/',%0a "MyRandom"%0a );%0afunction MyRandom($m) { # $m = matches%0a return rand($m[1], $m[2]); # note "return" is used, unlike before%0a}%0a@]%0a %25note%25 This will also work in PHP 5.4 and older%25%25%0a%0aOther example:%0a* PHP 5.4 or older: %25hlt php%25[@%0aMarkup('Maxi:','%3clinks',%0a "/\\b([Mm]axi:)([^\\s\"\\|\\[\\]]+)(\"([^\"]*)\")?/e",%0a "Keep(LinkMaxi(\$pagename,'$1','$2','$4','$1$2'),'L')"%0a );%0a@]%0a%0a* PHP 5.5 or newer, PmWiki 2.2.58+, $replace is a function name: %25hlt php%25[@%0aMarkup('Maxi:','%3clinks',%0a "/\\b([Mm]axi:)([^\\s\"\\|\\[\\]]+)(\"([^\"]*)\")?/",%0a "LinkMaxi"%0a );%0afunction LinkMaxi($m) {%0a extract($GLOBALS['MarkupToHTML']); # to get $pagename%0a # do stuff with $m[1], $m[2], etc.%0a return Keep($out, 'L');%0a}%0a@]%0a %25note%25 This will also work in PHP 5.4 and older%25%25%0a%0a* $replace can also be a callback function, we call %25hlt php%25@@Markup()@@: [@%0aMarkup('Maxi:','%3clinks',%0a "/\\b([Mm]axi:)([^\\s\"\\|\\[\\]]+)(\"([^\"]*)\")?/",%0a "CallbackMaxi"%0a);%0afunction CallbackMaxi($m) {%0a extract($GLOBALS["MarkupToHTML"]); # to get $pagename%0a return Keep(LinkMaxi($pagename,$m[1],$m[2],$m[4],$m[1].$m[2]),'L');%0a}%0a@]%0a %25note%25 This will also work in PHP 5.4 and older%25%25%0a%0aThe above may seem complicated, but it is actually simpler to use your own callback function:%0a-> %25hlt php%25[@%0aMarkup('mykey', 'directives', %0a '/\\(:mydirective (.*?) (.*?):\\)/i',%0a 'MyFunction'%0a);%0afunction MyFunction($m) {%0a extract($GLOBALS["MarkupToHTML"]);%0a%0a # ... do stuff with $m (the matches), drop PSS() ...%0a%0a return $out; # or return Keep($html);%0a}%0a@]%0a%0aIf you have any questions about the new way to define custom markup, you can ask us [[PmWiki:CustomMarkup-Talk|at the talk page]] or on the [[PmWiki/mailing lists]].%0a%0a%0a!!FAQ%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 %25pmhlt%25(''[@(: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-> %25hlt php%25[@%0aSDV($HideDiscussion, 0); #define var name%0aMarkup('hideDiscussion', '%3c{$var}',%0a '/\\(:nodiscussion:\\)/', 'setHideDiscussion'); %0afunction setHideDiscussion() { %0a global $HideDiscussion; %0a $HideDiscussion = true;%0a} %0a@]%0a%0aThis will enable the %25pmhlt%25@@[=(: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%25hlt php%25@@[=$FmtPV['$HideDiscussion'] = '$GLOBALS["HideDiscussion"]';=]@@%0a%0a%0aQ: It appears that (.*?) does not match newlines in these functions, making the above example inoperable if the text to be wrapped 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). Also make sure your markup is executed during the fulltext phase.%0a %0aQ: [[#PRR]] How can the text returned by my markup function be re-processed by the markup engine? %0aA: If the result of your markup contains more markup that should be processed, you have two options. First is to select a "when" argument that is processed earlier than the markup in your result. For example, if your markup may return [=[[links]]=], your "when" argument could be @@"%3clinks"@@ and your markup will be processed before the links markup. The second option is to call the %25hlt php%25@@PRR()@@ function in your markup definition or inside your markup function. In this case, after your markup is processed, PmWiki will restart all markups from the beginning. %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%0aQ: How do I make a rule that runs once at the end of all other rule processing?%0aA: Use this statement instead of the usual %25hlt php%25@@Markup()@@ call:%0a-->%25hlt php%25@@$MarkupFrameBase['posteval']['myfooter'] = "\$out = onetimerule(\$out);";@@%0a%0aCategory: [[!Markup]]
-time=1703792728
+rev=198
+targets=Cookbook.MarkupDirectiveFunctions,PmWiki.PageTextVariables,PmWiki.Links,PmWiki.CustomMarkup,PmWiki.DebugVariables,Cookbook.Cookbook,PmWiki.LocalCustomizations,Cookbook.ParseArgs,PmWiki.ReleaseNotes,PmWiki.Functions,PmWiki.BasicVariables,PmWiki.CustomMarkup-Talk,PmWiki.MailingLists,Cookbook.JavaScript,Cookbook.JavaScript-Editable,PmWiki.Skins,PmWiki.LayoutVariables,PmWiki.CustomMarkupAlt,Category.Markup,!Markup
+text=(:Summary: Using the Markup() function for custom wiki syntax; migration to PHP 5.5:)%0a(:Audience: administrators (intermediate) :)%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 "[[https://www.php.net/manual/en/function.preg-replace.php | preg_replace]]" function.%0a%0a!! Introduction%0aRules are added to the translation engine via PmWiki's %25hlt php%25@@Markup()@@ function, which looks like%0a->%25hlt php%25[@Markup($name, $when, $pattern, $replace); # if no evaluation is needed, or if PHP %3c 5.5@]%0a->%25hlt php%25@@Markup($name, $when, $pattern, $replace_function); # if evaluation is needed@@'%0a'^#^' DEPRECATED, will not work as of PHP 7.2%0a->@@{-Markup_e($name, $when, $pattern, $replace); # if evaluation is needed and 5.5%3c=PHP%3c=7.1-}@@%0a%0a* %25hlt php%25[@$name@] is a unique name (a string) given to the rule%0a* %25hlt php%25[@$when@] says when the rule should be applied relative to other rules or phases, can be preceded by "@@%3c@@" or "@@>@@"%0a* %25hlt php%25[@$pattern@] is the pattern to be searched for in the markup text%0a* %25hlt php%25[@$replace@] is the text or HTML that should replace the matched pattern.%0a* %25hlt php%25[@$replace_function@] is the name of the function which should be called with the match, and should return the replacement.%0a%0a!! Simple markup%0aSee [[Cookbook:Markup Directive Functions]] a new helper function (as of PmWiki 2.3.11) that makes it easy to add custom markup directives.%0a%0a%0a!!! Example%0aFor example, here's the code that creates the rule for %25pmhlt%25[@''emphasized text''@] (in ''@@scripts/stdmarkup.php@@''):%0a->%25hlt php%25[@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 %25hlt html%25[@%3cem>@] and [@%3c/em>@].%0a%0a!!! Sequence in which rules are applied%0aThe first two parameters to %25hlt php%25@@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 (or placeholder rules):%0a%0a _begin start of translation%0a [={$var}=] [[Page Text Variables]] happen here.%0a fulltext translations to be performed on the full text %0a split conversion of the full markup text into lines to be processed%0a directives directive processing%0a inline inline markups%0a links conversion of [[links]], url-links, and WikiWords %0a block block markups%0a style style handling %0a _end end of translation%0a%0a%0aThis argument is normally specified as a left-angle bracket "@@%3c@@" ("before") or a right-angle bracket "@@>@@" ("after") followed by the name of another rule or the name of a phase. %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!!! [={$var}=] and [=(:if ...:)=] conditionals%0aA 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. This happens before conditional %25pmhlt%25[@(:if...:)@] expressions, which is why page text variables are processed even if they are defined inside [@(:if false:)@].%0a%0a!!! Markup regular expression definition%0aThe third parameter is a Perl-compatible regular expression. Basically, it is a slash, a [[regular expression -> https://www.php.net/manual/en/reference.pcre.pattern.syntax.php]], another slash, and a set of optional [[modifiers -> https://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%0a!!! Replacement text%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 %25hlt html%25[@"%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 %25pmhlt%25[@@@monospaced@@@] text:%0a%0a->%25hlt php%25[@Markup("@@", "inline", "/@@(.*?)@@/", "%3ccode>$1%3c/code>");@]%0a%0aand for a [@[:comment ...:]@] directive that is simply removed from the output:%0a%0a->%25hlt php%25[@Markup("comment", "directives", "/\\[:comment .*?:\\]/", '');@]%0a%0aOkay, now how about the rule for %25pmhlt%25[@'''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 %25hlt php%25@@Markup()@@ can be used to specify the new rule's relationship to any other rule:%0a%0a->%25hlt php%25[@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->%25hlt php%25[@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!! @@%3c:vspace>@@ and @@%3c:block>@@%0a@@%3c:vspace>@@ is inserted into the page text very early in page text processing to preserve an empty line (i.e. two newlines in a row). Very late in processing HTML is inserted into the page output to preserve the empty lines.%0aUnless markup processing detects this it can be ignored.%0a%0a@@%3c:block>@@\\%0aAt the start of a line, @@%3c:block>@@ means "start a block-level element",%0ai.e. break out of the paragraphs.%0a%0aSay you have these markups:%0a* %25pmhlt%25@@(:abc:)@@ returns 'ABC'%0a* %25pmhlt%25@@(:def:)@@ returns '%3c:block>DEF'%0a%0aThis wiki text:%0a Some text%0a %25pmhlt%25@@(:abc:)@@%0a some other text%0a%0awill produce this HTML (simplified):%0a %25hlt html%25[@%3cp>Some text%0a ABC%0a some other text%3c/p>@]%0a%0aWhile this wiki text:%0a Some text%0a %25pmhlt%25@@(:def:)@@%0a some other text%0a%0awill produce this HTML (simplified):%0a %25hlt html%25[@%3cp>Some text%3c/p>%0a DEF%0a %3cp>some other text%3c/p>@]%0a%0aThis is intended for a markup rule to return a block level element like%0a%25hlt html%25@@%3cdiv>...%3c/div>@@ that is not allowed inside an HTML paragraph.%0a%0a!! Other common examples%0a!!! Define a custom markup to produce a specific HTML or Javascript sequence%0a%0aSuppose an admin wants to have a simple "%25pmhlt%25[@(:example:)@]" markup that will always produce a fixed HTML string in the output, such as for a webring, Google AdSense display, or Javascript. The %25hlt php%25@@Markup()@@ call to do this would be:%0a-> %25hlt php%25[@%0aMarkup('example', 'directives',%0a '/\\(:example:\\)/',%0a Keep("%3cdiv class='example'>%3cp>Here is a %0a %3ca target='_blank' href='https://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 %25hlt php%25@@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 https://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%0a->%25red%25 The /e modifier has been deprecated and should not be used in ongoing development. See [[#php55|below]] for more details.%25%25%0a%0aFor older PHP versions (%3c 7.2) an 'e' option on the [@$pattern@] parameter causes the [@$replace@] parameter to be treated as a PHP expression to be evaluated instead of replacement text. To avoid using the deprecated e/ parameter, a markup to produce a random number between 1 and 100 might now look like:%0a-> %25hlt php%25[@%0aMarkup('random', 'directives',%0a '/\\(:random:\\)/',%0a "MyRandomFunction");%0afunction MyRandomFunction() {%0a return rand(1, 100);%0a}%0a@]%0a%0aThis calls the PHP built-in %25hlt php%25@@rand()@@ function and substitutes the directive with the result. Any function can be called, including functions defined in a [[local customization(s)]] file or in [[Cookbook:Cookbook|Cookbook]] recipes.%0a%0aArguments can also be passed by using regular expression capturing parentheses, thus%0a-> %25hlt php%25[@%0aMarkup('randomargs', 'directives',%0a '/\\(:random (\\d+) (\\d+):\\)/',%0a "MyRandomFunction");%0afunction MyRandomFunction($m) {%0a return rand($m[1], $m[2]);%0a}%0a@]%0a%0awill cause the markup %25pmhlt%25[@(:random 50 100:)@] to generate a random number between 50 and 100.%0a%0a->%25note%25 Note: the /e modifier in regular expressions is deprecated since PHP version 5.5, and removed since PHP version 7. The reason for this is, that malicious authors could pass strings that could 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[[#php55]]%0a!! Migration to PHP 5.5 and @@Markup_e()@@%0aSince PHP version 5.5, the @@/e@@ evaluation modifier is deprecated and some hosting providers don't allow its use.%0a%0aRecent [[ReleaseNotes | versions]] of the PmWiki core (2.2.58 and newer) allow new ways to define markup rules without being dependent on the @@/e@@ eval modifier. The historical ways to define markup rules are not removed and work, but may be incompatible with PHP 5.5 installations.%0a%0a''Note: whether your replacement pattern needs evaluation or not, you must use %25hlt php%25@@Markup()@@%25%25 and %25red%25not @@Markup_e()@@.%25%25'' The latter is deprecated and should no longer be used for new recipes and customizations, and old recipes using @@Markup_e@@ should be upgraded to the new format.%0a%0aThe examples below all require PmWiki 2.2.58 (2013-12-25) or newer but the latest version is recommended.%0a%0a>>frame%3c%3c%0aTHE SHORT ANSWER: If your markup regular expression (the 3rd argument) contains an "e" after the closing slash (i.e., @@/regex/e@@ or @@/regex/se@@ or etc) AND your 4th argument is entirely surrounded with double-quotes then you may be able to get away with simply following these simple steps:%0a%0a# Delete the "e" from after the closing slash in the 3rd argument%0a# Create a new replacement function with $m as argument.%0a# In your function, the previous occurrences of '$1', '$2', etc. are now found as $m[1], $m[2], etc. You should no longer call @@[[Functions#PSS|PSS()]]@@.%0a# In your function, call %25hlt php%25@@extract($GLOBALS['MarkupToHTML']);@@ in order to get the current $pagename and @@$markupid@@.%0a# Your function needs to '''return''' the result from the markup processing, either html or another markup.%0a# Set the name of the replacement function as 4th argument of the Markup() call.%0a%0aIn some cases this will not suffice - it depends on how quoting was done - but in many cases following these simple steps will result in PHP 5.5+ compatibility. %0a%0aIf you try those steps and are still having problems then continue to read below for a deeper understanding.%0a>>%3c%3c%0a%0aThe following is acceptable for PHP 5.5+ (compatible with PmWiki 2.2.58+, will also work in PHP 5.4 and older)%0a* %25hlt php%25@@Markup($name, $when, $pattern, $replace)@@; %0a** @@$pattern@@ can no longer have an "@@/e@@" modifier%0a** @@$replace@@ can be a function name (callback) which will be called with the array of matches as argument%0a** instead of a string, the fourth parameter can be a definition of an anonymous function (note you can use anon functions this way since [[https://www.php.net/manual/en/functions.anonymous.php | PHP 5.3.0+]]).%0a%0a* {-@@Markup_e($name, $when, $pattern, $replace)@@;-} %25red%25 DEPRECATED, should no longer be used%0a%0aExamples:%0a%0a* For PHP 5.4 and older, this was acceptable:%25hlt php%25[@%0aMarkup('randomargs', 'directives',%0a '/\\(:random (\\d+) (\\d+):\\)/e',%0a "rand('$1', '$2')"%0a );@]%0a%0a* For PHP 5.5 and newer, $replace is callback, we call %25hlt php%25@@Markup()@@:[@%0aMarkup('randomargs', 'directives',%0a '/\\(:random (\\d+) (\\d+):\\)/',%0a "MyRandom"%0a );%0afunction MyRandom($m) { # $m = matches%0a return rand($m[1], $m[2]); # note "return" is used, unlike before%0a}%0a@]%0a %25note%25 This will also work in PHP 5.4 and older%25%25%0a%0aOther example:%0a* PHP 5.4 or older: %25hlt php%25[@%0aMarkup('Maxi:','%3clinks',%0a "/\\b([Mm]axi:)([^\\s\"\\|\\[\\]]+)(\"([^\"]*)\")?/e",%0a "Keep(LinkMaxi(\$pagename,'$1','$2','$4','$1$2'),'L')"%0a );%0a@]%0a%0a* PHP 5.5 or newer, PmWiki 2.2.58+, $replace is a function name: %25hlt php%25[@%0aMarkup('Maxi:','%3clinks',%0a "/\\b([Mm]axi:)([^\\s\"\\|\\[\\]]+)(\"([^\"]*)\")?/",%0a "LinkMaxi"%0a );%0afunction LinkMaxi($m) {%0a extract($GLOBALS['MarkupToHTML']); # to get $pagename%0a # do stuff with $m[1], $m[2], etc.%0a return Keep($out, 'L');%0a}%0a@]%0a %25note%25 This will also work in PHP 5.4 and older%25%25%0a%0a* $replace can also be a callback function, we call %25hlt php%25@@Markup()@@: [@%0aMarkup('Maxi:','%3clinks',%0a "/\\b([Mm]axi:)([^\\s\"\\|\\[\\]]+)(\"([^\"]*)\")?/",%0a "CallbackMaxi"%0a);%0afunction CallbackMaxi($m) {%0a extract($GLOBALS["MarkupToHTML"]); # to get $pagename%0a return Keep(LinkMaxi($pagename,$m[1],$m[2],$m[4],$m[1].$m[2]),'L');%0a}%0a@]%0a %25note%25 This will also work in PHP 5.4 and older%25%25%0a%0aThe above may seem complicated, but it is actually simpler to use your own callback function:%0a-> %25hlt php%25[@%0aMarkup('mykey', 'directives', %0a '/\\(:mydirective (.*?) (.*?):\\)/i',%0a 'MyFunction'%0a);%0afunction MyFunction($m) {%0a extract($GLOBALS["MarkupToHTML"]);%0a%0a # ... do stuff with $m (the matches), drop PSS() ...%0a%0a return $out; # or return Keep($html);%0a}%0a@]%0a%0aIf you have any questions about the new way to define custom markup, you can ask us [[PmWiki:CustomMarkup-Talk|at the talk page]] or on the [[PmWiki/mailing lists]].%0a%0a%0a!!FAQ%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 %25pmhlt%25(''[@(: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-> %25hlt php%25[@%0aSDV($HideDiscussion, 0); #define var name%0aMarkup('hideDiscussion', '%3c{$var}',%0a '/\\(:nodiscussion:\\)/', 'setHideDiscussion'); %0afunction setHideDiscussion() { %0a global $HideDiscussion; %0a $HideDiscussion = true;%0a} %0a@]%0a%0aThis will enable the %25pmhlt%25@@[=(: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%25hlt php%25@@[=$FmtPV['$HideDiscussion'] = '$GLOBALS["HideDiscussion"]';=]@@%0a%0a%0aQ: It appears that (.*?) does not match newlines in these functions, making the above example inoperable if the text to be wrapped 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). Also make sure your markup is executed during the fulltext phase.%0a %0aQ: [[#PRR]] How can the text returned by my markup function be re-processed by the markup engine? %0aA: If the result of your markup contains more markup that should be processed, you have two options. First is to select a "when" argument that is processed earlier than the markup in your result. For example, if your markup may return [=[[links]]=], your "when" argument could be @@"%3clinks"@@ and your markup will be processed before the links markup. The second option is to call the %25hlt php%25@@PRR()@@ function in your markup definition or inside your markup function. In this case, after your markup is processed, PmWiki will restart all markups from the beginning. %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%0aQ: How do I make a rule that runs once at the end of all other rule processing?%0aA: Use this statement instead of the usual %25hlt php%25@@Markup()@@ call:%0a-->%25hlt php%25@@$MarkupFrameBase['posteval']['myfooter'] = "\$out = onetimerule(\$out);";@@%0a%0aCategory: [[!Markup]]
+time=1704014711
diff --git a/wikilib.d/PmWiki.Forms b/wikilib.d/PmWiki.Forms
index fa0b3e84..412c551f 100644
--- a/wikilib.d/PmWiki.Forms
+++ b/wikilib.d/PmWiki.Forms
@@ -1,10 +1,10 @@
-version=pmwiki-2.3.27 ordered=1 urlencoded=1
+version=pmwiki-2.3.29 ordered=1 urlencoded=1
author=Petko
charset=UTF-8
-csum=(:input color name "value":) (+45)
+csum=added input e_author (+226)
ctime=1181479161
name=PmWiki.Forms
-rev=95
-targets=Cookbook.InputDefault,PmWiki.OtherVariables,PmWiki.Functions,Cookbook.FormValidation,Cookbook.FormExtensions,Cookbook.InputFormsAndJavaScript,PmWiki.PageLists,Cookbook.PmForm,Cookbook.Fox,Cookbook.Input,Cookbook.WikiForms,Cookbook.ProcessForm
-text=(:Summary:How you can embed input forms into wiki pages:)%0aThis page explains how you can embed input forms into wiki pages. Input forms don't actually handle processing of the form data -- the feature simply allows creation of forms inside wiki pages. Forms processing can be found in the Cookbook (see below).%0a%0a!! Markup%0aTwo directives are used to begin and end forms:%0a%0a %25pmhlt%25[@(:input form "url" method:)@]%0a ...%0a %25pmhlt%25[@(:input end:)@]%0a%0aThe %25pmhlt%25[@(:input form:)@] directive starts a form that will post to ''url'' (optional ''action=''url) using the supplied ''method'' (optional ''method=''method). The ''url'' must be in quotes if not specified via ''action=''. If the url is omitted, then the current page is assumed. If ''method'' is omitted then "POST" is assumed. An optional [@name="FormName"@] argument can be used to name the form. You can explicitly state @@action=url@@ or @@method=get@@ or you can simply use them as positional parameters.%0a%0aIf your site uses ?n=Group.Page to specify the pagename then having a field %25pmhlt%25[@(:input hidden name=n value={$FullName}:)@] will allow your form to post to the current page as an alternative to fully specifying the action=url.%0a%0aThe %25pmhlt%25[@(:input end:)@] directive ends the current form.%0a%0a%25pmhlt%25Note that this feature doesn't ensure that the form output is correct HTML -- it assumes the author knows a little bit of what he or she is doing. Notably, [@(:input form:)@] and [@(:input end:)@] shouldn't appear inside tables, and all form fields and controls should be inside an [@(:input form:)...(:input end:)@] block. Also note that not all browsers support all field types - as of 2023, the [@(:input month:)@] field is still [[https://caniuse.com/mdn-html_elements_input_type_month|unsupported]] by desktop Firefox and Safari.%0a%0a[[#standardinputcontrols]]%0a!!Standard input controls%0aThe standard input controls are:%0a%0a %25pmhlt%25[@(:input text name "value" size=n:) @]%0a %25pmhlt%25[@(:input hidden name "value":) @]%0a %25pmhlt%25[@(:input password name "value":) @]%0a %25pmhlt%25[@(:input search name "value":) @]%0a %25pmhlt%25[@(:input number name "value" min=x max=y step=z:) @]%0a %25pmhlt%25[@(:input email name "value":) @]%0a %25pmhlt%25[@(:input tel name "value":) @]%0a %25pmhlt%25[@(:input url name "value":) @]%0a %25pmhlt%25[@(:input date name "value":) @]%0a %25pmhlt%25[@(:input month name "value":) @]%0a %25pmhlt%25[@(:input color name "value":) @]%0a %25pmhlt%25[@(:input radio name "value" "label" checked=checked:) @]%0a %25pmhlt%25[@(:input checkbox name "value" "label" checked=checked:) @]%0a %25pmhlt%25[@(:input select name "value" "label":) @] - see [[#select|select]]%0a %25pmhlt%25[@(:input datalist id "value":) @] - see [[#datalist|datalist]]%0a %25pmhlt%25[@(:input default default-name "default-value":) @] - see [[Cookbook:InputDefault|default]]%0a %25pmhlt%25[@(:input textarea name [=value=] rows=n cols=n:) @]%0a %25pmhlt%25[@(:input file name "label":) @]%0a %25pmhlt%25[@(:input image name "src" "alt":) @]%0a %25pmhlt%25[@(:input reset name "label":) @]%0a %25pmhlt%25[@(:input button name "value":) @]%0a %25pmhlt%25[@(:input pmtoken:) @] - see [[#pmtoken|pmtoken]]%0a %25pmhlt%25[@(:input submit name "value":) @]%0a%0aWhere ''name'' and ''value'' are in the HTML syntax: name="addr" value="808 W Franklin".%0a%0aFor most controls the markup has the form:%0a%0a %25pmhlt%25[@(:input type name "value" parameter="value":) @]%0a%0awhere ''type'' is the type of input element (described below), ''name'' is the name of the control, ''value'' is its initial value, and parameters are used to specify additional attributes to the control. If ''value'' contains spaces, enclose it in quotes; if it contains newlines (for textarea and hidden elements), enclose it in %25pmhlt%25[@[=...=]@]. %0a%0aFor example, the following creates a text input control with a size of 30 characters:%0a%0a(:markup:)%0a(:input text authorid "Jane Doe" size=30:)%0a(:markupend:)%0a%0aFor convenience, an author can also specify name and value arguments directly using %25pmhlt%25[@name=@] and [@value=@] attributes (same as HTML):%0a%0a(:markup:) %0a(:input text name=authorid value="Jane Doe" size=30:)%0a(:markupend:)%0a%0aFor the @@textarea@@ control a value can be set from PmWiki 2.2.0beta45 onwards. Enclose the value in %25pmhlt%25[@[=...=]@] if it contains spaces or new lines.%0a%0aThe %25pmhlt%25[@submit@] control will more often be written as:%0a%0a %25pmhlt%25[@(:input submit value="label":) @]%0a%0aHere's a more complete example, e.g., for a login prompt:%0a%0a(:markup:) [=%0a(:input form "https://www.example.com":)%0a(:input hidden action login:)%0a|| Name:||(:input text username:) ||%0a|| Password:||(:input password password:) ||%0a|| ||(:input checkbox terms yes "Accept Terms" required=required:) ||%0a|| ||(:input submit value="Log In":) ||%0a(:input end:)%0a=]%0a%0a[[#field_attributes]]%0a!! General form field attributes%0a* %25pmhlt%25[@(:input ... focus=1:)@] Setting @@focus=1@@ causes that field to receive the initial focus when the form is first opened.%0a%0a* The following advanced HTML attributes are supported: @@name, value, id, class, rows, cols, size, maxlength, action, method, accesskey, tabindex, multiple, checked, disabled, readonly, enctype, src, alt, title, required, placeholder, autocomplete, min, max, step, pattern, list, formnovalidate, accept, autofocus, lang@@. For a more detailed description, see their counterparts in the [[https://www.w3.org/TR/html5/forms.html#common-input-element-attributes|w3c reference: HTML5 form attributes]] (not all of them can be used for all types of form fields).%0a%0a* For checkboxes and radio inputs, the "label" attribute text will be displayed ''after'' the input as a %3clabel> element. Clicking on it will check or uncheck the input. The label can only be plain text (no inline formatting like bold or links).%0a%0a* In addition to these, the following attributes can be used for accessibility enhancements: @@role, aria-label, aria-labelledby, aria-describedby, aria-expanded, aria-pressed, aria-current, aria-hidden@@.%0a%0a* In addition to the default attributes, you can use custom data attributes like @@data-some-variable=value@@ or @@data-other="Some data"@@ (usable by custom JavaScript, CSS or by some libraries). The attribute must start with "data-" and only contain lowercase Latin letters [a-z] and dashes [-].\\%0aThis can be disabled in @@config.php@@ with the line @@$EnableInputDataAttr = 0;@@%0a%0a* %25pmhlt%25[@(:input form ... data-pmconfirm="Really submit form?":)@] or [@(:input submit ... data-pmconfirm="Proceed?":)@], when the form is submitted, or when the user clicks on the button, will open a confirmation box with the question, allowing the user to proceed or cancel (from PmWiki 2.3.22). This works on the elements ''form, submit, reset'', and ''button''. The text in quotes will be shown to the user. Example:%0a>>indent%3c%3c%0a(:markup:)%0a(:input button bname "Delete all pages" data-pmconfirm="Are you sure you want to delete all pages? This cannot be undone.":)%0a(:markupend:)%0a>>%3c%3c%0a%0a* Any unsupported attributes in the wiki markup will not be included in the HTML output.%0a%0a[[#select]]%0a!! ([=:=]input select ... :)%0a%0aThe basic form of a select box is a sequence of options:%0a%0a(:markup:) [=%0a(:input form:)%0a(:input select name=abc value=1 label=alpha :)%0a(:input select name=abc value=2 label=beta :)%0a(:input select name=abc value=3 label=gamma :)%0a(:input submit:)%0a(:input end:)%0a=]%0a%0aThe values can be specified positionally:%0a %25pmhlt%25[@(:input select abc 1 alpha :)@]%0a%0aWe can specify the size of the selection box:%0a %25pmhlt%25[@(:input select abc 1 alpha size=3 :)@]%0a%0aYou can specify a multiple select box (only the first item needs to have "size=3 multiple" attributes):%0a %25pmhlt%25[@(:input select abc 1 alpha size=3 multiple:)@]%0a%0aTo have an element selected, use @@selected=selected@@:%0a %25pmhlt%25[@(:input select abc 2 beta selected=selected:)@]%0a%0aNote that to have two select boxes inline, not only should you give them different @@name=@@ parameters, but also place a separator, like a character, %25pmhlt%25[@&nbsp;@] or even the null sequence [@[==]@] between them:%0a(:markup:)%0a(:input form:)%0a(:input select name=FIRST value=1:)(:input select name=FIRST value=2:)[==]%0a(:input select name=SECOND value=3:)(:input select name=SECOND value=4:)%0a(:input end:)%0a(:markupend:)%0a%0a%25note pmhlt%25 Note, in the HTML output, only the attributes @@label@@, @@value@@ and @@selected@@ are applied to the [@%3coption>@] HTML tag. Any other attributes, including @@name@@, @@id@@, @@class@@ and @@title@@ are applied to the wrapping [@%3cselect>@] HTML tag, and later definitions replace previous ones.%0a%0a%0a[[#datalist]]%0a!! ([=:=]input datalist ... :)%0aThis allows a number of values (suggestions) to appear in a drop-down menu allowing the user to select one of the values or to fill a new, different value. The markup accepts named or positional attributes:%0a%0a %25pmhlt%25[@(:input datalist id "value":) @]%0a %25pmhlt%25[@(:input datalist id=id value="value":) @]%0a%0aAn existing %25pmhlt%25[@(:input text:)@] field needs to have an attribute @@list=id_of_the_datalist@@ to attach the suggestions.%0a%0aThe datalist element is invisible and can be anywhere in the page. The suggestion menu appears when the user starts typing in the attached text field and filters the suggested values that contain the letters typed in the text field.%0a%0a(:markup:) [=%0aType a browser name: (:input text browsers list=dlist_id :)%0a(:input datalist dlist_id Firefox:)%0a(:input datalist dlist_id Chrome:)%0a(:input datalist dlist_id Safari:)%0a(:input datalist dlist_id Edge:)%0a(:input datalist dlist_id MSIE:)%0a(:input datalist dlist_id Opera:)%0a(:input datalist dlist_id Lynx:)%0a=]%0a%0aThis is a recent addition to the HTML standard, see https://caniuse.com/#feat=datalist for current browser support.%0a%0a%25pmhlt%25Note that if you have a datalist element immediately following another datalist element, not only should you give them different @@id=@@ attributes, but also place a separator, like a character, [@&nbsp;@] or the null sequence [@[==]@] between them: [@%0a(:input datalist dl_1 First:)%0a(:input datalist dl_1 Second:)[==]%0a(:input datalist dl_2 First:)%0a(:input datalist dl_2 Second:)%0a@]%0a%0a[[#pmtoken]]%0a!! ([=:=]input pmtoken:)%0a%0aThis includes a unique session identifier as a hidden input field to prevent cross-site request forgeries (CSRF). Can be included in custom forms, and the custom action handlers receiving the form can check if the request is valid by calling [[Functions#pmtoken|pmtoken(1)]].%0a%0aThe "name" of the HTML input element, by default 'pmtoken', can be changed by setting for example %25hlt php%25@@$FmtV['$TokenName'] = 'myCSRFtoken';@@. In your form you still need to have %25pmhlt%25[@(:input pmtoken:)@] which will use the new name for the HTML element.%0a!! See Also%0a*[[Cookbook:Input Default]] {Cookbook.InputDefault$:Summary}%0a*[[Cookbook:Form Validation]] {Cookbook.FormValidation$:Summary}%0a*[[Cookbook:Form Extensions]] {Cookbook.FormExtensions$:Summary}%0a*[[Cookbook:Input Forms and JavaScript]] {Cookbook.InputFormsAndJavaScript$:Summary}%0a*[[PageLists#searchbox]] The [@(:searchbox:)@] directive creates a form to search the wiki%0a%0aCompatible recipes:%0a* [[Cookbook:PmForm]] {Cookbook/PmForm$:Summary}%0a* [[Cookbook:Fox]] {Cookbook.Fox$:Summary}%0a* [[Cookbook:Wiki Forms]] {Cookbook/WikiForms$:Summary}%0a* [[Cookbook:ProcessForm]] {Cookbook/ProcessForm$:Summary}%0a%0a
-time=1698315745
+rev=96
+targets=Cookbook.InputDefault,PmWiki.EditVariables,PmWiki.OtherVariables,PmWiki.Functions,Cookbook.FormValidation,Cookbook.FormExtensions,Cookbook.InputFormsAndJavaScript,PmWiki.PageLists,Cookbook.PmForm,Cookbook.Fox,Cookbook.Input,Cookbook.WikiForms,Cookbook.ProcessForm
+text=(:Summary:How you can embed input forms into wiki pages:)%0aThis page explains how you can embed input forms into wiki pages. Input forms don't actually handle processing of the form data -- the feature simply allows creation of forms inside wiki pages. Forms processing can be found in the Cookbook (see below).%0a%0a!! Markup%0aTwo directives are used to begin and end forms:%0a%0a %25pmhlt%25[@(:input form "url" method:)@]%0a ...%0a %25pmhlt%25[@(:input end:)@]%0a%0aThe %25pmhlt%25[@(:input form:)@] directive starts a form that will post to ''url'' (optional ''action=''url) using the supplied ''method'' (optional ''method=''method). The ''url'' must be in quotes if not specified via ''action=''. If the url is omitted, then the current page is assumed. If ''method'' is omitted then "POST" is assumed. An optional [@name="FormName"@] argument can be used to name the form. You can explicitly state @@action=url@@ or @@method=get@@ or you can simply use them as positional parameters.%0a%0aIf your site uses ?n=Group.Page to specify the pagename then having a field %25pmhlt%25[@(:input hidden name=n value={$FullName}:)@] will allow your form to post to the current page as an alternative to fully specifying the action=url.%0a%0aThe %25pmhlt%25[@(:input end:)@] directive ends the current form.%0a%0a%25pmhlt%25Note that this feature doesn't ensure that the form output is correct HTML -- it assumes the author knows a little bit of what he or she is doing. Notably, [@(:input form:)@] and [@(:input end:)@] shouldn't appear inside tables, and all form fields and controls should be inside an [@(:input form:)...(:input end:)@] block. Also note that not all browsers support all field types - as of 2023, the [@(:input month:)@] field is still [[https://caniuse.com/mdn-html_elements_input_type_month|unsupported]] by desktop Firefox and Safari.%0a%0a[[#standardinputcontrols]]%0a!!Standard input controls%0aThe standard input controls are:%0a%0a %25pmhlt%25[@(:input text name "value" size=n:) @]%0a %25pmhlt%25[@(:input hidden name "value":) @]%0a %25pmhlt%25[@(:input password name "value":) @]%0a %25pmhlt%25[@(:input search name "value":) @]%0a %25pmhlt%25[@(:input number name "value" min=x max=y step=z:) @]%0a %25pmhlt%25[@(:input email name "value":) @]%0a %25pmhlt%25[@(:input tel name "value":) @]%0a %25pmhlt%25[@(:input url name "value":) @]%0a %25pmhlt%25[@(:input date name "value":) @]%0a %25pmhlt%25[@(:input month name "value":) @]%0a %25pmhlt%25[@(:input color name "value":) @]%0a %25pmhlt%25[@(:input radio name "value" "label" checked=checked:) @]%0a %25pmhlt%25[@(:input checkbox name "value" "label" checked=checked:) @]%0a %25pmhlt%25[@(:input select name "value" "label":) @] - see [[#select|select]]%0a %25pmhlt%25[@(:input datalist id "value":) @] - see [[#datalist|datalist]]%0a %25pmhlt%25[@(:input default default-name "default-value":) @] - see [[Cookbook:InputDefault|default]]%0a %25pmhlt%25[@(:input textarea name [=value=] rows=n cols=n:) @]%0a %25pmhlt%25[@(:input file name "label":) @]%0a %25pmhlt%25[@(:input image name "src" "alt":) @]%0a %25pmhlt%25[@(:input reset name "label":) @]%0a %25pmhlt%25[@(:input button name "value":) @]%0a %25pmhlt%25[@(:input pmtoken:) @] - see [[#pmtoken|pmtoken]]%0a %25pmhlt%25[@(:input submit name "value":) @]%0a%0aWhere ''name'' and ''value'' are in the HTML syntax: name="addr" value="808 W Franklin".%0a%0aA PmWiki-specific input control is "e_author" which will be pre-filled with the current author name, and if $EnablePostAuthorRequired is set, will have a @@required="required"@@ attribute:%0a %25pmhlt%25[@(:input e_author:) @] %0a%0aFor most controls the markup has the form:%0a%0a %25pmhlt%25[@(:input type name "value" parameter="value":) @]%0a%0awhere ''type'' is the type of input element (described below), ''name'' is the name of the control, ''value'' is its initial value, and parameters are used to specify additional attributes to the control. If ''value'' contains spaces, enclose it in quotes; if it contains newlines (for textarea and hidden elements), enclose it in %25pmhlt%25[@[=...=]@]. %0a%0aFor example, the following creates a text input control with a size of 30 characters:%0a%0a(:markup:)%0a(:input text authorid "Jane Doe" size=30:)%0a(:markupend:)%0a%0aFor convenience, an author can also specify name and value arguments directly using %25pmhlt%25[@name=@] and [@value=@] attributes (same as HTML):%0a%0a(:markup:) %0a(:input text name=authorid value="Jane Doe" size=30:)%0a(:markupend:)%0a%0aFor the @@textarea@@ control a value can be set from PmWiki 2.2.0beta45 onwards. Enclose the value in %25pmhlt%25[@[=...=]@] if it contains spaces or new lines.%0a%0aThe %25pmhlt%25[@submit@] control will more often be written as:%0a%0a %25pmhlt%25[@(:input submit value="label":) @]%0a%0aHere's a more complete example, e.g., for a login prompt:%0a%0a(:markup:) [=%0a(:input form "https://www.example.com":)%0a(:input hidden action login:)%0a|| Name:||(:input text username:) ||%0a|| Password:||(:input password password:) ||%0a|| ||(:input checkbox terms yes "Accept Terms" required=required:) ||%0a|| ||(:input submit value="Log In":) ||%0a(:input end:)%0a=]%0a%0a[[#field_attributes]]%0a!! General form field attributes%0a* %25pmhlt%25[@(:input ... focus=1:)@] Setting @@focus=1@@ causes that field to receive the initial focus when the form is first opened.%0a%0a* The following advanced HTML attributes are supported: @@name, value, id, class, rows, cols, size, maxlength, action, method, accesskey, tabindex, multiple, checked, disabled, readonly, enctype, src, alt, title, required, placeholder, autocomplete, min, max, step, pattern, list, formnovalidate, accept, autofocus, lang@@. For a more detailed description, see their counterparts in the [[https://www.w3.org/TR/html5/forms.html#common-input-element-attributes|w3c reference: HTML5 form attributes]] (not all of them can be used for all types of form fields).%0a%0a* For checkboxes and radio inputs, the "label" attribute text will be displayed ''after'' the input as a %3clabel> element. Clicking on it will check or uncheck the input. The label can only be plain text (no inline formatting like bold or links).%0a%0a* In addition to these, the following attributes can be used for accessibility enhancements: @@role, aria-label, aria-labelledby, aria-describedby, aria-expanded, aria-pressed, aria-current, aria-hidden@@.%0a%0a* In addition to the default attributes, you can use custom data attributes like @@data-some-variable=value@@ or @@data-other="Some data"@@ (usable by custom JavaScript, CSS or by some libraries). The attribute must start with "data-" and only contain lowercase Latin letters [a-z] and dashes [-].\\%0aThis can be disabled in @@config.php@@ with the line @@$EnableInputDataAttr = 0;@@%0a%0a* %25pmhlt%25[@(:input form ... data-pmconfirm="Really submit form?":)@] or [@(:input submit ... data-pmconfirm="Proceed?":)@], when the form is submitted, or when the user clicks on the button, will open a confirmation box with the question, allowing the user to proceed or cancel (from PmWiki 2.3.22). This works on the elements ''form, submit, reset'', and ''button''. The text in quotes will be shown to the user. Example:%0a>>indent%3c%3c%0a(:markup:)%0a(:input button bname "Delete all pages" data-pmconfirm="Are you sure you want to delete all pages? This cannot be undone.":)%0a(:markupend:)%0a>>%3c%3c%0a%0a* Any unsupported attributes in the wiki markup will not be included in the HTML output.%0a%0a[[#select]]%0a!! ([=:=]input select ... :)%0a%0aThe basic form of a select box is a sequence of options:%0a%0a(:markup:) [=%0a(:input form:)%0a(:input select name=abc value=1 label=alpha :)%0a(:input select name=abc value=2 label=beta :)%0a(:input select name=abc value=3 label=gamma :)%0a(:input submit:)%0a(:input end:)%0a=]%0a%0aThe values can be specified positionally:%0a %25pmhlt%25[@(:input select abc 1 alpha :)@]%0a%0aWe can specify the size of the selection box:%0a %25pmhlt%25[@(:input select abc 1 alpha size=3 :)@]%0a%0aYou can specify a multiple select box (only the first item needs to have "size=3 multiple" attributes):%0a %25pmhlt%25[@(:input select abc 1 alpha size=3 multiple:)@]%0a%0aTo have an element selected, use @@selected=selected@@:%0a %25pmhlt%25[@(:input select abc 2 beta selected=selected:)@]%0a%0aNote that to have two select boxes inline, not only should you give them different @@name=@@ parameters, but also place a separator, like a character, %25pmhlt%25[@&nbsp;@] or even the null sequence [@[==]@] between them:%0a(:markup:)%0a(:input form:)%0a(:input select name=FIRST value=1:)(:input select name=FIRST value=2:)[==]%0a(:input select name=SECOND value=3:)(:input select name=SECOND value=4:)%0a(:input end:)%0a(:markupend:)%0a%0a%25note pmhlt%25 Note, in the HTML output, only the attributes @@label@@, @@value@@ and @@selected@@ are applied to the [@%3coption>@] HTML tag. Any other attributes, including @@name@@, @@id@@, @@class@@ and @@title@@ are applied to the wrapping [@%3cselect>@] HTML tag, and later definitions replace previous ones.%0a%0a%0a[[#datalist]]%0a!! ([=:=]input datalist ... :)%0aThis allows a number of values (suggestions) to appear in a drop-down menu allowing the user to select one of the values or to fill a new, different value. The markup accepts named or positional attributes:%0a%0a %25pmhlt%25[@(:input datalist id "value":) @]%0a %25pmhlt%25[@(:input datalist id=id value="value":) @]%0a%0aAn existing %25pmhlt%25[@(:input text:)@] field needs to have an attribute @@list=id_of_the_datalist@@ to attach the suggestions.%0a%0aThe datalist element is invisible and can be anywhere in the page. The suggestion menu appears when the user starts typing in the attached text field and filters the suggested values that contain the letters typed in the text field.%0a%0a(:markup:) [=%0aType a browser name: (:input text browsers list=dlist_id :)%0a(:input datalist dlist_id Firefox:)%0a(:input datalist dlist_id Chrome:)%0a(:input datalist dlist_id Safari:)%0a(:input datalist dlist_id Edge:)%0a(:input datalist dlist_id MSIE:)%0a(:input datalist dlist_id Opera:)%0a(:input datalist dlist_id Lynx:)%0a=]%0a%0aThis is a recent addition to the HTML standard, see https://caniuse.com/#feat=datalist for current browser support.%0a%0a%25pmhlt%25Note that if you have a datalist element immediately following another datalist element, not only should you give them different @@id=@@ attributes, but also place a separator, like a character, [@&nbsp;@] or the null sequence [@[==]@] between them: [@%0a(:input datalist dl_1 First:)%0a(:input datalist dl_1 Second:)[==]%0a(:input datalist dl_2 First:)%0a(:input datalist dl_2 Second:)%0a@]%0a%0a[[#pmtoken]]%0a!! ([=:=]input pmtoken:)%0a%0aThis includes a unique session identifier as a hidden input field to prevent cross-site request forgeries (CSRF). Can be included in custom forms, and the custom action handlers receiving the form can check if the request is valid by calling [[Functions#pmtoken|pmtoken(1)]].%0a%0aThe "name" of the HTML input element, by default 'pmtoken', can be changed by setting for example %25hlt php%25@@$FmtV['$TokenName'] = 'myCSRFtoken';@@. In your form you still need to have %25pmhlt%25[@(:input pmtoken:)@] which will use the new name for the HTML element.%0a!! See Also%0a*[[Cookbook:Input Default]] {Cookbook.InputDefault$:Summary}%0a*[[Cookbook:Form Validation]] {Cookbook.FormValidation$:Summary}%0a*[[Cookbook:Form Extensions]] {Cookbook.FormExtensions$:Summary}%0a*[[Cookbook:Input Forms and JavaScript]] {Cookbook.InputFormsAndJavaScript$:Summary}%0a*[[PageLists#searchbox]] The [@(:searchbox:)@] directive creates a form to search the wiki%0a%0aCompatible recipes:%0a* [[Cookbook:PmForm]] {Cookbook/PmForm$:Summary}%0a* [[Cookbook:Fox]] {Cookbook.Fox$:Summary}%0a* [[Cookbook:Wiki Forms]] {Cookbook/WikiForms$:Summary}%0a* [[Cookbook:ProcessForm]] {Cookbook/ProcessForm$:Summary}%0a%0a
+time=1704806335