From: intrigeri Date: Sun, 8 Mar 2009 08:50:27 +0000 (+0100) Subject: Merge commit 'upstream/master' into prv/po X-Git-Tag: 3.15~213 X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/commitdiff_plain/ae474d8e14631ff519ed7d54bb64eaa0538f56d9?hp=-c Merge commit 'upstream/master' into prv/po Conflicts: IkiWiki/Plugin/editpage.pm debian/control debian/copyright doc/todo/need_global_renamepage_hook.mdwn Signed-off-by: intrigeri --- ae474d8e14631ff519ed7d54bb64eaa0538f56d9 diff --combined debian/control index 78898a1a4,65b80138b..c6170c441 --- a/debian/control +++ b/debian/control @@@ -1,7 -1,7 +1,7 @@@ Source: ikiwiki Section: web Priority: optional - Build-Depends: perl, debhelper (>= 5) + Build-Depends: perl, debhelper (>= 7.0.50) Build-Depends-Indep: dpkg-dev (>= 1.9.0), libxml-simple-perl, libtext-markdown-perl | markdown, libtimedate-perl, libhtml-template-perl, libhtml-scrubber-perl, wdg-html-validator, libhtml-parser-perl, liburi-perl, perlmagick Maintainer: Joey Hess Uploaders: Josh Triplett @@@ -12,9 -12,9 +12,9 @@@ Vcs-Browser: http://git.ikiwiki.info/?p Package: ikiwiki Architecture: all - Depends: ${perl:Depends}, libtext-markdown-perl | markdown, libhtml-scrubber-perl, libhtml-template-perl, libhtml-parser-perl, liburi-perl + Depends: ${misc:Depends}, ${perl:Depends}, libtext-markdown-perl | markdown, libhtml-scrubber-perl, libhtml-template-perl, libhtml-parser-perl, liburi-perl Recommends: gcc | c-compiler, libc6-dev | libc-dev, subversion | git-core (>= 1:1.5.0) | tla | bzr (>= 0.91) | mercurial | monotone (>= 0.38), libxml-simple-perl, libnet-openid-consumer-perl, liblwpx-paranoidagent-perl, libtimedate-perl, libcgi-formbuilder-perl (>= 3.05), libcgi-session-perl (>= 4.14-1), libmail-sendmail-perl, libauthen-passphrase-perl, libterm-readline-gnu-perl - Suggests: viewvc | gitweb | viewcvs, libsearch-xapian-perl, xapian-omega (>= 1.0.5), librpc-xml-perl, libtext-wikiformat-perl, python, python-docutils, polygen, tidy, libhtml-tree-perl, libxml-feed-perl, libmailtools-perl, perlmagick, libfile-mimeinfo-perl, libcrypt-ssleay-perl, liblocale-gettext-perl (>= 1.05-1), libtext-typography-perl, libtext-csv-perl, libdigest-sha1-perl, graphviz, libnet-amazon-s3-perl, sparkline-php, texlive, dvipng, po4a (>= 0.35-1), gettext -Suggests: viewvc | gitweb | viewcvs, libsearch-xapian-perl, xapian-omega (>= 1.0.5), librpc-xml-perl, libtext-wikiformat-perl, python, python-docutils, polygen, tidy, libhtml-tree-perl, libxml-feed-perl, libmailtools-perl, perlmagick, libfile-mimeinfo-perl, libcrypt-ssleay-perl, liblocale-gettext-perl (>= 1.05-1), libtext-typography-perl, libtext-csv-perl, libdigest-sha1-perl, graphviz, libnet-amazon-s3-perl, sparkline-php, texlive, dvipng, libtext-wikicreole-perl ++Suggests: viewvc | gitweb | viewcvs, libsearch-xapian-perl, xapian-omega (>= 1.0.5), librpc-xml-perl, libtext-wikiformat-perl, python, python-docutils, polygen, tidy, libhtml-tree-perl, libxml-feed-perl, libmailtools-perl, perlmagick, libfile-mimeinfo-perl, libcrypt-ssleay-perl, liblocale-gettext-perl (>= 1.05-1), libtext-typography-perl, libtext-csv-perl, libdigest-sha1-perl, graphviz, libnet-amazon-s3-perl, sparkline-php, texlive, dvipng, libtext-wikicreole-perl, po4a (>= 0.35-1), gettext Conflicts: ikiwiki-plugin-table Replaces: ikiwiki-plugin-table Provides: ikiwiki-plugin-table diff --combined debian/copyright index c5993edb2,f589b4a8f..0299d8a77 --- a/debian/copyright +++ b/debian/copyright @@@ -76,7 -76,7 +76,7 @@@ Files: htmltidy.p Copyright: © 2006 Faidon Liambotis License: GPL-2+ - Files: htmlbalance.pm + Files: htmlbalance.pm, underlay.pm Copyright: © 2008 Simon McVittie License: GPL-2+ @@@ -118,10 -118,10 +118,14 @@@ Copyright © 2008 Simon McVittie License: GPL-2+ +Files: po.pm +Copyright: © 2008-2009 intrigeri +License: GPL-2+ + + Files: 404.pm + Copyright: © 2009 Simon McVittie + License: GPL-2+ + Files: doc/logo/* Copyright: © 2006 Recai Oktaş License: GPL-2+ diff --combined doc/plugins/write.mdwn index 0c5ad4540,696bc6bc3..be01605e8 --- a/doc/plugins/write.mdwn +++ b/doc/plugins/write.mdwn @@@ -107,7 -107,7 +107,7 @@@ adding or removing files from it This hook is called early in the process of building the wiki, and is used as a first pass scan of the page, to collect metadata about the page. It's - mostly used to scan the page for WikiLinks, and add them to `%links`. + mostly used to scan the page for [[WikiLinks|ikiwiki/WikiLink]], and add them to `%links`. Present in IkiWiki 2.40 and later. The function is passed named parameters "page" and "content". Its return @@@ -168,7 -168,7 +168,7 @@@ htmlize the page) along with the rest o hook(type => "linkify", id => "foo", call => \&linkify); - This hook is called to convert [[WikiLinks|WikiLink]] on the page into html + This hook is called to convert [[WikiLinks|ikiwiki/WikiLink]] on the page into html links. The function is passed named parameters "page", "destpage", and "content". It should return the linkified content. Present in IkiWiki 2.40 and later. @@@ -189,9 -189,14 +189,14 @@@ The function is passed named parameters return the htmlized content. If `hook` is passed an optional "keepextension" parameter, set to a true - value, then this extension will not be stripped from the source filename when + value, then the extension will not be stripped from the source filename when generating the page. + If `hook` is passed an optional "noextension" parameter, set to a true + value, then the id parameter specifies not a filename extension, but + a whole filename that can be htmlized. This is useful for files + like `Makefile` that have no extension. + ### pagetemplate hook(type => "pagetemplate", id => "foo", call => \&pagetemplate); @@@ -321,26 -326,6 +326,26 @@@ This hook should avoid directly redirec since it's sometimes used to test to see which pages in a set of pages a user can edit. +### canremove + + hook(type => "canremove", id => "foo", call => \&canremove); + +This hook can be used to implement arbitrary access methods to control +when a page can be removed using the web interface (commits from +revision control bypass it). It works exactly like the `canedit` hook, +but is passed the named parameters `cgi` (a CGI object), `session` +(a session object) and `page` (the page subject to deletion). + +### canrename + + hook(type => "canrename", id => "foo", call => \&canrename); + +This hook can be used to implement arbitrary access methods to control when +a page can be renamed using the web interface (commits from revision control +bypass it). It works exactly like the `canedit` hook, +but is passed the named parameters `cgi` (a CGI object), `session` (a +session object), `src`, `srcfile`, `dest` and `destfile`. + ### checkcontent hook(type => "checkcontent", id => "foo", call => \&checkcontent); @@@ -353,9 -338,8 +358,9 @@@ the content the user has entered is a c additional parameters: `author`, `url`, and `subject`. The `subject` parameter may also be filled with the user's comment about the change. -Note: When the user edits an existing wiki page, the passed `content` will -include only the lines that they added to the page, or modified. +Note: When the user edits an existing wiki page, this hook is also +passed a `diff` named parameter, which will include only the lines +that they added to the page, or modified. The hook should return `undef` on success. If the content is disallowed, it should return a message stating what the problem is, or a function @@@ -406,24 -390,9 +411,24 @@@ they're saved, etc hook(type => "renamepage", id => "foo", call => \&renamepage); This hook is called by the [[plugins/rename]] plugin when it renames -something. The hook is passed named parameters: `page`, `oldpage`, -`newpage`, and `content`, and should try to modify the content to reflect -the name change. For example, by converting links to point to the new page. +something, once per page linking to the renamed page's old location. +The hook is passed named parameters: `page`, `oldpage`, `newpage`, and +`content`, and should try to modify the content of `page` to reflect +the name change. For example, by converting links to point to the +new page. + +### rename + + hook(type => "rename", id => "foo", call => \&rename); + +When a page or set of pages is renamed, the referenced function is +called, and is passed named parameters: + +* `torename`: a reference to an array of hashes with keys: `src`, `srcfile`, + `dest`, `destfile`, `required`. Such a hook function can either return the + array content unchanged, or modify it and return the modified version. +* `cgi`: a CGI object +* `session`: a session object. ### getsetup @@@ -470,7 -439,7 +475,7 @@@ describes the plugin as a whole. For ex * `example` can be set to an example value. * `description` is a short description of the option. * `link` is a link to further information about the option. This can either - be a wikilink, or an url. + be a [[ikiwiki/WikiLink]], or an url. * `advanced` can be set to true if the option is more suitable for advanced users. * `safe` should be false if the option should not be displayed in unsafe @@@ -665,6 -634,16 +670,16 @@@ A failure to write the file will resul If the destination directory doesn't exist, it will first be created. + The filename and directory are separate parameters because of + some security checks done to avoid symlink attacks. Before writing a file, + it checks to make sure there's not a symlink with its name, to avoid + following the symlink. If the filename parameter includes a subdirectory + to put the file in, it also checks if that subdirectory is a symlink, etc. + The directory parameter, however, is not checked for symlinks. So, + generally the directory parameter is a trusted toplevel directory like + the srcdir or destdir, and any subdirectories of this are included in the + filename parameter. + #### `will_render($$)` Given a page name and a destination file name (not including the base @@@ -706,7 -685,7 +721,7 @@@ a wiki page name #### `linkpage($)` This converts text that could have been entered by the user as a - [[WikiLink]] into a wiki page name. + [[ikiwiki/WikiLink]] into a wiki page name. #### `srcfile($;$)` @@@ -771,7 -750,7 +786,7 @@@ are collected together to form the Rece To make an internal use page, register a filename extension that starts with "_". Internal use pages cannot be edited with the web interface, - generally shouldn't contain wikilinks or preprocessor directives (use + generally shouldn't contain [[WikiLinks|ikiwiki/WikiLink]] or preprocessor directives (use either on them with extreme caution), and are not matched by regular PageSpecs glob patterns, but instead only by a special `internal()` [[ikiwiki/PageSpec]]. @@@ -940,7 -919,7 +955,7 @@@ or wrap one of the functions For example, your plugin might want to override `displaytime`, to change the html markup used when displaying a date. Or it might want to override `IkiWiki::formattime`, to change how a date is formatted. Or perhaps you - want to override `bestlink` and change how ikiwiki deals with WikiLinks. + want to override `bestlink` and change how ikiwiki deals with [[WikiLinks|ikiwiki/WikiLink]]. By venturing into this territory, your plugin is becoming tightly tied to ikiwiki's internals. And it might break if those internals change. But