Merge commit 'upstream/master' into prv/po

master
intrigeri 2009-01-13 12:26:43 +01:00
commit 82197bd0ea
47 changed files with 505 additions and 131 deletions

View File

@ -1658,7 +1658,7 @@ sub gettext {
sub yesno ($) {
my $val=shift;
return (defined $val && lc($val) eq gettext("yes"));
return (defined $val && (lc($val) eq gettext("yes") || lc($val) eq "yes" || $val eq "1"));
}
sub inject {
@ -1807,19 +1807,25 @@ sub new {
package IkiWiki::PageSpec;
sub derel ($$) {
my $path=shift;
my $from=shift;
if ($path =~ m!^\./!) {
$from=~s#/?[^/]+$## if defined $from;
$path=~s#^\./##;
$path="$from/$path" if length $from;
}
return $path;
}
sub match_glob ($$;@) {
my $page=shift;
my $glob=shift;
my %params=@_;
my $from=exists $params{location} ? $params{location} : '';
# relative matching
if ($glob =~ m!^\./!) {
$from=~s#/?[^/]+$##;
$glob=~s#^\./##;
$glob="$from/$glob" if length $from;
}
$glob=derel($glob, $params{location});
my $regexp=IkiWiki::glob2re($glob);
if ($page=~/^$regexp$/i) {
@ -1844,15 +1850,9 @@ sub match_link ($$;@) {
my $link=lc(shift);
my %params=@_;
$link=derel($link, $params{location});
my $from=exists $params{location} ? $params{location} : '';
# relative matching
if ($link =~ m!^\.! && defined $from) {
$from=~s#/?[^/]+$##;
$link=~s#^\./##;
$link="$from/$link" if length $from;
}
my $links = $IkiWiki::links{$page};
return IkiWiki::FailReason->new("$page has no links") unless $links && @{$links};
my $bestlink = IkiWiki::bestlink($from, $link);
@ -1880,6 +1880,9 @@ sub match_backlink ($$;@) {
sub match_created_before ($$;@) {
my $page=shift;
my $testpage=shift;
my %params=@_;
$testpage=derel($testpage, $params{location});
if (exists $IkiWiki::pagectime{$testpage}) {
if ($IkiWiki::pagectime{$page} < $IkiWiki::pagectime{$testpage}) {
@ -1897,6 +1900,9 @@ sub match_created_before ($$;@) {
sub match_created_after ($$;@) {
my $page=shift;
my $testpage=shift;
my %params=@_;
$testpage=derel($testpage, $params{location});
if (exists $IkiWiki::pagectime{$testpage}) {
if ($IkiWiki::pagectime{$page} > $IkiWiki::pagectime{$testpage}) {

View File

@ -508,7 +508,7 @@ sub sessioncgi ($$) {
# Jump to the new comment on the page.
# The trailing question mark tries to avoid broken
# caches and get the most recent version of the page.
IkiWiki::redirect($cgi, urlto($page, undef, 1)."#$location?updated");
IkiWiki::redirect($cgi, urlto($page, undef, 1)."?updated#$location");
}
else {
@ -604,6 +604,12 @@ sub pagetemplate (@) {
}
}
# everything below this point is only relevant to the comments
# themselves
if (!exists $commentstate{$page}) {
return;
}
if ($template->query(name => 'commentuser')) {
$template->param(commentuser =>
$commentstate{$page}{commentuser});
@ -628,6 +634,14 @@ sub pagetemplate (@) {
$template->param(commentauthorurl =>
$commentstate{$page}{commentauthorurl});
}
if ($template->query(name => 'removeurl') &&
IkiWiki::Plugin::remove->can("check_canremove") &&
length $config{cgiurl}) {
$template->param(removeurl => IkiWiki::cgiurl(do => 'remove',
page => $page));
$template->param(have_actions => 1);
}
}
package IkiWiki::PageSpec;

View File

@ -87,6 +87,8 @@ sub match_sourcepage ($$;@) {
shift;
my $glob=shift;
my %params=@_;
$glob=derel($glob, $params{location});
return IkiWiki::FailReason->new("cannot match sourcepage") unless exists $params{sourcepage};
if (match_glob($params{sourcepage}, $glob, @_)) {
@ -102,6 +104,8 @@ sub match_destpage ($$;@) {
my $glob=shift;
my %params=@_;
$glob=derel($glob, $params{location});
return IkiWiki::FailReason->new("cannot match destpage") unless exists $params{destpage};
if (match_glob($params{destpage}, $glob, @_)) {
return IkiWiki::SuccessReason->new("destpage matches $glob");

View File

@ -94,8 +94,8 @@ sub getsetup () {
},
diffurl => {
type => "string",
example => "http://git.example.com/gitweb.cgi?p=wiki.git;a=blobdiff;h=[[sha1_to]];hp=[[sha1_from]];hb=[[sha1_parent]];f=[[file]]",
description => "gitweb url to show a diff ([[sha1_to]], [[sha1_from]], [[sha1_parent]], [[sha1_commit]] and [[file]] substituted)",
example => "http://git.example.com/gitweb.cgi?p=wiki.git;a=blobdiff;f=[[file]];h=[[sha1_to]];hp=[[sha1_from]];hb=[[sha1_commit]];hpb=[[sha1_parent]]",
description => "gitweb url to show a diff ([[file]], [[sha1_to]], [[sha1_from]], [[sha1_commit]], and [[sha1_parent]] substituted)",
safe => 1,
rebuild => 1,
},

View File

@ -22,6 +22,7 @@ my @bundle=qw{
template
toc
toggle
repolist
};
sub import {

View File

@ -106,7 +106,7 @@ sub ping {
# will still be avoided.
next if $url=~/^\Q$config{cgiurl}\E/;
$ua->head($url);
$ua->get($url);
}
exit 0;

View File

@ -413,22 +413,8 @@ sub sessioncgi ($$) {
$template->param(error => $rename->{error});
if ($rename->{src} ne $rename->{dest}) {
$template->param(brokenlinks_checked => 1);
$template->param(brokenlinks => [
map {
{
page => htmllink($rename->{dest}, $rename->{dest}, $_,
noimageinline => 1)
}
} @{$rename->{brokenlinks}}
]);
$template->param(fixedlinks => [
map {
{
page => htmllink($rename->{dest}, $rename->{dest}, $_,
noimageinline => 1)
}
} @{$rename->{fixedlinks}}
]);
$template->param(brokenlinks => linklist($rename->{dest}, $rename->{brokenlinks}));
$template->param(fixedlinks => linklist($rename->{dest}, $rename->{fixedlinks}));
}
$renamesummary.=$template->output;
}
@ -442,6 +428,23 @@ sub sessioncgi ($$) {
exit 0;
}
}
sub linklist {
# generates a list of links in a form suitable for FormBuilder
my $dest=shift;
my $list=shift;
# converts a list of pages into a list of links
# in a form suitable for FormBuilder.
[map {
{
page => htmllink($dest, $dest, $_,
noimageinline => 1,
linktext => pagetitle($_),
)
}
} @{$list}]
}
sub renamelink_hook ($$$$) {
my ($page, $src, $dest, $content)=@_;

View File

@ -0,0 +1,51 @@
#!/usr/bin/perl
package IkiWiki::Plugin::repolist;
use warnings;
use strict;
use IkiWiki 3.00;
sub import {
hook(type => "getsetup", id => "repolist", call => \&getsetup);
hook(type => "checkconfig", id => "repolist", call => \&checkconfig);
}
sub getsetup () {
return
plugin => {
safe => 1,
rebuild => undef,
},
repositories => {
type => "string",
example => ["svn://svn.example.org/wiki/trunk"],
description => "URIs of repositories containing the wiki's source",
safe => 1,
rebuild => undef,
},
}
my $relvcs;
sub checkconfig () {
if (defined $config{rcs} && $config{repositories}) {
$relvcs=join("\n", map {
s/"//g; # avoid quotes just in case
qq{<link rel="vcs-$config{rcs}" href="$_" title="wiki $config{rcs} repository" />}
} @{$config{repositories}});
hook(type => "pagetemplate", id => "repolist", call => \&pagetemplate);
}
}
sub pagetemplate (@) {
my %params=@_;
my $page=$params{page};
my $template=$params{template};
if (defined $relvcs && $template->query(name => "relvcs")) {
$template->param(relvcs => $relvcs);
}
}
1

View File

@ -6,7 +6,7 @@ package IkiWiki::Plugin::skeleton;
use warnings;
use strict;
use IkiWiki 2.00;
use IkiWiki 3.00;
sub import {
hook(type => "getopt", id => "skeleton", call => \&getopt);
@ -90,7 +90,7 @@ sub linkify (@) {
return $params{content};
}
sub scan (@) { #{{{a
sub scan (@) {
my %params=@_;
debug("skeleton plugin running as scan");

View File

@ -8,7 +8,7 @@ use IkiWiki 3.00;
sub import {
hook(type => "getsetup", id => "table", call => \&getsetup);
hook(type => "preprocess", id => "table", call => \&preprocess);
hook(type => "preprocess", id => "table", call => \&preprocess, scan => 1);
}
sub getsetup () {
@ -27,13 +27,31 @@ sub preprocess (@) {
);
if (exists $params{file}) {
if (! $pagesources{$params{file}}) {
if (! exists $pagesources{$params{file}}) {
error gettext("cannot find file");
}
$params{data} = readfile(srcfile($params{file}));
add_depends($params{page}, $params{file});
}
if (! defined wantarray) {
# scan mode -- if the table uses an external file, need to
# scan that file too.
return unless exists $params{file};
IkiWiki::run_hooks(scan => sub {
shift->(
page => $params{page},
content => $params{data},
);
});
# Preprocess in scan-only mode.
IkiWiki::preprocess($params{page}, $params{page}, $params{data}, 1);
return;
}
if (lc $params{format} eq 'auto') {
# first try the more simple format
if (is_dsv_data($params{data})) {
@ -50,22 +68,18 @@ sub preprocess (@) {
defined $params{delimiter} ? $params{delimiter} : ",",);
# linkify after parsing since html link quoting can
# confuse CSV parsing
if (! exists $params{file}) {
@data=map {
[ map {
IkiWiki::linkify($params{page},
$params{destpage}, $_);
} @$_ ]
} @data;
}
@data=map {
[ map {
IkiWiki::linkify($params{page},
$params{destpage}, $_);
} @$_ ]
} @data;
}
elsif (lc $params{format} eq 'dsv') {
# linkify before parsing since wikilinks can contain the
# delimiter
if (! exists $params{file}) {
$params{data} = IkiWiki::linkify($params{page},
$params{destpage}, $params{data});
}
$params{data} = IkiWiki::linkify($params{page},
$params{destpage}, $params{data});
@data=split_dsv($params{data},
defined $params{delimiter} ? $params{delimiter} : "|",);
}

15
debian/NEWS vendored
View File

@ -1,3 +1,18 @@
ikiwiki (3.01) unstable; urgency=low
If your wiki uses git, and you have a `diffurl` configured in
its setup file, you should be aware that gitweb has stopped
supporting the url form commonly used for the `diffurl`.
You can change your setup to use the newer gitweb url form:
http://git.example.com/gitweb.cgi?p=wiki.git;a=blobdiff;f=[[file]];h=[[sha1_to]];hp=[[sha1_from]];hb=[[sha1_commit]];hpb=[[sha1_parent]]
The changes from the old form are the addition of the `hpb` parameter,
and the change to the value used for the `hb` parameter.
-- Joey Hess <joeyh@debian.org> Mon, 05 Jan 2009 18:18:05 -0500
ikiwiki (3.00) unstable; urgency=low
The 3.0 release of ikiwiki changes several defaults and finishes

30
debian/changelog vendored
View File

@ -1,3 +1,33 @@
ikiwiki (3.02) UNRELEASED; urgency=low
* table: Fix misparsed links in external files.
* table: Find links in external files in scan pass.
* rename: Show full names of affected pages.
* comments: Fix cache avoidance hack.
* repolist: New plugin to support the rel=vcs-* microformat.
* goodstuff: Include repolist by default. (But it does nothing until
configured with the repository locations.)
* comments: Add support for removing comments via web interface. (smcv)
* Consistently allow use of relative paths in all PageSpecs
that take a page name parameter. Previously, match_created_before(),
match_created_after(), match_sourcepage(), and match_destpage()
did not support that, and the docs were not clear.
* pinger: Get whole url, don't just head.
-- Joey Hess <joeyh@debian.org> Tue, 06 Jan 2009 15:02:52 -0500
ikiwiki (3.01) unstable; urgency=low
* ikiwiki-makerepo: Fix injecting of empty mercurial and bzr repositories.
Closes: #510518
* Fix documentation about git hook to use right name. Closes: #510393
* yesno: Always accept English even when localised.
* yesno: Also accept 1 and 0 as input.
* A recent change to gitweb removed support for the form of diffurl
that many ikiwiki setups use. Document how to use the new url form.
-- Joey Hess <joeyh@debian.org> Mon, 05 Jan 2009 18:53:50 -0500
ikiwiki (3.00) unstable; urgency=low
* Remove support for GlobLists.

View File

@ -0,0 +1,44 @@
I keep getting:
Error: Your login session has expired.
Whilst trying to edit http://hugh.vm.bytemark.co.uk/ikiwiki.cgi via OpenID. Any ideas?
iki@hugh:~$ dpkg -l | grep openid
ii libnet-openid-consumer-perl 0.14-4 library for consumers of OpenID iden
tities
iki@hugh:~$
> This error occurs if ikiwiki sees something that looks like a CSRF
> attack. It checks for such an attack by embedding your session id on the
> page edit form, and comparing that id with the session id used to post
> the form.
>
> So, somehow your session id has changed between opening the edit form and
> posting it. A few ways this could happen:
>
> * Genuine CSRF attack (unlikely)
> * If you logged out and back in, in another tab, while the edit form was
> open.
> * If `.ikiwiki/sessions.db` was deleted/corrupted while you were in the
> midst of the edit.
> * If some bug in CGI::Session caused your session not to be saved to the
> database somehow.
> * If your browser didn't preserve the session cookie across the edit
> process, for whatever local reason.
> * If you were using a modified version of `editpage.tmpl`, and
> it did not include `FIELD-SID`.
> * If you upgraded from an old version of ikiwiki, before `FIELD-SID` was
> added (<= 2.41), and had an edit form open from that old version, and
> tried to save it using the new.
>
> I don't see the problem editing the sandbox there myself, FWIW.
> (BTW, shouldn't you enable the meta plugin so RecentChanges displays
> better?)
> --[[joey]]
Thanks for you excellent analysis. The bug was due to old pre-3.0 **templates** laying about. After deleting them, ikiwiki defaults to its own templates. Clever. :-)
[[bugs/done]]

View File

@ -0,0 +1,19 @@
I've noticed that Ikiwiki displays URLs with parentheses badly. The problem occurs
in the latest version 3.00 and older versions. Please look at the link to following
Polish entry about C programming language at Wikipedia (it seems that URLs with
parentheses are popular there):
[Język programowania C](http://pl.wikipedia.org/wiki/C_(j%C4%99zyk_programowania))
I need to escape a closing parenthesis of the URL to fix the problem.
[Język programowania C](http://pl.wikipedia.org/wiki/C_(j%C4%99zyk_programowania\))
--[[Paweł|users/ptecza]]
> This is a bug in markdown version 1. It is fixed in [[!cpan Text::Markdown]],
> which ikiwiki will use if it's installed. [[done]] --[[Joey]]
>> Thanks a lot for the hint, Joey! I've installed `libtext-markdown-perl` package
>> (Aptitude has removed `markdown` package to satisfy dependencies) and now
>> I don't need to escape Wikipedia URLs with parentheses :) --[[Paweł|users/ptecza]]

View File

@ -24,4 +24,9 @@ Here is a patch against ikiwiki-1.51 for using find(1) and install(1) instead of
>> No, apparently FreeBSD `install` does not support `-D`. See [the FreeBSD install manpage](http://www.freebsd.org/cgi/man.cgi?query=install&apropos=0&sektion=0&manpath=FreeBSD+6.2-RELEASE&format=html). --[[JoshTriplett]]
>> Patch applied; [[bugs/done]]. --[[JoshTriplett]]
>> Patch applied; [[done]]. --[[JoshTriplett]]
There are still/again "cp -a"s in the Makefile as of 3.00
> It's a cp -a || install. Is that causing you a problem somehow?
> --[[Joey]]

View File

@ -3,8 +3,8 @@ matches all other pages, including all internal pages. This can lead to
unexpected results, since it will match a bunch of recentchanges pages,
etc.
Recall that internal-use pages are not matched by a glob. So "*" doesn't
match them. So if the pagespec is "* and !foo and !bar", it won't match
Recall that internal-use pages are not matched by a glob. So "\*" doesn't
match them. So if the pagespec is "\* and !foo and !bar", it won't match
them. This is the much more common style.
There's an odd inconsistency with entirely negated pagespecs. If "!foo"

View File

@ -8,3 +8,7 @@ cases of the one which was installed directly before the current commit.
> I don't see one, except for diffs that show all changes in the commit,
> rather than only changes to a single file. This feels like a bug in
> gitweb. --[[Joey]]
This is fixed by using the new gitweb style urls. Which new gitweb
requires, but is a manual change you have to make in your setup. So,
[[done]] --[[Joey]]

View File

@ -8,3 +8,6 @@ Going from *RecentChanges*, when viewing the diffs of newly created pages
> I don't see any way to make gitweb do that. You can click on the filename
> after the "diff -cc" to see the whole file output, but gitweb won't show
> a diff for a newly added file. --[[Joey]]
>> happily this, too, is fixed by using the new style gitweb urls. [[done]]
>> --[[Joey]]

View File

@ -12,6 +12,16 @@ Oh, wait, I see the problem. IkiWiki::linkify is only called if the external fil
(this is inside /usr/share/perl5/IkiWiki/Plugin/table.pm).
> To reproduce this bug, I had to install the old, broken markdown 1.0,
> instead of the now-default Text::Markdown.
>
> Why is linkify not called for external files? Well, I checked the
> history, and it's probably best to say "for historical reasons that no
> longer apply". So, changed as you suggest. [[done]] --[[Joey]]
I am rather confused what this check does, and the fact the comments are very different for CSV and DSV when the code is the same doesn't seem to help.
> The code is not the same; two operations are run in different orders for
> CSV and DSV, as the comments note. --[[Joey]]
-- Brian May

View File

@ -10,3 +10,5 @@ The following pages have been automatically modified to update their links to us
<li><a href="./../../tips/convert_mediawiki_to_ikiwiki/discussion/">discussion</a></li><li><a href="./../../tips/untrusted_git_push/discussion/">discussion</a></li></ul>...
In this situation I think the link to pages should be expanded to show the entire path, since there is quite likely to be a lot of things like "discussion". -- [[users/Jon]]
[[done]]

View File

@ -14,3 +14,5 @@ The `IkiWiki::pagetitle` function does not respect title changes via `meta.title
>> It was actually more complicated than expected. A working prototype is
>> now in my `meta` branch, see my userpage for the up-to-date url.
>> Thus tagging [[patch]]. --[[intrigeri]]
>>
>>> Joey, please consider merging my `meta` branch. --[[intrigeri]]

View File

@ -0,0 +1,9 @@
If wikilinks are put in an external table file, those links are not seen at
scan time, and so ikiwiki does not know to update the page containing the
table when the pages the links point to change (are added, removed, etc).
There seem only two solutions to that bug -- either really make wikilinks
in an external table file not work (probably by escaping them),
or run the preprocess code also in scan (expensive!). --[[Joey]]
[[done]]

View File

@ -6,19 +6,20 @@ ikiwiki-makerepo - check an ikiwiki srcdir into revision control
ikiwiki-makerepo svn|git|monotone srcdir repository
ikiwiki-makerepo mercurial srcdir
ikiwiki-makerepo bzr|mercurial srcdir
# DESCRIPTION
`ikiwiki-makerepo` injects a `srcdir` directory, containing an ikiwiki wiki,
into a `repository` that it creates. The repository can be a svn, git, or
mercurial repository.
into a `repository` that it creates. The repository can be created using
any of a variety of revision control systems.
Note that for mercurial, the srcdir is converted into a mercurial
repository. There is no need to have a separate repository with mercurial.
Note that for mercurial and bzr, the srcdir is converted into a
repository. There is no need to have a separate repository with mercurial
or bzr.
Note that for monotone, you are assumed to already have run "mtn genkey" to generate
key.
Note that for monotone, you are assumed to already have run "mtn genkey"
to generate a key.
# AUTHOR

View File

@ -2,7 +2,6 @@ Projects
========
* [This wiki](http://ikiwiki.info) (of course!)
* [UK Software Patents info page](http://www.softwarepatents.co.uk/)
* [Planet Debian upstream](http://updo.debian.net/)
* The [ion window manager homepage](http://modeemi.fi/~tuomov/ion/)
* [Debian Mentors wiki](http://jameswestby.net/mentors/)
@ -22,7 +21,7 @@ Projects
* The [Debian Packaging Handbook project](http://packaging-handbook.alioth.debian.org/wiki/)
* The [libkdtree project](http://libkdtree.alioth.debian.org)
* The [pcc](http://pcc.ludd.ltu.se/) (Portable C Compiler) project. (Simple rcs backend)
* [The TOVA Company](http://www.tovatest.com) public site. We also use it for internal documentation and issue tracking, all with a [[rcs/Git]] backend.
* [The TOVA Company](http://www.tovatest.com) public site. We also use it for internal documentation and issue tracking, all with a [[rcs/Git]] backend.
* Technical support websites for [Homebase](http://support.homebase.dk) and [Kaospilotene](http://support.kaospilot.no) (each with [source](http://source.homebase.dk/) [provided](http://source.kaospilot.no/))
* [CampusGrün Hamburg](http://www.campusgruen.org/)
* The [awesome window manager homepage](http://awesome.naquadah.org/)

View File

@ -0,0 +1,21 @@
News for ikiwiki 3.01:
If your wiki uses git, and you have a `diffurl` configured in
its setup file, you should be aware that gitweb has stopped
supporting the url form commonly used for the `diffurl`.
You can change your setup to use the newer gitweb url form:
http://git.example.com/gitweb.cgi?p=wiki.git;a=blobdiff;f=\[[file]];h=\[[sha1_to]];hp=\[[sha1_from]];hb=\[[sha1_commit]];hpb=\[[sha1_parent]]
The changes from the old form are the addition of the `hpb` parameter,
and the change to the value used for the `hb` parameter.
ikiwiki 3.01 released with [[!toggle text="these changes"]]
[[!toggleable text="""
* ikiwiki-makerepo: Fix injecting of empty mercurial and bzr repositories.
Closes: #[510518](http://bugs.debian.org/510518)
* Fix documentation about git hook to use right name. Closes: #[510393](http://bugs.debian.org/510393)
* yesno: Always accept English even when localised.
* yesno: Also accept 1 and 0 as input.
* A recent change to gitweb removed support for the form of diffurl
that many ikiwiki setups use. Document how to use the new url form."""]]

View File

@ -3,3 +3,6 @@ revison history of a page. This is enabled by the `historyurl` setting,
which is used to specify the URL to a web interface such as [[ViewVC]]
(for Subversion) or [[Gitweb]]. In that url, "\[[file]]" is replaced with
the name of the file to view.
The [[plugins/repolist]] plugin can suppliment this information with
urls to the underlying repository of the wiki.

View File

@ -86,6 +86,9 @@ Any thoughts on this?
>>> to avoid breaking existing functionality, it implies to hack a bit
>>> [[plugins/edittemplate]] so that multiple templates can be
>>> inserted at page creation time. [[--intrigeri]]
>>>
>>>> I implemented such a warning using the formbuilder_setup hook.
>>>> --[[intrigeri]]
>>
>> And also, is there any way to start a translation of a page into a new
>> lanauge using the web interface?
@ -139,6 +142,11 @@ Any thoughts on this?
>>>>> to have the links text generation more customizable through
>>>>> plugins, I could do both at the same time if we consider this
>>>>> matter to be important enough. --[[intrigeri]]
>>>>>
>>>>>> The translation status in links is now implemented in my
>>>>>> `po`branch. It requires my `meta` branch changes to
>>>>>> work, though. I consider the latter to be mature enough to
>>>>>> be merged. --[[intrigeri]]
>> FWIW, I'm tracking your po branch in ikiwiki master git in the po
>> branch. One thing I'd like to try in there is setting up a translated

View File

@ -24,5 +24,6 @@ Currently included:
* [[template]]
* [[toc]]
* [[toggle]]
* [[repolist]]
New plugins will be added to this bundle from time to time.

View File

@ -0,0 +1,17 @@
[[!template id=plugin name=repolist author="[[Joey]]"]]
[[!tag type/useful]]
This plugin allows you to configure ikiwiki with the location of
[[rcs]] repositories for your wiki's source. This is done via the
"repositories" setting in the setup file. Once you tell it where the source
to your wiki can be downloaded from, this information can be published on
your wiki in various ways.
This plugin supports the [rel-vcs-*](http://kitenet.net/~joey/rfc/rel-vcs/)
microformat, and uses it to embed the repository location information in
every wiki page.
By using this plugin, you will make [[Joey]] very happy, as he will be able
to easily check out the source of your wiki, for purposes of debugging and
general curiosity. More generally, making it easy for others to find the
repository for your wiki is just a Plain Good Idea(TM).

View File

@ -20,9 +20,9 @@ working clones (with working directories) as leaf nodes. The root
working clones.
One of the leaf node clone repositories is special; it has working
directory which is used to compile the wiki from, and is also used by the
directory which is used to compile the wiki, and is also used by the
[[cgi]] to commit changes made via the web interface. It is special
since the `post-commit` hook for the bare root repository is used to
since the `post-update` hook for the bare root repository is used to
trigger an update of this repository, and then an ikiwiki refresh
updates the published wiki itself.
@ -43,9 +43,9 @@ repositories:
repositories will push to/pull from. It is a bare repository, since
there are problems pushing to a repository that has a working
directory. This is called _repository_ in [[ikiwiki-makerepo]]'s
manual page. Nominally, this bare repository has a `post-commit` hook
manual page. Nominally, this bare repository has a `post-update` hook
that either is or calls ikiwiki's git wrapper, which changes to the
working directory for ikiwiki, does a _git pull_, and refreshes ikiwiki
working directory for ikiwiki, does a `git pull`, and refreshes ikiwiki
to regenerate the wiki with any new content. The [[setup]] page describes
how to do this.
@ -64,7 +64,7 @@ repositories:
hack on your wiki. you can commit local changes to the version on
the laptop, perhaps while offline. Any new content should be pushed to the
bare master repository when you are ready to publish it, and then
the post-commit hook of the bare repository will ensure that the
the post-update hook of the bare repository will ensure that the
ikiwiki's source directory is updated, and the ikiwiki refreshed
with the new content.
@ -79,7 +79,7 @@ It is **paramount** that you **never** push to the non-bare repository
Instead, clone the bare repository as mentioned above, and push
**only** to the bare repository.
The ikiwiki `post-commit` hook should be put in the bare repository.
The ikiwiki `post-update` hook should be put in the bare repository.
## git repository with multiple committers
@ -147,7 +147,7 @@ is the normal behaviour of ikiwiki, set the configuration of the local wiki:
gitorigin_branch => "",
## git post-commit wrapper
wrapper => "/working/dir/.git/hooks/post-commit",
git_wrapper => "/working/dir/.git/hooks/post-commit",
Then just committing should refresh the private ikiwiki on the local
host. Now just run `ikiwiki -setup localwiki.setup -getctime` and

View File

@ -1,5 +1,7 @@
This is the SandBox, a page anyone can edit to try out ikiwiki.
hello
testing 1..2..3!!
----
@ -83,3 +85,13 @@ The haiku will change after every save, mind you.
This SandBox is also a [[blog]]!
[[!inline pages="sandbox/* and !*/Discussion" rootpage="sandbox" show="4" archive="yes"]]
--------
This gives an example of inline code: `tar | netcat` is a nice way to transfer bulk files over the net
But, of course, rsync is better.
----
Let's see what happens... ~~

View File

@ -0,0 +1 @@
Foobaka bakfoo.

View File

@ -0,0 +1 @@
~를 어떻게 할까~

View File

@ -0,0 +1,2 @@
Wow test

View File

@ -0,0 +1,4 @@
For people that were not born with GNU emacs fingers,
there is a markdown editor (with preview and outline)
for [eclipse](http://www.eclipse.org) available
[here](http://www.winterwell.com/software/markdown-editor.php).

View File

@ -37,8 +37,8 @@ following to your setup file:
prefix_directives => 0,
To convert to the new syntax, run
`ikiwiki-transition prefix_directives your.setup`
To convert to the new syntax, make sure that your setup file does *not*
contain the above, then run `ikiwiki-transition prefix_directives your.setup`
(And then commit the changes it makes to pages in your srcdir.)

View File

@ -0,0 +1,18 @@
This patch allows disabling the backlinks in the config file by setting nobacklinks to 0.
It is backwards compatible, and by default enables backlinks in the generated pages.
<pre>
--- IkiWiki/Render.pm.orig2 2009-01-06 14:54:01.000000000 +1300
+++ IkiWiki/Render.pm 2009-01-06 14:55:08.000000000 +1300
@@ -107,7 +107,8 @@
$template->param(have_actions => 1);
}
- my @backlinks=sort { $a->{page} cmp $b->{page} } backlinks($page);
+ my @backlinks=sort { $a->{page} cmp $b->{page} } backlinks($page)
+ unless defined $config{nobacklinks} && $config{nobacklinks} == 0;
my ($backlinks, $more_backlinks);
if (@backlinks <= $config{numbacklinks} || ! $config{numbacklinks}) {
$backlinks=\@backlinks;
</pre>

View File

@ -10,19 +10,6 @@
> it's hard enough to get some people to title their blog posts :-)
> --[[smcv]]
* If a spammer posts a comment, it is either impossible or hard to clean
up via the web. Would be nice to have some kind of link on the comment
that allows trusted users to remove it (using the remove plugin of
course).
> Won't the remove plugin refuse to remove internal pages? This would be
> a good feature to have, though. --[[smcv]]
> Here, FWIW, is the first ikiwiki comment spam I've seen:
> <http://waldeneffect.org/blog/Snake_bite_information/#blog/Snake_bite_information/comment_1>
> So that took about 10 days...
> --[[Joey]]
## Patches pending merge
* There is some common code cargo-culted from other plugins (notably inline and editpage) which
@ -147,3 +134,22 @@
first. --[[smcv]]
> done --[[Joey]]
* If a spammer posts a comment, it is either impossible or hard to clean
up via the web. Would be nice to have some kind of link on the comment
that allows trusted users to remove it (using the remove plugin of
course).
> Won't the remove plugin refuse to remove internal pages? This would be
> a good feature to have, though. --[[smcv]]
> Here, FWIW, is the first ikiwiki comment spam I've seen:
> <http://waldeneffect.org/blog/Snake_bite_information/#blog/Snake_bite_information/comment_1>
> So that took about 10 days...
> --[[Joey]]
>> Implemented in my 'comments' branch, please review. It turns out
>> [[plugins/remove]] is happy to remove internal pages, so it was quite
>> easy to do. --[[smcv]]
>>> done --[[Joey]]

View File

@ -6,6 +6,8 @@ The problem is that I occasionally have xxx.c and xxx.h in the same directory an
My solution is to allow plugins to provide a hook that sets the pagename. --[[/users/bstpierre]]
> You might also find the solution to [[bugs/multiple_pages_with_same_name]] helps you. That patch is already applied. -- [[Will]]
--- /usr/share/perl5/IkiWiki.pm.ORIG 2008-10-03 14:12:50.000000000 -0400
+++ /usr/share/perl5/IkiWiki.pm 2008-10-07 11:57:26.000000000 -0400
@@ -196,11 +196,32 @@

View File

@ -0,0 +1,8 @@
While a relative pagespec like `./posts/*` will work, when used in a page
such as `bdale/blog`, you cannot do
`created_after(./posts/foo)` -- only `glob()` supports relative page
references.
The other pagespec functions should too, where appropriate.
[[done]]

View File

@ -15,5 +15,7 @@ use IkiWiki::Setup::Standard {
userdir => "users",
usedirs => 0,
prefix_directives => 1,
cgiurl => "http://me",
url => "http://me",
add_plugins => [qw{goodstuff version haiku polygen fortune}],
}

View File

@ -75,7 +75,7 @@ mercurial)
hg init "$srcdir"
cd "$srcdir"
echo .ikiwiki > .hgignore
hg add * .hgignore
hg add
hg commit -m "initial import"
echo "Directory $srcdir is now set up as a mercurial repository"
;;
@ -83,7 +83,7 @@ bzr)
bzr init "$srcdir"
cd "$srcdir"
echo .ikiwiki > .bzrignore
bzr add * .bzrignore
bzr add
bzr commit -m "initial import"
echo "Directory $srcdir is now set up as a bzr repository"
;;

View File

@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ikiwiki 2.71 \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2008-12-20 18:07-0500\n"
"POT-Creation-Date: 2009-01-05 18:53-0500\n"
"PO-Revision-Date: 2008-12-29 17:57+0100\n"
"Last-Translator: Philippe Batailler <philippe.batailler@free.fr>\n"
"Language-Team: French <debian-l10n-french@lists.debian.org>\n"
@ -25,7 +25,7 @@ msgstr "Vous devez d'abord vous identifier."
msgid "login failed, perhaps you need to turn on cookies?"
msgstr "Échec de l'identification, vous devez autoriser les cookies."
#: ../IkiWiki/CGI.pm:163 ../IkiWiki/CGI.pm:310
#: ../IkiWiki/CGI.pm:163 ../IkiWiki/CGI.pm:280
msgid "Your login session has expired."
msgstr "Session d'authentification expirée."
@ -41,87 +41,87 @@ msgstr "Préférences"
msgid "Admin"
msgstr "Administrateur"
#: ../IkiWiki/CGI.pm:253
#: ../IkiWiki/CGI.pm:226
msgid "Preferences saved."
msgstr "Les préférences ont été enregistrées."
#: ../IkiWiki/CGI.pm:271
#: ../IkiWiki/CGI.pm:241
msgid "You are banned."
msgstr "Vous avez été banni."
#: ../IkiWiki/CGI.pm:401 ../IkiWiki/CGI.pm:402 ../IkiWiki.pm:1204
#: ../IkiWiki/CGI.pm:371 ../IkiWiki/CGI.pm:372 ../IkiWiki.pm:1204
msgid "Error"
msgstr "Erreur"
#: ../IkiWiki/Plugin/aggregate.pm:80
#: ../IkiWiki/Plugin/aggregate.pm:84
msgid "Aggregation triggered via web."
msgstr "Agrégation déclenchée par le web"
#: ../IkiWiki/Plugin/aggregate.pm:89
#: ../IkiWiki/Plugin/aggregate.pm:93
msgid "Nothing to do right now, all feeds are up-to-date!"
msgstr "Rien à faire pour le moment, tous les flux sont à jour !"
#: ../IkiWiki/Plugin/aggregate.pm:216
#: ../IkiWiki/Plugin/aggregate.pm:220
#, perl-format
msgid "missing %s parameter"
msgstr "Paramètre %s manquant"
#: ../IkiWiki/Plugin/aggregate.pm:251
#: ../IkiWiki/Plugin/aggregate.pm:255
msgid "new feed"
msgstr "Nouveau flux"
#: ../IkiWiki/Plugin/aggregate.pm:265
#: ../IkiWiki/Plugin/aggregate.pm:269
msgid "posts"
msgstr "Articles"
#: ../IkiWiki/Plugin/aggregate.pm:267
#: ../IkiWiki/Plugin/aggregate.pm:271
msgid "new"
msgstr "Nouveau"
#: ../IkiWiki/Plugin/aggregate.pm:431
#: ../IkiWiki/Plugin/aggregate.pm:435
#, perl-format
msgid "expiring %s (%s days old)"
msgstr "Fin de validité de %s (date de %s jours)"
#: ../IkiWiki/Plugin/aggregate.pm:438
#: ../IkiWiki/Plugin/aggregate.pm:442
#, perl-format
msgid "expiring %s"
msgstr "Fin de validité de %s"
#: ../IkiWiki/Plugin/aggregate.pm:465
#: ../IkiWiki/Plugin/aggregate.pm:469
#, perl-format
msgid "last checked %s"
msgstr "dernière vérification : %s"
#: ../IkiWiki/Plugin/aggregate.pm:469
#: ../IkiWiki/Plugin/aggregate.pm:473
#, perl-format
msgid "checking feed %s ..."
msgstr "Vérification du flux %s..."
#: ../IkiWiki/Plugin/aggregate.pm:474
#: ../IkiWiki/Plugin/aggregate.pm:478
#, perl-format
msgid "could not find feed at %s"
msgstr "Impossible de trouver de flux à %s"
#: ../IkiWiki/Plugin/aggregate.pm:493
#: ../IkiWiki/Plugin/aggregate.pm:497
msgid "feed not found"
msgstr "Flux introuvable "
#: ../IkiWiki/Plugin/aggregate.pm:504
#: ../IkiWiki/Plugin/aggregate.pm:508
#, perl-format
msgid "(invalid UTF-8 stripped from feed)"
msgstr "(chaîne UTF-8 non valable supprimée du flux)"
#: ../IkiWiki/Plugin/aggregate.pm:512
#: ../IkiWiki/Plugin/aggregate.pm:516
#, perl-format
msgid "(feed entities escaped)"
msgstr "(échappement des entités de flux)"
#: ../IkiWiki/Plugin/aggregate.pm:520
#: ../IkiWiki/Plugin/aggregate.pm:524
msgid "feed crashed XML::Feed!"
msgstr "Plantage du flux XML::Feed !"
#: ../IkiWiki/Plugin/aggregate.pm:601
#: ../IkiWiki/Plugin/aggregate.pm:605
#, perl-format
msgid "creating new page %s"
msgstr "Création de la nouvelle page %s"
@ -156,15 +156,15 @@ msgstr "Échec lors de la suppression du fichier sur S3 :"
msgid "there is already a page named %s"
msgstr "Il existe déjà une page nommée %s"
#: ../IkiWiki/Plugin/attachment.pm:82
#: ../IkiWiki/Plugin/attachment.pm:65
msgid "prohibited by allowed_attachments"
msgstr "Action interdite par allowed_attachments"
#: ../IkiWiki/Plugin/attachment.pm:190
#: ../IkiWiki/Plugin/attachment.pm:140
msgid "bad attachment filename"
msgstr "Nom de la pièce jointe incorrect"
#: ../IkiWiki/Plugin/attachment.pm:232
#: ../IkiWiki/Plugin/attachment.pm:182
msgid "attachment upload"
msgstr "Envoi de la pièce jointe"
@ -188,12 +188,12 @@ msgstr "%s sur %s"
msgid "There are no broken links!"
msgstr "Aucun lien cassé !"
#: ../IkiWiki/Plugin/comments.pm:119 ../IkiWiki/Plugin/format.pm:23
#: ../IkiWiki/Plugin/comments.pm:120 ../IkiWiki/Plugin/format.pm:23
#, perl-format
msgid "unsupported page format %s"
msgstr "Format de page non reconnu %s"
#: ../IkiWiki/Plugin/comments.pm:124
#: ../IkiWiki/Plugin/comments.pm:125
msgid "comment must have content"
msgstr "Un commentaire doit avoir un contenu."
@ -201,44 +201,44 @@ msgstr "Un commentaire doit avoir un contenu."
msgid "Anonymous"
msgstr "Anonyme"
#: ../IkiWiki/Plugin/comments.pm:243 ../IkiWiki/Plugin/recentchanges.pm:101
#: ../IkiWiki/Plugin/comments.pm:252 ../IkiWiki/Plugin/recentchanges.pm:110
msgid "missing page"
msgstr "Page manquante"
#: ../IkiWiki/Plugin/comments.pm:245 ../IkiWiki/Plugin/recentchanges.pm:103
#: ../IkiWiki/Plugin/comments.pm:254 ../IkiWiki/Plugin/recentchanges.pm:112
#, perl-format
msgid "The page %s does not exist."
msgstr "La page %s n'existe pas."
#: ../IkiWiki/Plugin/comments.pm:334 ../IkiWiki/Plugin/editpage.pm:124
#: ../IkiWiki/Plugin/comments.pm:343 ../IkiWiki/Plugin/editpage.pm:124
msgid "bad page name"
msgstr "Nom de page incorrect"
#: ../IkiWiki/Plugin/comments.pm:341
#: ../IkiWiki/Plugin/comments.pm:350
#, perl-format
msgid "commenting on %s"
msgstr "Faire un commentaire sur %s"
#: ../IkiWiki/Plugin/comments.pm:359
#: ../IkiWiki/Plugin/comments.pm:368
#, perl-format
msgid "page '%s' doesn't exist, so you can't comment"
msgstr "La page '%s' n'existe pas, commentaire impossible."
#: ../IkiWiki/Plugin/comments.pm:366
#: ../IkiWiki/Plugin/comments.pm:375
#, perl-format
msgid "comments on page '%s' are closed"
msgstr "Le commentaire pour la page '%s' est terminé."
#: ../IkiWiki/Plugin/comments.pm:468
#: ../IkiWiki/Plugin/comments.pm:483
msgid "Added a comment"
msgstr "Commentaire ajouté"
#: ../IkiWiki/Plugin/comments.pm:472
#: ../IkiWiki/Plugin/comments.pm:487
#, perl-format
msgid "Added a comment: %s"
msgstr "Commentaire ajouté : %s"
#: ../IkiWiki/Plugin/comments.pm:565
#: ../IkiWiki/Plugin/comments.pm:601
msgid "Comments"
msgstr "Commentaires"
@ -329,10 +329,6 @@ msgstr "Vous devez indiquer %s lors de l'utilisation du greffon « google »."
msgid "Failed to parse url, cannot determine domain name"
msgstr "Impossible d'analyser l'url, pas de nom de domaine"
#: ../IkiWiki/Plugin/googlecalendar.pm:32
msgid "failed to find url in html"
msgstr "Impossible de trouver une URL dans le code HTML"
#: ../IkiWiki/Plugin/graphviz.pm:67
msgid "failed to run graphviz"
msgstr "Échec du lancement de graphviz"
@ -406,7 +402,7 @@ msgstr "RPC::XML::Client introuvable, pas de réponse au ping"
msgid "failed to run dot"
msgstr "Échec du lancement de dot"
#: ../IkiWiki/Plugin/lockedit.pm:49 ../IkiWiki/Plugin/lockedit.pm:66
#: ../IkiWiki/Plugin/lockedit.pm:47
#, perl-format
msgid "%s is locked and cannot be edited"
msgstr "%s est verrouillé et ne peut être modifié"
@ -1027,7 +1023,7 @@ msgstr "Impossible de charger le greffon externe nécessaire au greffon %s : %s
msgid "preprocessing loop detected on %s at depth %i"
msgstr "Une boucle de pré traitement a été détectée sur %s à hauteur de %i"
#: ../IkiWiki.pm:1688
#: ../IkiWiki.pm:1661
msgid "yes"
msgstr "oui"
@ -1051,6 +1047,9 @@ msgstr "Identifiant de l'administrateur (utilisateur ou openid) :"
msgid "What is the domain name of the web server?"
msgstr "Nom de domaine du serveur HTTP :"
#~ msgid "failed to find url in html"
#~ msgstr "Impossible de trouver une URL dans le code HTML"
#~ msgid "processed ok at %s"
#~ msgstr "A été correctement traité à %s"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2008-12-28 15:01-0500\n"
"POT-Creation-Date: 2009-01-06 14:31-0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -237,7 +237,7 @@ msgstr ""
msgid "Added a comment: %s"
msgstr ""
#: ../IkiWiki/Plugin/comments.pm:598
#: ../IkiWiki/Plugin/comments.pm:601
msgid "Comments"
msgstr ""

21
t/yesno.t 100755
View File

@ -0,0 +1,21 @@
#!/usr/bin/perl
use warnings;
use strict;
use Test::More tests => 10;
BEGIN { use_ok("IkiWiki"); }
# note: yesno always accepts English even if localized.
# So no need to bother setting locale to C.
ok(IkiWiki::yesno("yes") == 1);
ok(IkiWiki::yesno("Yes") == 1);
ok(IkiWiki::yesno("YES") == 1);
ok(IkiWiki::yesno("no") == 0);
ok(IkiWiki::yesno("No") == 0);
ok(IkiWiki::yesno("NO") == 0);
ok(IkiWiki::yesno("1") == 1);
ok(IkiWiki::yesno("0") == 0);
ok(IkiWiki::yesno("mooooooooooo") == 0);

View File

@ -39,4 +39,15 @@ Comment by
&mdash; <TMPL_VAR CTIME>
</div>
<TMPL_IF NAME="HAVE_ACTIONS">
<div class="actions">
<ul>
<TMPL_IF NAME="REMOVEURL">
<li><a href="<TMPL_VAR REMOVEURL>" rel="nofollow">Remove comment</a></li>
</TMPL_IF>
</ul>
</div><!--.actions-->
</TMPL_IF>
</div><!--.comment-->

View File

@ -13,6 +13,7 @@
<link rel="alternate" type="application/x-wiki" title="Edit this page" href="<TMPL_VAR EDITURL>" />
</TMPL_IF>
<TMPL_IF NAME="FEEDLINKS"><TMPL_VAR FEEDLINKS></TMPL_IF>
<TMPL_IF NAME="RELVCS"><TMPL_VAR RELVCS></TMPL_IF>
<TMPL_IF NAME="META"><TMPL_VAR META></TMPL_IF>
</head>
<body>