Date: Thu, 29 Jan 2009 10:28:32 -0500
Subject: removed
---
doc/plugins/textile/discussion.mdwn | 1 -
1 file changed, 1 deletion(-)
delete mode 100644 doc/plugins/textile/discussion.mdwn
(limited to 'doc/plugins')
diff --git a/doc/plugins/textile/discussion.mdwn b/doc/plugins/textile/discussion.mdwn
deleted file mode 100644
index 945c9b46d..000000000
--- a/doc/plugins/textile/discussion.mdwn
+++ /dev/null
@@ -1 +0,0 @@
-.
\ No newline at end of file
--
cgit v1.2.3
From 46b880f8390ac82d746add01de38a05155743374 Mon Sep 17 00:00:00 2001
From: Simon McVittie
Date: Sat, 31 Jan 2009 22:32:10 +0000
Subject: Split apache404 into an independent plugin
Also make it ignore the 'do' parameter at Joey's suggestion, to have one
less thing to remember when configuring.
---
IkiWiki/CGI.pm | 49 +-------------------------
IkiWiki/Plugin/apache404.pm | 76 ++++++++++++++++++++++++++++++++++++++++
doc/plugins/apache404.mdwn | 11 ++++++
doc/tips/apache_404_handler.mdwn | 10 ------
t/apache404.t | 45 ++++++++++++++++++++++++
t/cgi_page_from_404.t | 43 -----------------------
6 files changed, 133 insertions(+), 101 deletions(-)
create mode 100644 IkiWiki/Plugin/apache404.pm
create mode 100644 doc/plugins/apache404.mdwn
delete mode 100644 doc/tips/apache_404_handler.mdwn
create mode 100755 t/apache404.t
delete mode 100755 t/cgi_page_from_404.t
(limited to 'doc/plugins')
diff --git a/IkiWiki/CGI.pm b/IkiWiki/CGI.pm
index 8734cdd49..e75ebcd27 100644
--- a/IkiWiki/CGI.pm
+++ b/IkiWiki/CGI.pm
@@ -338,46 +338,6 @@ sub cgi_goto ($;$) {
exit;
}
-sub cgi_page_from_404 ($$$) {
- my $path = shift;
- my $baseurl = shift;
- my $usedirs = shift;
-
- # fail if missing from environment or whatever
- return undef unless defined $path;
- return undef unless defined $baseurl;
-
- # with usedirs on, path is like /~fred/foo/bar/ or /~fred/foo/bar or
- # /~fred/foo/bar/index.html
- # with usedirs off, path is like /~fred/foo/bar.html
- # baseurl is like 'http://people.example.com/~fred'
-
- # convert baseurl to ~fred
- unless ($baseurl =~ s{^https?://[^/]+/?}{}) {
- return undef;
- }
-
- # convert path to /~fred/foo/bar
- if ($usedirs) {
- $path =~ s/\/*(?:index\.$config{htmlext})?$//;
- }
- else {
- $path =~ s/\.$config{htmlext}$//;
- }
-
- # remove /~fred/
- unless ($path =~ s{^/*\Q$baseurl\E/*}{}) {
- return undef;
- }
-
- # special case for the index
- unless ($path) {
- return 'index';
- }
-
- return $path;
-}
-
sub cgi (;$$) {
my $q=shift;
my $session=shift;
@@ -409,14 +369,7 @@ sub cgi (;$$) {
# commenter are for compatibility with any saved URLs
if ($do eq 'goto' || $do eq 'recentchanges_link' ||
$do eq 'commenter') {
- my $page = undef;
-
- if ($ENV{REDIRECT_STATUS} eq '404') {
- $page = cgi_page_from_404($ENV{REDIRECT_URL},
- $config{url}, $config{usedirs});
- }
-
- cgi_goto($q, $page);
+ cgi_goto($q);
}
# Need to lock the wiki before getting a session.
diff --git a/IkiWiki/Plugin/apache404.pm b/IkiWiki/Plugin/apache404.pm
new file mode 100644
index 000000000..3ac6b3af5
--- /dev/null
+++ b/IkiWiki/Plugin/apache404.pm
@@ -0,0 +1,76 @@
+#!/usr/bin/perl
+# Copyright © 2009 Simon McVittie
+# Licensed under the GNU GPL, version 2, or any later version published by the
+# Free Software Foundation
+package IkiWiki::Plugin::apache404;
+
+use warnings;
+use strict;
+use IkiWiki 3.00;
+
+sub import {
+ hook(type => "cgi", id => 'apache404', call => \&cgi);
+}
+
+sub getsetup () {
+ return
+ plugin => {
+ # not really a matter of safety, but enabling/disabling
+ # through a web interface is useless - it needs web
+ # server admin action too
+ safe => 0,
+ rebuild => 0,
+ }
+}
+
+sub cgi_page_from_404 ($$$) {
+ my $path = shift;
+ my $baseurl = shift;
+ my $usedirs = shift;
+
+ # fail if missing from environment or whatever
+ return undef unless defined $path;
+ return undef unless defined $baseurl;
+
+ # with usedirs on, path is like /~fred/foo/bar/ or /~fred/foo/bar or
+ # /~fred/foo/bar/index.html
+ # with usedirs off, path is like /~fred/foo/bar.html
+ # baseurl is like 'http://people.example.com/~fred'
+
+ # convert baseurl to ~fred
+ unless ($baseurl =~ s{^https?://[^/]+/?}{}) {
+ return undef;
+ }
+
+ # convert path to /~fred/foo/bar
+ if ($usedirs) {
+ $path =~ s/\/*(?:index\.$config{htmlext})?$//;
+ }
+ else {
+ $path =~ s/\.$config{htmlext}$//;
+ }
+
+ # remove /~fred/
+ unless ($path =~ s{^/*\Q$baseurl\E/*}{}) {
+ return undef;
+ }
+
+ # special case for the index
+ unless ($path) {
+ return 'index';
+ }
+
+ return $path;
+}
+
+sub cgi ($) {
+ my $cgi=shift;
+
+ if ($ENV{REDIRECT_STATUS} eq '404') {
+ my $page = cgi_page_from_404($ENV{REDIRECT_URL},
+ $config{url}, $config{usedirs});
+ IkiWiki::cgi_goto($cgi, $page);
+ }
+}
+
+1;
diff --git a/doc/plugins/apache404.mdwn b/doc/plugins/apache404.mdwn
new file mode 100644
index 000000000..bab8fb59d
--- /dev/null
+++ b/doc/plugins/apache404.mdwn
@@ -0,0 +1,11 @@
+[[!template id=plugin name=apache404 author="[[Simon_McVittie|smcv]]"]]
+[[!tag type/useful]]
+
+This plugin lets you use the IkiWiki CGI script as an Apache 404 handler,
+to give the behaviour of various other wiki engines where visiting a
+nonexistent page provides you with a link to create it.
+
+To achieve this, put something like this in the wiki's Apache configuration
+file:
+
+ ErrorDocument 404 /cgi-bin/ikiwiki.cgi
diff --git a/doc/tips/apache_404_handler.mdwn b/doc/tips/apache_404_handler.mdwn
deleted file mode 100644
index 0fda759e7..000000000
--- a/doc/tips/apache_404_handler.mdwn
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!meta title="Apache 404 handler"]]
-
-Sufficiently recent versions of IkiWiki can be used as an Apache 404 handler,
-to give the behaviour of various other wiki engines where visiting a
-nonexistent page provides you with a link to create it.
-
-To achieve this, put something like this in the wiki's Apache configuration
-file:
-
- ErrorDocument 404 /cgi-bin/ikiwiki.cgi?do=goto
diff --git a/t/apache404.t b/t/apache404.t
new file mode 100755
index 000000000..00fc35250
--- /dev/null
+++ b/t/apache404.t
@@ -0,0 +1,45 @@
+#!/usr/bin/perl
+use warnings;
+use strict;
+use Test::More tests => 17;
+
+BEGIN { use_ok("IkiWiki::Plugin::apache404"); }
+
+sub cgi_page_from_404 {
+ return IkiWiki::Plugin::apache404::cgi_page_from_404(shift, shift,
+ shift);
+}
+
+$IkiWiki::config{htmlext} = 'html';
+
+is(cgi_page_from_404('/', 'http://example.com', 1), 'index');
+is(cgi_page_from_404('/index.html', 'http://example.com', 0), 'index');
+is(cgi_page_from_404('/', 'http://example.com/', 1), 'index');
+is(cgi_page_from_404('/index.html', 'http://example.com/', 0), 'index');
+
+is(cgi_page_from_404('/~user/foo/bar', 'http://example.com/~user', 1),
+ 'foo/bar');
+is(cgi_page_from_404('/~user/foo/bar/index.html', 'http://example.com/~user', 1),
+ 'foo/bar');
+is(cgi_page_from_404('/~user/foo/bar/', 'http://example.com/~user', 1),
+ 'foo/bar');
+is(cgi_page_from_404('/~user/foo/bar.html', 'http://example.com/~user', 0),
+ 'foo/bar');
+
+is(cgi_page_from_404('/~user/foo/bar', 'http://example.com/~user/', 1),
+ 'foo/bar');
+is(cgi_page_from_404('/~user/foo/bar/index.html', 'http://example.com/~user/', 1),
+ 'foo/bar');
+is(cgi_page_from_404('/~user/foo/bar/', 'http://example.com/~user/', 1),
+ 'foo/bar');
+is(cgi_page_from_404('/~user/foo/bar.html', 'http://example.com/~user/', 0),
+ 'foo/bar');
+
+is(cgi_page_from_404('/~user/foo', 'https://example.com/~user', 1),
+ 'foo');
+is(cgi_page_from_404('/~user/foo/index.html', 'https://example.com/~user', 1),
+ 'foo');
+is(cgi_page_from_404('/~user/foo/', 'https://example.com/~user', 1),
+ 'foo');
+is(cgi_page_from_404('/~user/foo.html', 'https://example.com/~user', 0),
+ 'foo');
diff --git a/t/cgi_page_from_404.t b/t/cgi_page_from_404.t
deleted file mode 100755
index adbbdf874..000000000
--- a/t/cgi_page_from_404.t
+++ /dev/null
@@ -1,43 +0,0 @@
-#!/usr/bin/perl
-use warnings;
-use strict;
-use Test::More tests => 18;
-
-BEGIN { use_ok("IkiWiki"); }
-BEGIN { use_ok("IkiWiki::CGI"); }
-
-sub cgi_page_from_404 { return IkiWiki::cgi_page_from_404(shift, shift, shift); }
-
-$IkiWiki::config{htmlext} = 'html';
-
-is(cgi_page_from_404('/', 'http://example.com', 1), 'index');
-is(cgi_page_from_404('/index.html', 'http://example.com', 0), 'index');
-is(cgi_page_from_404('/', 'http://example.com/', 1), 'index');
-is(cgi_page_from_404('/index.html', 'http://example.com/', 0), 'index');
-
-is(cgi_page_from_404('/~user/foo/bar', 'http://example.com/~user', 1),
- 'foo/bar');
-is(cgi_page_from_404('/~user/foo/bar/index.html', 'http://example.com/~user', 1),
- 'foo/bar');
-is(cgi_page_from_404('/~user/foo/bar/', 'http://example.com/~user', 1),
- 'foo/bar');
-is(cgi_page_from_404('/~user/foo/bar.html', 'http://example.com/~user', 0),
- 'foo/bar');
-
-is(cgi_page_from_404('/~user/foo/bar', 'http://example.com/~user/', 1),
- 'foo/bar');
-is(cgi_page_from_404('/~user/foo/bar/index.html', 'http://example.com/~user/', 1),
- 'foo/bar');
-is(cgi_page_from_404('/~user/foo/bar/', 'http://example.com/~user/', 1),
- 'foo/bar');
-is(cgi_page_from_404('/~user/foo/bar.html', 'http://example.com/~user/', 0),
- 'foo/bar');
-
-is(cgi_page_from_404('/~user/foo', 'https://example.com/~user', 1),
- 'foo');
-is(cgi_page_from_404('/~user/foo/index.html', 'https://example.com/~user', 1),
- 'foo');
-is(cgi_page_from_404('/~user/foo/', 'https://example.com/~user', 1),
- 'foo');
-is(cgi_page_from_404('/~user/foo.html', 'https://example.com/~user', 0),
- 'foo');
--
cgit v1.2.3
From c886bea32084a920f3ba26b3f96327681f5db917 Mon Sep 17 00:00:00 2001
From: Simon McVittie
Date: Sat, 31 Jan 2009 23:01:10 +0000
Subject: Split cgi_goto into a goto plugin
---
IkiWiki/CGI.pm | 51 ---------------------------
IkiWiki/Plugin/apache404.pm | 3 +-
IkiWiki/Plugin/comments.pm | 2 ++
IkiWiki/Plugin/goto.pm | 76 +++++++++++++++++++++++++++++++++++++++++
IkiWiki/Plugin/recentchanges.pm | 2 ++
doc/plugins/goto.mdwn | 10 ++++++
6 files changed, 92 insertions(+), 52 deletions(-)
create mode 100644 IkiWiki/Plugin/goto.pm
create mode 100644 doc/plugins/goto.mdwn
(limited to 'doc/plugins')
diff --git a/IkiWiki/CGI.pm b/IkiWiki/CGI.pm
index e75ebcd27..c91914564 100644
--- a/IkiWiki/CGI.pm
+++ b/IkiWiki/CGI.pm
@@ -294,50 +294,6 @@ sub cgi_savesession ($) {
umask($oldmask);
}
-# cgi_goto(CGI, [page])
-# Redirect to a specified page, or display "not found". If not specified,
-# the page param from the CGI object is used.
-sub cgi_goto ($;$) {
- my $q = shift;
- my $page = shift;
-
- if (!defined $page) {
- $page = decode_utf8($q->param("page"));
-
- if (!defined $page) {
- error("missing page parameter");
- }
- }
-
- loadindex();
-
- # If the page is internal (like a comment), see if it has a
- # permalink. Comments do.
- if (isinternal($page) &&
- defined $pagestate{$page}{meta}{permalink}) {
- redirect($q, $pagestate{$page}{meta}{permalink});
- }
-
- my $link = bestlink("", $page);
-
- if (! length $link) {
- print $q->header(-status => "404 Not Found");
- print misctemplate(gettext("missing page"),
- "".
- sprintf(gettext("The page %s does not exist."),
- htmllink("", "", $page)).
- "
".
- # Internet Explorer won't show custom 404 responses
- # unless they're >= 512 bytes
- (" " x 512));
- }
- else {
- redirect($q, urlto($link, undef, 1));
- }
-
- exit;
-}
-
sub cgi (;$$) {
my $q=shift;
my $session=shift;
@@ -365,13 +321,6 @@ sub cgi (;$$) {
}
}
- # goto is the preferred name for this; recentchanges_link and
- # commenter are for compatibility with any saved URLs
- if ($do eq 'goto' || $do eq 'recentchanges_link' ||
- $do eq 'commenter') {
- cgi_goto($q);
- }
-
# Need to lock the wiki before getting a session.
lockwiki();
loadindex();
diff --git a/IkiWiki/Plugin/apache404.pm b/IkiWiki/Plugin/apache404.pm
index 3ac6b3af5..e7ce70435 100644
--- a/IkiWiki/Plugin/apache404.pm
+++ b/IkiWiki/Plugin/apache404.pm
@@ -10,6 +10,7 @@ use IkiWiki 3.00;
sub import {
hook(type => "cgi", id => 'apache404', call => \&cgi);
+ IkiWiki::loadplugin("goto");
}
sub getsetup () {
@@ -69,7 +70,7 @@ sub cgi ($) {
if ($ENV{REDIRECT_STATUS} eq '404') {
my $page = cgi_page_from_404($ENV{REDIRECT_URL},
$config{url}, $config{usedirs});
- IkiWiki::cgi_goto($cgi, $page);
+ IkiWiki::Plugin::goto::cgi_goto($cgi, $page);
}
}
diff --git a/IkiWiki/Plugin/comments.pm b/IkiWiki/Plugin/comments.pm
index 995d1f4eb..3cdffe856 100644
--- a/IkiWiki/Plugin/comments.pm
+++ b/IkiWiki/Plugin/comments.pm
@@ -26,6 +26,8 @@ sub import {
hook(type => "htmlize", id => "_comment", call => \&htmlize);
hook(type => "pagetemplate", id => "comments", call => \&pagetemplate);
hook(type => "formbuilder_setup", id => "comments", call => \&formbuilder_setup);
+ # Load goto to fix up user page links for logged-in commenters
+ IkiWiki::loadplugin("goto");
IkiWiki::loadplugin("inline");
}
diff --git a/IkiWiki/Plugin/goto.pm b/IkiWiki/Plugin/goto.pm
new file mode 100644
index 000000000..9e7a2621f
--- /dev/null
+++ b/IkiWiki/Plugin/goto.pm
@@ -0,0 +1,76 @@
+#!/usr/bin/perl
+package IkiWiki::Plugin::goto;
+
+use warnings;
+use strict;
+use IkiWiki 3.00;
+
+sub import {
+ hook(type => "cgi", id => 'goto', call => \&cgi);
+}
+
+sub getsetup () {
+ return
+ plugin => {
+ safe => 1,
+ rebuild => 0,
+ }
+}
+
+# cgi_goto(CGI, [page])
+# Redirect to a specified page, or display "not found". If not specified,
+# the page param from the CGI object is used.
+sub cgi_goto ($;$) {
+ my $q = shift;
+ my $page = shift;
+
+ if (!defined $page) {
+ $page = IkiWiki::decode_utf8($q->param("page"));
+
+ if (!defined $page) {
+ error("missing page parameter");
+ }
+ }
+
+ IkiWiki::loadindex();
+
+ # If the page is internal (like a comment), see if it has a
+ # permalink. Comments do.
+ if (IkiWiki::isinternal($page) &&
+ defined $pagestate{$page}{meta}{permalink}) {
+ redirect($q, $pagestate{$page}{meta}{permalink});
+ }
+
+ my $link = bestlink("", $page);
+
+ if (! length $link) {
+ print $q->header(-status => "404 Not Found");
+ print IkiWiki::misctemplate(gettext("missing page"),
+ "".
+ sprintf(gettext("The page %s does not exist."),
+ htmllink("", "", $page)).
+ "
".
+ # Internet Explorer won't show custom 404 responses
+ # unless they're >= 512 bytes
+ (" " x 512));
+ }
+ else {
+ IkiWiki::redirect($q, urlto($link, undef, 1));
+ }
+
+ exit;
+}
+
+sub cgi ($) {
+ my $cgi=shift;
+ my $do = $cgi->param('do');
+
+ if (defined $do && ($do eq 'goto' || $do eq 'commenter' ||
+ $do eq 'recentchanged_link')) {
+ # goto is the preferred name for this; recentchanges_link and
+ # commenter are for compatibility with any saved URLs
+ cgi_goto($cgi);
+ }
+}
+
+1;
diff --git a/IkiWiki/Plugin/recentchanges.pm b/IkiWiki/Plugin/recentchanges.pm
index 56e80e7b8..329dd6f32 100644
--- a/IkiWiki/Plugin/recentchanges.pm
+++ b/IkiWiki/Plugin/recentchanges.pm
@@ -13,6 +13,8 @@ sub import {
hook(type => "refresh", id => "recentchanges", call => \&refresh);
hook(type => "pagetemplate", id => "recentchanges", call => \&pagetemplate);
hook(type => "htmlize", id => "_change", call => \&htmlize);
+ # Load goto to fix up links from recentchanges
+ IkiWiki::loadplugin("goto");
}
sub getsetup () {
diff --git a/doc/plugins/goto.mdwn b/doc/plugins/goto.mdwn
new file mode 100644
index 000000000..21dda16b2
--- /dev/null
+++ b/doc/plugins/goto.mdwn
@@ -0,0 +1,10 @@
+[[!template id=plugin name=goto author="[[Simon_McVittie|smcv]]"]]
+[[!tag type/useful]]
+
+This plugin adds a `do=goto` mode for the IkiWiki CGI script. It's mainly
+for internal use by the [[apache404]], [[comments]] and [[recentchanges]]
+plugins, which enable it automatically.
+
+With this plugin enabled you can link to `ikiwiki.cgi?do=goto&page=some/where`
+to make a link that will redirect to the page `/some/where` if it exists, or
+offer a link to create it if it doesn't.
--
cgit v1.2.3
From 3b83e520182a83e4ae6c61ab7b360b0eb939469f Mon Sep 17 00:00:00 2001
From: Joey Hess
Date: Sat, 31 Jan 2009 19:26:36 -0500
Subject: rename apache404 -> 404
This may already work with other web servers that have copied apache's
interface, and it should be easy to add support to it for web servers that
use some other interface. So, make the name more general.
---
IkiWiki/Plugin/404.pm | 77 +++++++++++++++++++++++++++++++++++++++++++++
IkiWiki/Plugin/apache404.pm | 77 ---------------------------------------------
debian/changelog | 2 +-
debian/copyright | 2 +-
doc/plugins/404.mdwn | 11 +++++++
doc/plugins/apache404.mdwn | 11 -------
doc/plugins/goto.mdwn | 2 +-
doc/tips/dot_cgi.mdwn | 9 +++---
t/404.t | 44 ++++++++++++++++++++++++++
t/apache404.t | 45 --------------------------
10 files changed, 139 insertions(+), 141 deletions(-)
create mode 100644 IkiWiki/Plugin/404.pm
delete mode 100644 IkiWiki/Plugin/apache404.pm
create mode 100644 doc/plugins/404.mdwn
delete mode 100644 doc/plugins/apache404.mdwn
create mode 100755 t/404.t
delete mode 100755 t/apache404.t
(limited to 'doc/plugins')
diff --git a/IkiWiki/Plugin/404.pm b/IkiWiki/Plugin/404.pm
new file mode 100644
index 000000000..5550ea7d1
--- /dev/null
+++ b/IkiWiki/Plugin/404.pm
@@ -0,0 +1,77 @@
+#!/usr/bin/perl
+# Copyright © 2009 Simon McVittie
+# Licensed under the GNU GPL, version 2, or any later version published by the
+# Free Software Foundation
+package IkiWiki::Plugin::404;
+
+use warnings;
+use strict;
+use IkiWiki 3.00;
+
+sub import {
+ hook(type => "cgi", id => '404', call => \&cgi);
+ IkiWiki::loadplugin("goto");
+}
+
+sub getsetup () {
+ return
+ plugin => {
+ # not really a matter of safety, but enabling/disabling
+ # through a web interface is useless - it needs web
+ # server admin action too
+ safe => 0,
+ rebuild => 0,
+ }
+}
+
+sub cgi_page_from_404 ($$$) {
+ my $path = shift;
+ my $baseurl = shift;
+ my $usedirs = shift;
+
+ # fail if missing from environment or whatever
+ return undef unless defined $path;
+ return undef unless defined $baseurl;
+
+ # with usedirs on, path is like /~fred/foo/bar/ or /~fred/foo/bar or
+ # /~fred/foo/bar/index.html
+ # with usedirs off, path is like /~fred/foo/bar.html
+ # baseurl is like 'http://people.example.com/~fred'
+
+ # convert baseurl to ~fred
+ unless ($baseurl =~ s{^https?://[^/]+/?}{}) {
+ return undef;
+ }
+
+ # convert path to /~fred/foo/bar
+ if ($usedirs) {
+ $path =~ s/\/*(?:index\.$config{htmlext})?$//;
+ }
+ else {
+ $path =~ s/\.$config{htmlext}$//;
+ }
+
+ # remove /~fred/
+ unless ($path =~ s{^/*\Q$baseurl\E/*}{}) {
+ return undef;
+ }
+
+ # special case for the index
+ unless ($path) {
+ return 'index';
+ }
+
+ return $path;
+}
+
+sub cgi ($) {
+ my $cgi=shift;
+
+ if ($ENV{REDIRECT_STATUS} eq '404') {
+ my $page = cgi_page_from_404($ENV{REDIRECT_URL},
+ $config{url}, $config{usedirs});
+ IkiWiki::Plugin::goto::cgi_goto($cgi, $page);
+ }
+}
+
+1;
diff --git a/IkiWiki/Plugin/apache404.pm b/IkiWiki/Plugin/apache404.pm
deleted file mode 100644
index e7ce70435..000000000
--- a/IkiWiki/Plugin/apache404.pm
+++ /dev/null
@@ -1,77 +0,0 @@
-#!/usr/bin/perl
-# Copyright © 2009 Simon McVittie
-# Licensed under the GNU GPL, version 2, or any later version published by the
-# Free Software Foundation
-package IkiWiki::Plugin::apache404;
-
-use warnings;
-use strict;
-use IkiWiki 3.00;
-
-sub import {
- hook(type => "cgi", id => 'apache404', call => \&cgi);
- IkiWiki::loadplugin("goto");
-}
-
-sub getsetup () {
- return
- plugin => {
- # not really a matter of safety, but enabling/disabling
- # through a web interface is useless - it needs web
- # server admin action too
- safe => 0,
- rebuild => 0,
- }
-}
-
-sub cgi_page_from_404 ($$$) {
- my $path = shift;
- my $baseurl = shift;
- my $usedirs = shift;
-
- # fail if missing from environment or whatever
- return undef unless defined $path;
- return undef unless defined $baseurl;
-
- # with usedirs on, path is like /~fred/foo/bar/ or /~fred/foo/bar or
- # /~fred/foo/bar/index.html
- # with usedirs off, path is like /~fred/foo/bar.html
- # baseurl is like 'http://people.example.com/~fred'
-
- # convert baseurl to ~fred
- unless ($baseurl =~ s{^https?://[^/]+/?}{}) {
- return undef;
- }
-
- # convert path to /~fred/foo/bar
- if ($usedirs) {
- $path =~ s/\/*(?:index\.$config{htmlext})?$//;
- }
- else {
- $path =~ s/\.$config{htmlext}$//;
- }
-
- # remove /~fred/
- unless ($path =~ s{^/*\Q$baseurl\E/*}{}) {
- return undef;
- }
-
- # special case for the index
- unless ($path) {
- return 'index';
- }
-
- return $path;
-}
-
-sub cgi ($) {
- my $cgi=shift;
-
- if ($ENV{REDIRECT_STATUS} eq '404') {
- my $page = cgi_page_from_404($ENV{REDIRECT_URL},
- $config{url}, $config{usedirs});
- IkiWiki::Plugin::goto::cgi_goto($cgi, $page);
- }
-}
-
-1;
diff --git a/debian/changelog b/debian/changelog
index f3927f121..be32d3abf 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,6 +1,6 @@
ikiwiki (3.04) UNRELEASED; urgency=low
- * apache404: New plugin which lets you use the IkiWiki CGI script as
+ * 404: New plugin which lets you use the IkiWiki CGI script as
an Apache 404 handler, to give the behaviour of various other wiki
engines where visiting a nonexistent page provides you with a link
to create it. (smcv)
diff --git a/debian/copyright b/debian/copyright
index bdfbaa573..f589b4a8f 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -118,7 +118,7 @@ Copyright:
© 2008 Simon McVittie
License: GPL-2+
-Files: apache404.pm
+Files: 404.pm
Copyright: © 2009 Simon McVittie
License: GPL-2+
diff --git a/doc/plugins/404.mdwn b/doc/plugins/404.mdwn
new file mode 100644
index 000000000..8d36279c8
--- /dev/null
+++ b/doc/plugins/404.mdwn
@@ -0,0 +1,11 @@
+[[!template id=plugin name=404 author="[[Simon_McVittie|smcv]]"]]
+[[!tag type/useful]]
+
+This plugin lets you use the IkiWiki CGI script as an Apache 404 handler,
+to give the behaviour of various other wiki engines where visiting a
+nonexistent page provides you with a link to create it.
+
+To achieve this, put something like this in the wiki's Apache configuration
+file:
+
+ ErrorDocument 404 /cgi-bin/ikiwiki.cgi
diff --git a/doc/plugins/apache404.mdwn b/doc/plugins/apache404.mdwn
deleted file mode 100644
index bab8fb59d..000000000
--- a/doc/plugins/apache404.mdwn
+++ /dev/null
@@ -1,11 +0,0 @@
-[[!template id=plugin name=apache404 author="[[Simon_McVittie|smcv]]"]]
-[[!tag type/useful]]
-
-This plugin lets you use the IkiWiki CGI script as an Apache 404 handler,
-to give the behaviour of various other wiki engines where visiting a
-nonexistent page provides you with a link to create it.
-
-To achieve this, put something like this in the wiki's Apache configuration
-file:
-
- ErrorDocument 404 /cgi-bin/ikiwiki.cgi
diff --git a/doc/plugins/goto.mdwn b/doc/plugins/goto.mdwn
index 21dda16b2..9c401c5d2 100644
--- a/doc/plugins/goto.mdwn
+++ b/doc/plugins/goto.mdwn
@@ -2,7 +2,7 @@
[[!tag type/useful]]
This plugin adds a `do=goto` mode for the IkiWiki CGI script. It's mainly
-for internal use by the [[apache404]], [[comments]] and [[recentchanges]]
+for internal use by the [[404]], [[comments]] and [[recentchanges]]
plugins, which enable it automatically.
With this plugin enabled you can link to `ikiwiki.cgi?do=goto&page=some/where`
diff --git a/doc/tips/dot_cgi.mdwn b/doc/tips/dot_cgi.mdwn
index ffcbf95d4..04d7a9721 100644
--- a/doc/tips/dot_cgi.mdwn
+++ b/doc/tips/dot_cgi.mdwn
@@ -26,11 +26,10 @@ configuration changes should work anywhere.
Or, if you've put it in a `~/public_html`, edit
`/etc/apache2/mods-available/userdir.conf`.
-You may also want to enable the [[plugins/apache404]]
-plugin. To make apache use it, the apache config file
-will need a further modification to make it use ikiwiki's CGI
-as the apache 404 handler. Something like this, with
-the path adjusted to where you've put the CGI:
+* You may also want to enable the [[plugins/404]] plugin.
+ To make apache use it, the apache config file will need a further
+ modification to make it use ikiwiki's CGI as the apache 404 handler.
+ Something like this, with the path adjusted to where you've put the CGI:
ErrorDocument 404 /cgi-bin/ikiwiki.cgi
diff --git a/t/404.t b/t/404.t
new file mode 100755
index 000000000..0bb3c6063
--- /dev/null
+++ b/t/404.t
@@ -0,0 +1,44 @@
+#!/usr/bin/perl
+use warnings;
+use strict;
+use Test::More tests => 17;
+
+BEGIN { use_ok("IkiWiki::Plugin::404"); }
+
+sub cgi_page_from_404 {
+ return IkiWiki::Plugin::404::cgi_page_from_404(shift, shift, shift);
+}
+
+$IkiWiki::config{htmlext} = 'html';
+
+is(cgi_page_from_404('/', 'http://example.com', 1), 'index');
+is(cgi_page_from_404('/index.html', 'http://example.com', 0), 'index');
+is(cgi_page_from_404('/', 'http://example.com/', 1), 'index');
+is(cgi_page_from_404('/index.html', 'http://example.com/', 0), 'index');
+
+is(cgi_page_from_404('/~user/foo/bar', 'http://example.com/~user', 1),
+ 'foo/bar');
+is(cgi_page_from_404('/~user/foo/bar/index.html', 'http://example.com/~user', 1),
+ 'foo/bar');
+is(cgi_page_from_404('/~user/foo/bar/', 'http://example.com/~user', 1),
+ 'foo/bar');
+is(cgi_page_from_404('/~user/foo/bar.html', 'http://example.com/~user', 0),
+ 'foo/bar');
+
+is(cgi_page_from_404('/~user/foo/bar', 'http://example.com/~user/', 1),
+ 'foo/bar');
+is(cgi_page_from_404('/~user/foo/bar/index.html', 'http://example.com/~user/', 1),
+ 'foo/bar');
+is(cgi_page_from_404('/~user/foo/bar/', 'http://example.com/~user/', 1),
+ 'foo/bar');
+is(cgi_page_from_404('/~user/foo/bar.html', 'http://example.com/~user/', 0),
+ 'foo/bar');
+
+is(cgi_page_from_404('/~user/foo', 'https://example.com/~user', 1),
+ 'foo');
+is(cgi_page_from_404('/~user/foo/index.html', 'https://example.com/~user', 1),
+ 'foo');
+is(cgi_page_from_404('/~user/foo/', 'https://example.com/~user', 1),
+ 'foo');
+is(cgi_page_from_404('/~user/foo.html', 'https://example.com/~user', 0),
+ 'foo');
diff --git a/t/apache404.t b/t/apache404.t
deleted file mode 100755
index 00fc35250..000000000
--- a/t/apache404.t
+++ /dev/null
@@ -1,45 +0,0 @@
-#!/usr/bin/perl
-use warnings;
-use strict;
-use Test::More tests => 17;
-
-BEGIN { use_ok("IkiWiki::Plugin::apache404"); }
-
-sub cgi_page_from_404 {
- return IkiWiki::Plugin::apache404::cgi_page_from_404(shift, shift,
- shift);
-}
-
-$IkiWiki::config{htmlext} = 'html';
-
-is(cgi_page_from_404('/', 'http://example.com', 1), 'index');
-is(cgi_page_from_404('/index.html', 'http://example.com', 0), 'index');
-is(cgi_page_from_404('/', 'http://example.com/', 1), 'index');
-is(cgi_page_from_404('/index.html', 'http://example.com/', 0), 'index');
-
-is(cgi_page_from_404('/~user/foo/bar', 'http://example.com/~user', 1),
- 'foo/bar');
-is(cgi_page_from_404('/~user/foo/bar/index.html', 'http://example.com/~user', 1),
- 'foo/bar');
-is(cgi_page_from_404('/~user/foo/bar/', 'http://example.com/~user', 1),
- 'foo/bar');
-is(cgi_page_from_404('/~user/foo/bar.html', 'http://example.com/~user', 0),
- 'foo/bar');
-
-is(cgi_page_from_404('/~user/foo/bar', 'http://example.com/~user/', 1),
- 'foo/bar');
-is(cgi_page_from_404('/~user/foo/bar/index.html', 'http://example.com/~user/', 1),
- 'foo/bar');
-is(cgi_page_from_404('/~user/foo/bar/', 'http://example.com/~user/', 1),
- 'foo/bar');
-is(cgi_page_from_404('/~user/foo/bar.html', 'http://example.com/~user/', 0),
- 'foo/bar');
-
-is(cgi_page_from_404('/~user/foo', 'https://example.com/~user', 1),
- 'foo');
-is(cgi_page_from_404('/~user/foo/index.html', 'https://example.com/~user', 1),
- 'foo');
-is(cgi_page_from_404('/~user/foo/', 'https://example.com/~user', 1),
- 'foo');
-is(cgi_page_from_404('/~user/foo.html', 'https://example.com/~user', 0),
- 'foo');
--
cgit v1.2.3
From 7bf1207c07c12623f6afc791bf33037b92477c93 Mon Sep 17 00:00:00 2001
From: bremner
Date: Wed, 4 Feb 2009 07:50:53 -0500
Subject:
---
doc/plugins/contrib/sourcehighlight.mdwn | 7 ++-----
1 file changed, 2 insertions(+), 5 deletions(-)
(limited to 'doc/plugins')
diff --git a/doc/plugins/contrib/sourcehighlight.mdwn b/doc/plugins/contrib/sourcehighlight.mdwn
index fb368945b..ac80f015c 100644
--- a/doc/plugins/contrib/sourcehighlight.mdwn
+++ b/doc/plugins/contrib/sourcehighlight.mdwn
@@ -12,11 +12,6 @@ highlight
- I would like to have a link to the raw source; using will_render() and then copying the file should work.
-- the common case of foo.c and foo.h breaks
-because they both generate page working/dir/foo.
-It looks to me like ikiwiki is hardcoded to strip the extension in `pagename()` (IkiWiki.pm).
-This problem with sourcehighlight needs to be fixed before it is very useful.
-
- Is there a way to configure the colors used by source-highlight (other than editing the globally installed "default.style" file)? It would help if I could pass the command arbitrary command-line arguments; then I could configure which config file it's supposed to use. For instance, I'm not a fan of hard-coding the colors into the HTML output. IMHO, css-style formatting should be preferred. All that can be set via the command line ... --Peter
> I don't really have time right now, but it should be easy to add, if you look at how src-lang is handled. Patches are welcome :-) --[[DavidBremner]]
@@ -25,3 +20,5 @@ Note that [[Will]] wrote a plugin that uses source-highlight also. It's
available
[here|todo/automatic_use_of_syntax_plugin_on_source_code_files/discussion]].
--[[Joey]]
+
+*Updated* Now uses keepextension so multiple extensions should be OK
--
cgit v1.2.3
From 80f2edffc0283d1e6074d9a18676795d35e6f4e1 Mon Sep 17 00:00:00 2001
From: bremner
Date: Wed, 4 Feb 2009 07:56:04 -0500
Subject: fix joeyh's link :-)
---
doc/plugins/contrib/sourcehighlight.mdwn | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
(limited to 'doc/plugins')
diff --git a/doc/plugins/contrib/sourcehighlight.mdwn b/doc/plugins/contrib/sourcehighlight.mdwn
index ac80f015c..83ef879d7 100644
--- a/doc/plugins/contrib/sourcehighlight.mdwn
+++ b/doc/plugins/contrib/sourcehighlight.mdwn
@@ -18,7 +18,7 @@ highlight
Note that [[Will]] wrote a plugin that uses source-highlight also. It's
available
-[here|todo/automatic_use_of_syntax_plugin_on_source_code_files/discussion]].
+[[here|todo/automatic_use_of_syntax_plugin_on_source_code_files/discussion]].
--[[Joey]]
*Updated* Now uses keepextension so multiple extensions should be OK
--
cgit v1.2.3
From d2842c126b199daece1839a6856b369123ef94d1 Mon Sep 17 00:00:00 2001
From: bremner
Date: Wed, 4 Feb 2009 08:03:13 -0500
Subject: note possible abandonment of sourcehighlight in favour of sourcecode
---
doc/plugins/contrib/sourcehighlight.mdwn | 4 ++++
1 file changed, 4 insertions(+)
(limited to 'doc/plugins')
diff --git a/doc/plugins/contrib/sourcehighlight.mdwn b/doc/plugins/contrib/sourcehighlight.mdwn
index 83ef879d7..df480f325 100644
--- a/doc/plugins/contrib/sourcehighlight.mdwn
+++ b/doc/plugins/contrib/sourcehighlight.mdwn
@@ -21,4 +21,8 @@ available
[[here|todo/automatic_use_of_syntax_plugin_on_source_code_files/discussion]].
--[[Joey]]
+To be honest, [[Will]]'s version of this looks more polished. I will try his
+plugin and see if it can just replace mine. --[[DavidBremner]]
+
+
*Updated* Now uses keepextension so multiple extensions should be OK
--
cgit v1.2.3
From 971df8889b46f314afb6d4e2e052c8ee7738b756 Mon Sep 17 00:00:00 2001
From: Joey Hess
Date: Thu, 5 Feb 2009 15:31:37 -0500
Subject: note about path
---
doc/plugins/404.mdwn | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
(limited to 'doc/plugins')
diff --git a/doc/plugins/404.mdwn b/doc/plugins/404.mdwn
index 8d36279c8..8a7ccd7d6 100644
--- a/doc/plugins/404.mdwn
+++ b/doc/plugins/404.mdwn
@@ -8,4 +8,7 @@ nonexistent page provides you with a link to create it.
To achieve this, put something like this in the wiki's Apache configuration
file:
- ErrorDocument 404 /cgi-bin/ikiwiki.cgi
+ ErrorDocument 404 /ikiwiki.cgi
+
+(The path here needs to be whatever the path is to the ikiwiki.cgi from
+the root of your web server.)
--
cgit v1.2.3
From af5758049140265b22c17375ee195f6dcfbffa7b Mon Sep 17 00:00:00 2001
From: "http://taozhyn.myopenid.com/"
Date: Fri, 6 Feb 2009 14:36:04 -0500
Subject:
---
doc/plugins/tag/discussion.mdwn | 97 +++++++++++++++++++++++++++++++++++++++++
1 file changed, 97 insertions(+)
(limited to 'doc/plugins')
diff --git a/doc/plugins/tag/discussion.mdwn b/doc/plugins/tag/discussion.mdwn
index 7e7b88bc5..e478ec564 100644
--- a/doc/plugins/tag/discussion.mdwn
+++ b/doc/plugins/tag/discussion.mdwn
@@ -22,3 +22,100 @@ AOLMODE=true echo "I too would really like this feature, which would make cgi fr
better" --[[DavidBremner]]
Please make the actual text used a template some way or another. I may want `map` instead of `inline`. --[[madduck]]
+
+---
+
+I have create a patch to tag.pm for add the option for auto create tag pages.
+A new setting is used to enable or disable auto-create tag pages, `tag_autocreate`.
+The new tag file is created during the preprocess phase.
+The new tag file is then complied during the change phase.
+
+ --- tag.pm 2009-02-06 10:26:03.000000000 -0700
+ +++ tag_new.pm 2009-02-06 12:17:19.000000000 -0700
+ @@ -14,6 +14,7 @@
+ hook(type => "preprocess", id => "tag", call => \&preprocess_tag, scan => 1);
+ hook(type => "preprocess", id => "taglink", call => \&preprocess_taglink, scan => 1);
+ hook(type => "pagetemplate", id => "tag", call => \&pagetemplate);
+ + hook(type => "change", id => "tag", call => \&change);
+ }
+
+ sub getopt () {
+ @@ -36,6 +37,36 @@
+ safe => 1,
+ rebuild => 1,
+ },
+ + tag_autocreate => {
+ + type => "boolean",
+ + example => 0,
+ + description => "Auto-create the new tag pages, uses autotagpage.tmpl ",
+ + safe => 1,
+ + rebulid => 1,
+ + },
+ +}
+ +
+ +my $autocreated_page = 0;
+ +
+ +sub gen_tag_page($) {
+ + my $tag=shift;
+ +
+ + my $tag_file=$tag.'.'.$config{default_pageext};
+ + return if (-f $config{srcdir}.$tag_file);
+ +
+ + my $template=template("autotagpage.tmpl");
+ + $template->param(tag => $tag);
+ + writefile($tag_file, $config{srcdir}, $template->output);
+ + $autocreated_page = 1;
+ +
+ + if ($config{rcs}) {
+ + IkiWiki::disable_commit_hook();
+ + IkiWiki::rcs_add($tag_file);
+ + IkiWiki::rcs_commit_staged(
+ + gettext("Automatic tag page generation"),
+ + undef, undef);
+ + IkiWiki::enable_commit_hook();
+ + }
+ }
+
+ sub tagpage ($) {
+ @@ -47,6 +78,10 @@
+ $tag=~y#/#/#s; # squash dups
+ }
+
+ + if (defined $config{tag_autocreate} && $config{tag_autocreate} ) {
+ + gen_tag_page($tag);
+ + }
+ +
+ return $tag;
+ }
+
+ @@ -125,4 +160,18 @@
+ }
+ }
+
+ +sub change(@) {
+ + return unless($autocreated_page);
+ + $autocreated_page = 0;
+ +
+ + # This refresh/saveindex is to complie the autocreated tag pages
+ + IkiWiki::refresh();
+ + IkiWiki::saveindex();
+ +
+ + # This refresh/saveindex is to fix the Tags link
+ + # With out this additional refresh/saveindex the tag link displays ?tag
+ + IkiWiki::refresh();
+ + IkiWiki::saveindex();
+ +}
+ +
+
+
+This uses a template called `autotagpage.tmpl`, here is my template file:
+
+ \[[!inline pages="link()" archive="yes"]]
+
+
+A quirk I have not figured out is during the `sub change`, see my comments in the code.
+I am not sure if that is the best way to handle it.
+
+[[!tag patch]]
+-- Jeremy Schultz
+
--
cgit v1.2.3
From f444d1206a75e597f65092e12dfbb061caa34ebd Mon Sep 17 00:00:00 2001
From: "http://www.cse.unsw.edu.au/~willu/"
Date: Sat, 7 Feb 2009 05:47:32 -0500
Subject: Note todo with patch attached to solve listed problem
---
doc/plugins/contrib/sourcehighlight.mdwn | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
(limited to 'doc/plugins')
diff --git a/doc/plugins/contrib/sourcehighlight.mdwn b/doc/plugins/contrib/sourcehighlight.mdwn
index df480f325..07ac2086f 100644
--- a/doc/plugins/contrib/sourcehighlight.mdwn
+++ b/doc/plugins/contrib/sourcehighlight.mdwn
@@ -10,7 +10,9 @@ where foo and bar are the (source-supported) languages you want to
highlight
### Issues
-- I would like to have a link to the raw source; using will_render() and then copying the file should work.
+- I would like to have a link to the raw source; using will_render() and then copying the file should work.
+
+> You might also like to look at the [[todo/source_link]] todo. -- [[Will]]
- Is there a way to configure the colors used by source-highlight (other than editing the globally installed "default.style" file)? It would help if I could pass the command arbitrary command-line arguments; then I could configure which config file it's supposed to use. For instance, I'm not a fan of hard-coding the colors into the HTML output. IMHO, css-style formatting should be preferred. All that can be set via the command line ... --Peter
--
cgit v1.2.3
From 9a84181ad9bbef5bdc4a9ecb3160994f79d8b9cb Mon Sep 17 00:00:00 2001
From: Joey Hess
Date: Mon, 9 Feb 2009 16:04:33 -0500
Subject: document writefile symlink checks
---
doc/plugins/write.mdwn | 10 ++++++++++
1 file changed, 10 insertions(+)
(limited to 'doc/plugins')
diff --git a/doc/plugins/write.mdwn b/doc/plugins/write.mdwn
index 99eea3d16..1a119b99b 100644
--- a/doc/plugins/write.mdwn
+++ b/doc/plugins/write.mdwn
@@ -629,6 +629,16 @@ A failure to write the file will result in it dying with an error.
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
--
cgit v1.2.3
From 42b16cf8f3fb82f3c66100df46f92a4cf4a51d1b Mon Sep 17 00:00:00 2001
From: "http://weakish.int.eu.org/"
Date: Tue, 10 Feb 2009 06:21:55 -0500
Subject: ikiwiki deb (3.0.3) doesn't suggests libtext-wikicreole-perl
---
doc/plugins/creole/discussion.mdwn | 2 ++
1 file changed, 2 insertions(+)
(limited to 'doc/plugins')
diff --git a/doc/plugins/creole/discussion.mdwn b/doc/plugins/creole/discussion.mdwn
index 36b7ba869..9d58fffbf 100644
--- a/doc/plugins/creole/discussion.mdwn
+++ b/doc/plugins/creole/discussion.mdwn
@@ -8,4 +8,6 @@ I've installed Text::WikiCreole 0.05 and enabled the plugin, but I get an error
>> I've added the patch to pkgsrc as well. Thanks. --[[schmonz]]
+>> Currently the creole plugin is included in ikiwiki but the ikiwiki deb (3.0.3) doesn't suggests libtext-wikicreole-perl. Why? --[[weakish]]
+
I'm moving over a really stinkingly old UseMod and creole seems the nearest match. I've worked out that Bare /Subpage links need to become \[\[Subpage\]\], and Top/Sub links need to be \[\[Top/Sub\]\] (or \[\[Top/Sub|Top/Sub\]\], to display in exactly the same way), but I'm stuck on generic hyperlinks. The creole cheat sheet says I should be able to do \[\[http://url.path/foo|LinkText\]\], but that comes out as a link to create the "linktext" page, and Markdown-style \[Link Text\](http://url.path/foo) just gets rendered as is. Any suggestions? --[[schmonz]]
--
cgit v1.2.3
From 2d989db76ae10552dc7406b23a9aceda167f4b1c Mon Sep 17 00:00:00 2001
From: "http://weakish.int.eu.org/"
Date: Tue, 10 Feb 2009 08:10:13 -0500
Subject: more details on ikiwiki directives
---
doc/plugins/creole.mdwn | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
(limited to 'doc/plugins')
diff --git a/doc/plugins/creole.mdwn b/doc/plugins/creole.mdwn
index c6491f754..6961e8d1d 100644
--- a/doc/plugins/creole.mdwn
+++ b/doc/plugins/creole.mdwn
@@ -13,4 +13,10 @@ wiki markup formats, so should be fairly easy to guess at. There is also a
Links are standard [[WikiLinks|ikiwiki/WikiLink]]. Links and
[[directives|ikiwiki/directive]] inside `{{{ }}}` blocks are still expanded,
-since this happens before the creole format is processed.
+since this happens before the creole format is processed. (You need to escape
+them manually, via \\\[[directives]], the ~ escaping of creole doesn't work on
+this.)
+
+The standard ikiwiki [[WikiLinks|ikiwiki/WikiLink]] is almost the same as Creole link, except that creole uses \[[pagename|description]] while ikiwiki uses \[[description|pagename]].
+
+
--
cgit v1.2.3
From fc2ec9255a0557ab461d933ad787cbe71aecf675 Mon Sep 17 00:00:00 2001
From: "http://weakish.int.eu.org/"
Date: Wed, 11 Feb 2009 01:56:01 -0500
Subject: add instruction of lighttpd
---
doc/plugins/404.mdwn | 6 ++++++
1 file changed, 6 insertions(+)
(limited to 'doc/plugins')
diff --git a/doc/plugins/404.mdwn b/doc/plugins/404.mdwn
index 8a7ccd7d6..ad332ee04 100644
--- a/doc/plugins/404.mdwn
+++ b/doc/plugins/404.mdwn
@@ -12,3 +12,9 @@ file:
(The path here needs to be whatever the path is to the ikiwiki.cgi from
the root of your web server.)
+
+Or put something like this in the wiki's Lighttpd (>=1.4.17) configuration file:
+
+ server.error-handler-404 = "/ikiwiki.cgi"
+
+
--
cgit v1.2.3
From 80781387fc5f0c797f6e1b8678db2f253af4b7f8 Mon Sep 17 00:00:00 2001
From: "http://weakish.int.eu.org/"
Date: Wed, 11 Feb 2009 03:08:33 -0500
Subject: [tiny] add a link to meta plugin page
---
...fault_content_for___42__copyright__42___and___42__license__42__.mdwn | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
(limited to 'doc/plugins')
diff --git a/doc/plugins/contrib/default_content_for___42__copyright__42___and___42__license__42__.mdwn b/doc/plugins/contrib/default_content_for___42__copyright__42___and___42__license__42__.mdwn
index 3efc68418..adb414ffb 100644
--- a/doc/plugins/contrib/default_content_for___42__copyright__42___and___42__license__42__.mdwn
+++ b/doc/plugins/contrib/default_content_for___42__copyright__42___and___42__license__42__.mdwn
@@ -20,7 +20,7 @@ template variable somebody wants to use.
--[[bma]]
Copyright and license values are not "template values", they are values
-tracked by the meta plugin, and that various code compares and uses to fill
+tracked by the [[meta]] plugin, and that various code compares and uses to fill
out the templates. Something like varioki cannot do that. --[[Joey]]
Somewhat more detailed usage documentation would be appreciated. I tried to setup
--
cgit v1.2.3
From 4d25fce92a8c00951db9623eb98cf6e7de3c2121 Mon Sep 17 00:00:00 2001
From: "http://weakish.int.eu.org/"
Date: Wed, 11 Feb 2009 05:32:51 -0500
Subject: removed
---
doc/plugins/shortcut/discussion.mdwn | 1 -
1 file changed, 1 deletion(-)
delete mode 100644 doc/plugins/shortcut/discussion.mdwn
(limited to 'doc/plugins')
diff --git a/doc/plugins/shortcut/discussion.mdwn b/doc/plugins/shortcut/discussion.mdwn
deleted file mode 100644
index 8b1378917..000000000
--- a/doc/plugins/shortcut/discussion.mdwn
+++ /dev/null
@@ -1 +0,0 @@
-
--
cgit v1.2.3
From a7e119767ce0b042075fd8955599e30df13e290b Mon Sep 17 00:00:00 2001
From: "http://weakish.int.eu.org/"
Date: Thu, 12 Feb 2009 03:31:02 -0500
Subject: use shortcut with mdwn disabled
---
doc/plugins/shortcut/discussion.mdwn | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
create mode 100644 doc/plugins/shortcut/discussion.mdwn
(limited to 'doc/plugins')
diff --git a/doc/plugins/shortcut/discussion.mdwn b/doc/plugins/shortcut/discussion.mdwn
new file mode 100644
index 000000000..d11639856
--- /dev/null
+++ b/doc/plugins/shortcut/discussion.mdwn
@@ -0,0 +1,16 @@
+The plugin somehow depends on [[mdwn]]. If you have
+disabled [[mdwn]], to get [[shortcut]] work, you need
+commit in a shortcuts.ext (ext is rcs|creole|html|txt|etc).
+
+Then edit the following lines in[[shortcut]] plugin source:
+
+ my $srcfile=srcfile("shortcuts.mdwn", 1);
+
+and
+
+ error(gettext("shortcut plugin will not work without a shortcuts.mdwn"));
+
+
+(It is better to edit a local copy of shortcut.pm in, say, ~/.ikiwiki/IkiWiki/Plugin
+and add ~/.ikiwiki to libdir in your ikiwiki.setup then edit the shortcut.pm installed
+in system directly.)
--
cgit v1.2.3
From 0826d993461c16c91de5d36ff4fc5b2e2bfd6f8c Mon Sep 17 00:00:00 2001
From: "http://weakish.int.eu.org/"
Date: Thu, 12 Feb 2009 03:33:20 -0500
Subject: typo
---
doc/plugins/shortcut/discussion.mdwn | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
(limited to 'doc/plugins')
diff --git a/doc/plugins/shortcut/discussion.mdwn b/doc/plugins/shortcut/discussion.mdwn
index d11639856..8fa3f7acf 100644
--- a/doc/plugins/shortcut/discussion.mdwn
+++ b/doc/plugins/shortcut/discussion.mdwn
@@ -1,8 +1,8 @@
The plugin somehow depends on [[mdwn]]. If you have
disabled [[mdwn]], to get [[shortcut]] work, you need
-commit in a shortcuts.ext (ext is rcs|creole|html|txt|etc).
+commit in a shortcuts.ext (ext is `rcs|creole|html|txt|etc`).
-Then edit the following lines in[[shortcut]] plugin source:
+Then edit the following lines in [[shortcut]] plugin source:
my $srcfile=srcfile("shortcuts.mdwn", 1);
@@ -12,5 +12,5 @@ and
(It is better to edit a local copy of shortcut.pm in, say, ~/.ikiwiki/IkiWiki/Plugin
-and add ~/.ikiwiki to libdir in your ikiwiki.setup then edit the shortcut.pm installed
+and add ~/.ikiwiki to libdir in your ikiwiki.setup than edit the shortcut.pm installed
in system directly.)
--
cgit v1.2.3
From 978a3570dbec85376fc44a3e564079664f5c26e5 Mon Sep 17 00:00:00 2001
From: "http://weakish.int.eu.org/"
Date: Thu, 12 Feb 2009 05:08:58 -0500
Subject: warning about disable mdwn
---
doc/plugins/mdwn/discussion.mdwn | 11 +++++++++++
1 file changed, 11 insertions(+)
create mode 100644 doc/plugins/mdwn/discussion.mdwn
(limited to 'doc/plugins')
diff --git a/doc/plugins/mdwn/discussion.mdwn b/doc/plugins/mdwn/discussion.mdwn
new file mode 100644
index 000000000..9ebf99b7e
--- /dev/null
+++ b/doc/plugins/mdwn/discussion.mdwn
@@ -0,0 +1,11 @@
+Unlike other format, ikiwiki is somehow depends
+on mdwn, since the underlay dir
+is written in mdwn. If you want to disable mdwn,
+you need to overwrite the underlay
+dir (set underlaydir in ikiwiki.setup
+to your own underlay dir or replace underlay pages
+in your $SRC).
+
+Specially, the [[shortcut]] plugin is hardcoded to
+use shortcuts.mdwn. So you need pay more care if
+you [[use shortcut without mdwn|shortcut/discussion]].
--
cgit v1.2.3
From aa88d6beeff168b2bd56f90646dede7c89acc4ea Mon Sep 17 00:00:00 2001
From: "http://weakish.int.eu.org/"
Date: Thu, 12 Feb 2009 05:54:20 -0500
Subject: patch for shortcut.pm to use $default_pageext instead of hardcode
.mdwn.
---
doc/plugins/shortcut/discussion.mdwn | 31 +++++++++++++++++++++----------
1 file changed, 21 insertions(+), 10 deletions(-)
(limited to 'doc/plugins')
diff --git a/doc/plugins/shortcut/discussion.mdwn b/doc/plugins/shortcut/discussion.mdwn
index 8fa3f7acf..770c95836 100644
--- a/doc/plugins/shortcut/discussion.mdwn
+++ b/doc/plugins/shortcut/discussion.mdwn
@@ -1,16 +1,27 @@
-The plugin somehow depends on [[mdwn]]. If you have
+The plugin depends on [[mdwn]]. If you have
disabled [[mdwn]], to get [[shortcut]] work, you need
-commit in a shortcuts.ext (ext is `rcs|creole|html|txt|etc`).
+commit in a shortcuts.ext (ext is `rcs|creole|html|txt|etc`),
+and edit/patch [[shortcut]].
-Then edit the following lines in [[shortcut]] plugin source:
+Maybe use the $default_pageext is better than hardcode .mdwn?
- my $srcfile=srcfile("shortcuts.mdwn", 1);
+
+--- shortcut.pm.orig 2009-02-12 02:05:22.000000000 -0600
++++ shortcut.pm 2009-02-12 04:41:30.000000000 -0600
+@@ -23,9 +23,9 @@
+ if (defined $config{srcdir}) {
+ # Preprocess the shortcuts page to get all the available shortcuts
+ # defined before other pages are rendered.
+- my $srcfile=srcfile("shortcuts.mdwn", 1);
++ my $srcfile=srcfile("shortcuts.$config{default_pageext}", 1);
+ if (! defined $srcfile) {
+- error(gettext("shortcut plugin will not work without a shortcuts.mdwn"));
++ error(gettext("shortcut plugin will not work without a shortcuts.$config{default_pageext}"));
+ }
+ IkiWiki::preprocess("shortcuts", "shortcuts", readfile($srcfile));
+ }
+
-and
+--[[weakish]]
- error(gettext("shortcut plugin will not work without a shortcuts.mdwn"));
-
-(It is better to edit a local copy of shortcut.pm in, say, ~/.ikiwiki/IkiWiki/Plugin
-and add ~/.ikiwiki to libdir in your ikiwiki.setup than edit the shortcut.pm installed
-in system directly.)
--
cgit v1.2.3
From 46819b530bca5a3adf00278500a34363a94c1fb2 Mon Sep 17 00:00:00 2001
From: Joey Hess
Date: Thu, 12 Feb 2009 13:02:58 -0500
Subject: shortcut: If default_pageext is set, first look for
shortcuts.default_pageext
Falls back to looking for shortcuts.mdwn for backwards compatabiity; there
probably exist wikis that have changed the pageext but still use
shortcuts.mdwn.
---
IkiWiki/Plugin/shortcut.pm | 8 ++++++--
debian/changelog | 2 ++
doc/plugins/mdwn/discussion.mdwn | 4 ----
doc/plugins/shortcut/discussion.mdwn | 21 +++------------------
4 files changed, 11 insertions(+), 24 deletions(-)
(limited to 'doc/plugins')
diff --git a/IkiWiki/Plugin/shortcut.pm b/IkiWiki/Plugin/shortcut.pm
index 0e7cbd4d1..c1e6a7eb3 100644
--- a/IkiWiki/Plugin/shortcut.pm
+++ b/IkiWiki/Plugin/shortcut.pm
@@ -23,9 +23,13 @@ sub checkconfig () {
if (defined $config{srcdir}) {
# Preprocess the shortcuts page to get all the available shortcuts
# defined before other pages are rendered.
- my $srcfile=srcfile("shortcuts.mdwn", 1);
+ my $srcfile=srcfile("shortcuts.".$config{default_pageext}, 1);
if (! defined $srcfile) {
- error(gettext("shortcut plugin will not work without a shortcuts.mdwn"));
+ $srcfile=srcfile("shortcuts.mdwn", 1);
+ }
+ if (! defined $srcfile) {
+ error(sprintf(gettext("shortcut plugin will not work without %s"),
+ "shortcuts.".$config{default_pageext}));
}
IkiWiki::preprocess("shortcuts", "shortcuts", readfile($srcfile));
}
diff --git a/debian/changelog b/debian/changelog
index 294d23197..7467508f6 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -11,6 +11,8 @@ ikiwiki (3.04) UNRELEASED; urgency=low
* Fix unusual --setup --post-commit command line option combo.
* Create any missing directory necessary to put the wrapper
file into. Closes: #514384
+ * shortcut: If default_pageext is set, first look for
+ shortcuts.default_pageext.
-- Joey Hess Sat, 31 Jan 2009 19:04:45 -0500
diff --git a/doc/plugins/mdwn/discussion.mdwn b/doc/plugins/mdwn/discussion.mdwn
index 9ebf99b7e..4b05e7f4e 100644
--- a/doc/plugins/mdwn/discussion.mdwn
+++ b/doc/plugins/mdwn/discussion.mdwn
@@ -5,7 +5,3 @@ you need to overwrite the underlay
dir (set underlaydir in ikiwiki.setup
to your own underlay dir or replace underlay pages
in your $SRC).
-
-Specially, the [[shortcut]] plugin is hardcoded to
-use shortcuts.mdwn. So you need pay more care if
-you [[use shortcut without mdwn|shortcut/discussion]].
diff --git a/doc/plugins/shortcut/discussion.mdwn b/doc/plugins/shortcut/discussion.mdwn
index 770c95836..4e11ce08c 100644
--- a/doc/plugins/shortcut/discussion.mdwn
+++ b/doc/plugins/shortcut/discussion.mdwn
@@ -3,25 +3,10 @@ disabled [[mdwn]], to get [[shortcut]] work, you need
commit in a shortcuts.ext (ext is `rcs|creole|html|txt|etc`),
and edit/patch [[shortcut]].
-Maybe use the $default_pageext is better than hardcode .mdwn?
-
-
---- shortcut.pm.orig 2009-02-12 02:05:22.000000000 -0600
-+++ shortcut.pm 2009-02-12 04:41:30.000000000 -0600
-@@ -23,9 +23,9 @@
- if (defined $config{srcdir}) {
- # Preprocess the shortcuts page to get all the available shortcuts
- # defined before other pages are rendered.
-- my $srcfile=srcfile("shortcuts.mdwn", 1);
-+ my $srcfile=srcfile("shortcuts.$config{default_pageext}", 1);
- if (! defined $srcfile) {
-- error(gettext("shortcut plugin will not work without a shortcuts.mdwn"));
-+ error(gettext("shortcut plugin will not work without a shortcuts.$config{default_pageext}"));
- }
- IkiWiki::preprocess("shortcuts", "shortcuts", readfile($srcfile));
- }
-
+Maybe use the `default_pageext` is better than hardcode .mdwn?
--[[weakish]]
+> done, it will use `default_pageext` now --[[Joey]]
+
--
cgit v1.2.3
From 9e786e7b2424b493bce092497fd648f4e96f7e14 Mon Sep 17 00:00:00 2001
From: Joey Hess
Date: Thu, 12 Feb 2009 13:15:23 -0500
Subject: update deps and bundles
---
Bundle/IkiWiki.pm | 12 ++++++------
Bundle/IkiWiki/Extras.pm | 4 ++++
debian/control | 2 +-
doc/plugins/creole/discussion.mdwn | 2 ++
4 files changed, 13 insertions(+), 7 deletions(-)
(limited to 'doc/plugins')
diff --git a/Bundle/IkiWiki.pm b/Bundle/IkiWiki.pm
index 74832323a..769791d30 100644
--- a/Bundle/IkiWiki.pm
+++ b/Bundle/IkiWiki.pm
@@ -16,17 +16,17 @@ perl -MCPAN -e 'install Bundle::IkiWiki'
=head1 CONTENTS
-XML::Simple
Text::Markdown
-Date::Parse
-HTML::Template
HTML::Scrubber
-CGI
+HTML::Template
+HTML::Parser
+URI
+XML::Simple
+Date::Parse
CGI::FormBuilder
CGI::Session
Mail::Sendmail
-HTML::Parser
-URI
+CGI
Data::Dumper
=head1 AUTHOR
diff --git a/Bundle/IkiWiki/Extras.pm b/Bundle/IkiWiki/Extras.pm
index abf596f00..582d4a966 100644
--- a/Bundle/IkiWiki/Extras.pm
+++ b/Bundle/IkiWiki/Extras.pm
@@ -31,6 +31,10 @@ Text::Textile
Text::WikiFormat
XML::Feed
Net::Amazon::S3
+Text::WikiCreole
+Term::ReadLine::Gnu
+HTML::Tree
+Authen::Passphrase
=head1 AUTHOR
diff --git a/debian/control b/debian/control
index fe5c3eee7..8622362bf 100644
--- a/debian/control
+++ b/debian/control
@@ -14,7 +14,7 @@ Package: ikiwiki
Architecture: all
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
+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
Conflicts: ikiwiki-plugin-table
Replaces: ikiwiki-plugin-table
Provides: ikiwiki-plugin-table
diff --git a/doc/plugins/creole/discussion.mdwn b/doc/plugins/creole/discussion.mdwn
index 9d58fffbf..38ee2bd78 100644
--- a/doc/plugins/creole/discussion.mdwn
+++ b/doc/plugins/creole/discussion.mdwn
@@ -10,4 +10,6 @@ I've installed Text::WikiCreole 0.05 and enabled the plugin, but I get an error
>> Currently the creole plugin is included in ikiwiki but the ikiwiki deb (3.0.3) doesn't suggests libtext-wikicreole-perl. Why? --[[weakish]]
+>>> forgot, done now --[[Joey]]
+
I'm moving over a really stinkingly old UseMod and creole seems the nearest match. I've worked out that Bare /Subpage links need to become \[\[Subpage\]\], and Top/Sub links need to be \[\[Top/Sub\]\] (or \[\[Top/Sub|Top/Sub\]\], to display in exactly the same way), but I'm stuck on generic hyperlinks. The creole cheat sheet says I should be able to do \[\[http://url.path/foo|LinkText\]\], but that comes out as a link to create the "linktext" page, and Markdown-style \[Link Text\](http://url.path/foo) just gets rendered as is. Any suggestions? --[[schmonz]]
--
cgit v1.2.3
From 206b583c0db7551dd9ec0f36d0f46018fd0f77e2 Mon Sep 17 00:00:00 2001
From: "http://weakish.int.eu.org/"
Date: Fri, 13 Feb 2009 04:21:06 -0500
Subject: patch for googleform.tmpl to produce valid XHTML
---
doc/plugins/google/discussion.mdwn | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)
create mode 100644 doc/plugins/google/discussion.mdwn
(limited to 'doc/plugins')
diff --git a/doc/plugins/google/discussion.mdwn b/doc/plugins/google/discussion.mdwn
new file mode 100644
index 000000000..c18157665
--- /dev/null
+++ b/doc/plugins/google/discussion.mdwn
@@ -0,0 +1,22 @@
+This plugin uses the googleform.tmpl
+which produces valid HTML but invalid XHTML.
+This is not very good since the default ikiwiki
+templates produce XHTML instead of HTML.
+
+To produces valid XHTML, you need to edit
+googleform.tmpl (in e.g. /usr/share/ikiwiki/templates):
+
+
+ --- googleform.tmpl.orig 2009-02-13 02:47:00.000000000 -0600
+ +++ googleform.tmpl 2009-02-13 02:47:40.000000000 -0600
+ @@ -1,6 +1,6 @@
+
+
+Just tow tiny changes.
--
cgit v1.2.3
From bea8e0ad61578143786f57b416b3dc333864a1e4 Mon Sep 17 00:00:00 2001
From: Joey Hess
Date: Sat, 14 Feb 2009 02:38:17 -0500
Subject: apply patch to fix googleform xhtml
---
doc/plugins/google/discussion.mdwn | 18 +-----------------
templates/googleform.tmpl | 4 ++--
2 files changed, 3 insertions(+), 19 deletions(-)
(limited to 'doc/plugins')
diff --git a/doc/plugins/google/discussion.mdwn b/doc/plugins/google/discussion.mdwn
index c18157665..babc919d2 100644
--- a/doc/plugins/google/discussion.mdwn
+++ b/doc/plugins/google/discussion.mdwn
@@ -3,20 +3,4 @@ which produces valid HTML but invalid XHTML.
This is not very good since the default ikiwiki
templates produce XHTML instead of HTML.
-To produces valid XHTML, you need to edit
-googleform.tmpl (in e.g. /usr/share/ikiwiki/templates):
-
-
- --- googleform.tmpl.orig 2009-02-13 02:47:00.000000000 -0600
- +++ googleform.tmpl 2009-02-13 02:47:40.000000000 -0600
- @@ -1,6 +1,6 @@
-
-
-Just tow tiny changes.
+> Fixed, thanks for the patch! --[[Joey]]
diff --git a/templates/googleform.tmpl b/templates/googleform.tmpl
index 523cff001..e2d4a1f43 100644
--- a/templates/googleform.tmpl
+++ b/templates/googleform.tmpl
@@ -1,6 +1,6 @@
--
cgit v1.2.3
From 6f9c18f7cbbdc8305c6d4373a9d8a00d0c47af5f Mon Sep 17 00:00:00 2001
From: AlexandreDupas
Date: Mon, 16 Feb 2009 08:00:18 -0500
Subject: correct WikiLinks to the WikiLink page
---
doc/plugins/write.mdwn | 17 +++++++++++------
1 file changed, 11 insertions(+), 6 deletions(-)
(limited to 'doc/plugins')
diff --git a/doc/plugins/write.mdwn b/doc/plugins/write.mdwn
index 1a119b99b..acf9a2cdd 100644
--- a/doc/plugins/write.mdwn
+++ b/doc/plugins/write.mdwn
@@ -90,6 +90,11 @@ function is passed no values. It's ok for the function to call
This hook is called just before ikiwiki scans the wiki for changed files.
It's useful for plugins that need to create or modify a source page. The
+
+
+
+
+
function is passed no values.
### needsbuild
@@ -107,7 +112,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 +173,7 @@ htmlize the page) along with the rest of the page.
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.
@@ -434,7 +439,7 @@ describes the plugin as a whole. For example:
* `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
@@ -680,7 +685,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($;$)`
@@ -745,7 +750,7 @@ are collected together to form the RecentChanges page, for example.
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]].
@@ -914,7 +919,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
--
cgit v1.2.3
From 008f1c19ac354b5d9fd2feaaf20913a29d04297d Mon Sep 17 00:00:00 2001
From: NicolasLimare
Date: Tue, 17 Feb 2009 16:04:31 -0500
Subject: easy access to the userdb for apache auth?
---
doc/plugins/passwordauth/discussion.mdwn | 50 ++++++++++++++++++++++++++++++++
1 file changed, 50 insertions(+)
(limited to 'doc/plugins')
diff --git a/doc/plugins/passwordauth/discussion.mdwn b/doc/plugins/passwordauth/discussion.mdwn
index f4e7ae7a1..8ae960edd 100644
--- a/doc/plugins/passwordauth/discussion.mdwn
+++ b/doc/plugins/passwordauth/discussion.mdwn
@@ -9,3 +9,53 @@ the *Preferences -- Subscriptions*. --[[tschwinge]]
>> Aha, then the problem is Firefox, which is automatically filling the
>> *Password* field with its previous value, but not filling the
>> *Confirm Password* one. --[[tschwinge]]
+
+## easy access to the userdb for apache auth?
+
+My use case is:
+
+* restricted ikiwiki
+* read/edit only allowed from the local network (done with apache restrictions)
+* edit only for people authenticated (done with vanilla ikiwiki passwordauth)
+
+I would like to allow people to read/edit the wiki from outside of the
+local network, if and only if they already have an ikiwiki account.
+
+[[httpauth]] doesn't fit since it doesn't allow anonymous local users
+to create their own account. I want a single, local, simple auth
+database.
+
+My (naïve?) idea would be:
+
+* keep the [[passwordauth]] system
+* provide a way for Apache to use the userdb for authentication if
+people want to connect from outside
+
+I looked at the various auth modules for apache2. It seems that none
+can use a "perl Storable data" file. So, I think some solutions could
+be:
+
+* use a sqlite database instead of a perl Storable file
+ * can be used with
+ [mod_auth_dbd](http://httpd.apache.org/docs/2.2/mod/mod_authn_dbd.html)
+ * requires a change in ikiwiki module [[passwordauth]]
+* use an external program to read the userdb and talk with
+ [mod_auth_external](http://unixpapa.com/mod_auth_external.html)
+ * requires the maintainance of this external auth proxy over ikiwiki
+ userdb format changes
+ * (I don't know perl)
+* include this wrapper in ikiwiki
+ * something like `ikiwiki --auth user:pass:userdb` check the
+ `user:pass` pair in `userdb` and returns an Accept/Reject flag to
+ Apache
+ * requires a change in ikiwiki core
+ * still requires
+ [mod_auth_external](http://unixpapa.com/mod_auth_external.html)
+* do it with Apache perl sections
+ * (I don't know perl)
+
+Any opinion/suggestion/solution to this is welcome and appreciated.
+
+--
+[[NicolasLimare]]
+
--
cgit v1.2.3
From edad904f4c3b8621d11cd4e45e7bc5a669752d11 Mon Sep 17 00:00:00 2001
From: "http://arpitjain11.myopenid.com/"
Date: Tue, 17 Feb 2009 18:53:56 -0500
Subject:
---
doc/plugins/contrib/gallery.mdwn | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
(limited to 'doc/plugins')
diff --git a/doc/plugins/contrib/gallery.mdwn b/doc/plugins/contrib/gallery.mdwn
index 7148de3ef..72df13bd0 100644
--- a/doc/plugins/contrib/gallery.mdwn
+++ b/doc/plugins/contrib/gallery.mdwn
@@ -2,7 +2,7 @@
This plugin would create a nice looking gallery of the images. It has been build over the img plugin in Ikiwiki
-SVN repository of plugin is located at
+GIT repo of the plugin is located at
USAGE :
--
cgit v1.2.3
From 3ce8a2f8b91ed468fc174da55e5161745ef0d9d1 Mon Sep 17 00:00:00 2001
From: Joey Hess
Date: Tue, 17 Feb 2009 22:17:59 -0500
Subject: revert addition of several blank lines
---
doc/plugins/write.mdwn | 5 -----
1 file changed, 5 deletions(-)
(limited to 'doc/plugins')
diff --git a/doc/plugins/write.mdwn b/doc/plugins/write.mdwn
index acf9a2cdd..2e907938f 100644
--- a/doc/plugins/write.mdwn
+++ b/doc/plugins/write.mdwn
@@ -90,11 +90,6 @@ function is passed no values. It's ok for the function to call
This hook is called just before ikiwiki scans the wiki for changed files.
It's useful for plugins that need to create or modify a source page. The
-
-
-
-
-
function is passed no values.
### needsbuild
--
cgit v1.2.3
From 66dc253437e7ce2e3e8984513b3ecf96603d6670 Mon Sep 17 00:00:00 2001
From: Joey Hess
Date: Thu, 19 Feb 2009 18:38:45 -0500
Subject: Add noextension parameter to htmlize hooks to support, eg, Makefile.
---
IkiWiki.pm | 23 ++++++++++++++---------
debian/changelog | 1 +
doc/plugins/write.mdwn | 7 ++++++-
doc/todo/Allow_filenames_that_are_all_type.mdwn | 4 ++++
t/pagename.t | 23 ++++++++++++++++++-----
t/pagetype.t | 15 ---------------
6 files changed, 43 insertions(+), 30 deletions(-)
delete mode 100755 t/pagetype.t
(limited to 'doc/plugins')
diff --git a/IkiWiki.pm b/IkiWiki.pm
index ce1ceb351..f580d1f0d 100644
--- a/IkiWiki.pm
+++ b/IkiWiki.pm
@@ -627,27 +627,32 @@ sub dirname ($) {
return $file;
}
-sub pagetype ($) {
+sub isinternal ($) {
my $page=shift;
+ return exists $pagesources{$page} &&
+ $pagesources{$page} =~ /\._([^.]+)$/;
+}
+
+sub pagetype ($) {
+ my $file=shift;
- if ($page =~ /\.([^.]+)$/) {
+ if ($file =~ /\.([^.]+)$/) {
return $1 if exists $hooks{htmlize}{$1};
}
+ elsif ($hooks{htmlize}{basename($file)}{noextension}) {
+ return basename($file);
+ }
return;
}
-sub isinternal ($) {
- my $page=shift;
- return exists $pagesources{$page} &&
- $pagesources{$page} =~ /\._([^.]+)$/;
-}
-
sub pagename ($) {
my $file=shift;
my $type=pagetype($file);
my $page=$file;
- $page=~s/\Q.$type\E*$// if defined $type && !$hooks{htmlize}{$type}{keepextension};
+ $page=~s/\Q.$type\E*$//
+ if defined $type && !$hooks{htmlize}{$type}{keepextension}
+ && !$hooks{htmlize}{$type}{noextension};
if ($config{indexpages} && $page=~/(.*)\/index$/) {
$page=$1;
}
diff --git a/debian/changelog b/debian/changelog
index b644ac99c..810c59f4e 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -6,6 +6,7 @@ ikiwiki (3.05) UNRELEASED; urgency=low
directives, and other links on templates affect the page using the
template reliably.
* goto: Fix redirect to comments.
+ * Add noextension parameter to htmlize hooks to support, eg, Makefile.
-- Joey Hess Sun, 15 Feb 2009 20:11:57 -0500
diff --git a/doc/plugins/write.mdwn b/doc/plugins/write.mdwn
index 2e907938f..696bc6bc3 100644
--- a/doc/plugins/write.mdwn
+++ b/doc/plugins/write.mdwn
@@ -189,9 +189,14 @@ The function is passed named parameters: "page" and "content" and should
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);
diff --git a/doc/todo/Allow_filenames_that_are_all_type.mdwn b/doc/todo/Allow_filenames_that_are_all_type.mdwn
index e165da7dc..bebbcafa8 100644
--- a/doc/todo/Allow_filenames_that_are_all_type.mdwn
+++ b/doc/todo/Allow_filenames_that_are_all_type.mdwn
@@ -22,6 +22,10 @@ lost because it didn't have its own bug to track it. Now it does :). -- [[Will
>>
>> So, yeah, I think this patch is complete. :) -- [[Will]]
+>>> Thanks, [[applied|done]], but I added a noextension parameter,
+>>> since having keepextension allow files with no extension didn't make
+>>> sense. Also, made it work for pages in subdirs.. --[[Joey]]
+
diff --git a/IkiWiki.pm b/IkiWiki.pm
index 8d728c9..1bd46a9 100644
--- a/IkiWiki.pm
diff --git a/t/pagename.t b/t/pagename.t
index 488e341fa..540d10f4c 100755
--- a/t/pagename.t
+++ b/t/pagename.t
@@ -1,22 +1,35 @@
#!/usr/bin/perl
use warnings;
use strict;
-use Test::More tests => 8;
+use Test::More tests => 19;
BEGIN { use_ok("IkiWiki"); }
-# Used internally.
+# define mdwn as an extension
$IkiWiki::hooks{htmlize}{mdwn}={};
-$IkiWiki::hooks{htmlize}{txt}={keepextension => 1};
-
+is(pagetype("foo.mdwn"), "mdwn");
is(pagename("foo.mdwn"), "foo");
+is(pagetype("foo/bar.mdwn"), "mdwn");
is(pagename("foo/bar.mdwn"), "foo/bar");
-# bare files get the full filename as page name
+# bare files get the full filename as page name, undef type
+is(pagetype("foo.png"), undef);
is(pagename("foo.png"), "foo.png");
+is(pagetype("foo/bar.png"), undef);
is(pagename("foo/bar.png"), "foo/bar.png");
+is(pagetype("foo"), undef);
is(pagename("foo"), "foo");
# keepextension preserves the extension in the page name
+$IkiWiki::hooks{htmlize}{txt}={keepextension => 1};
is(pagename("foo.txt"), "foo.txt");
+is(pagetype("foo.txt"), "txt");
is(pagename("foo/bar.txt"), "foo/bar.txt");
+is(pagetype("foo/bar.txt"), "txt");
+
+# noextension makes extensionless files be treated as first-class pages
+$IkiWiki::hooks{htmlize}{Makefile}={noextension =>1};
+is(pagetype("Makefile"), "Makefile");
+is(pagename("Makefile"), "Makefile");
+is(pagetype("foo/Makefile"), "Makefile");
+is(pagename("foo/Makefile"), "foo/Makefile");
diff --git a/t/pagetype.t b/t/pagetype.t
deleted file mode 100755
index bb06a1568..000000000
--- a/t/pagetype.t
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/usr/bin/perl
-use warnings;
-use strict;
-use Test::More tests => 6;
-
-BEGIN { use_ok("IkiWiki"); }
-
-# Used internally.
-$IkiWiki::hooks{htmlize}{mdwn}={};
-
-is(pagetype("foo.mdwn"), "mdwn");
-is(pagetype("foo/bar.mdwn"), "mdwn");
-is(pagetype("foo.png"), undef);
-is(pagetype("foo/bar.png"), undef);
-is(pagetype("foo"), undef);
--
cgit v1.2.3
From f813b10fef13682c95ada9c9a9ccf05ff602c172 Mon Sep 17 00:00:00 2001
From: Joey Hess
Date: Thu, 19 Feb 2009 18:54:25 -0500
Subject: rename tag() to tagged(); add docs
---
IkiWiki/Plugin/tag.pm | 2 +-
debian/changelog | 1 +
doc/ikiwiki/pagespec.mdwn | 3 ++-
doc/plugins/tag.mdwn | 3 +++
doc/todo/tag_pagespec_function.mdwn | 2 +-
5 files changed, 8 insertions(+), 3 deletions(-)
(limited to 'doc/plugins')
diff --git a/IkiWiki/Plugin/tag.pm b/IkiWiki/Plugin/tag.pm
index 48c197748..8fe9c6828 100644
--- a/IkiWiki/Plugin/tag.pm
+++ b/IkiWiki/Plugin/tag.pm
@@ -127,7 +127,7 @@ sub pagetemplate (@) {
package IkiWiki::PageSpec;
-sub match_tag ($$;@) {
+sub match_tagged ($$;@) {
my $page = shift;
my $glob = shift;
return match_link($page, IkiWiki::Plugin::tag::tagpage($glob));
diff --git a/debian/changelog b/debian/changelog
index 810c59f4e..80b3c5d8e 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -7,6 +7,7 @@ ikiwiki (3.05) UNRELEASED; urgency=low
template reliably.
* goto: Fix redirect to comments.
* Add noextension parameter to htmlize hooks to support, eg, Makefile.
+ * Add tagged() PageSpec.
-- Joey Hess Sun, 15 Feb 2009 20:11:57 -0500
diff --git a/doc/ikiwiki/pagespec.mdwn b/doc/ikiwiki/pagespec.mdwn
index 86abe5745..b476bde1f 100644
--- a/doc/ikiwiki/pagespec.mdwn
+++ b/doc/ikiwiki/pagespec.mdwn
@@ -25,6 +25,7 @@ match all pages except for Discussion pages and the SandBox:
Some more elaborate limits can be added to what matches using these functions:
* "`link(page)`" - match only pages that link to a given page (or glob)
+* "`tagged(tag)`" - match pages that are tagged or link to the given tag (or glob)
* "`backlink(page)`" - match only pages that a given page links to
* "`creation_month(month)`" - match only pages created on the given month
* "`creation_day(mday)`" - or day of the month
@@ -65,7 +66,7 @@ More complex expressions can also be created, by using parentheses for
grouping. For example, to match pages in a blog that are tagged with either
of two tags, use:
- blog/* and (link(tag/foo) or link(tag/bar))
+ blog/* and (tagged(foo) or tagged(bar))
Note that page names in PageSpecs are matched against the absolute
filenames of the pages in the wiki, so a pagespec "foo" used on page
diff --git a/doc/plugins/tag.mdwn b/doc/plugins/tag.mdwn
index 17bb086a1..8ff70a069 100644
--- a/doc/plugins/tag.mdwn
+++ b/doc/plugins/tag.mdwn
@@ -5,6 +5,9 @@ This plugin provides the [[ikiwiki/directive/tag]] and
[[ikiwiki/directive/taglink]] [[directives|ikiwiki/directive]].
These directives allow tagging pages.
+It also provides the `tagged()` [[ikiwiki/PageSpec]], which can be used to
+match pages that are tagged with a specific tag.
+
[[!if test="enabled(tag)" then="""
This wiki has the tag plugin enabled, so you'll see a note below that this
page is tagged with the "tags" tag.
diff --git a/doc/todo/tag_pagespec_function.mdwn b/doc/todo/tag_pagespec_function.mdwn
index 060368179..681a1f661 100644
--- a/doc/todo/tag_pagespec_function.mdwn
+++ b/doc/todo/tag_pagespec_function.mdwn
@@ -15,7 +15,7 @@ match tagged pages independent of whatever the tagbase is set to.
>
> One other thing, perhaps it should be called `tagged()`? --[[Joey]]
-[[!tag patch]]
+[[!tag patch done]]
--- a/plugins/IkiWiki/Plugin/tag.pm 2009-02-16 11:30:11.000000000 +0000
+++ b/plugins/IkiWiki/Plugin/tag.pm 2009-02-17 15:40:03.000000000 +0000
--
cgit v1.2.3
From ae8266f8bcaef4a29e29163507a9dcf14d440c8f Mon Sep 17 00:00:00 2001
From: "http://taozhyn.myopenid.com/"
Date: Fri, 20 Feb 2009 05:00:42 -0500
Subject: Moved to patch to todo/auto-create
---
doc/plugins/tag/discussion.mdwn | 95 +----------------------------------------
1 file changed, 1 insertion(+), 94 deletions(-)
(limited to 'doc/plugins')
diff --git a/doc/plugins/tag/discussion.mdwn b/doc/plugins/tag/discussion.mdwn
index e478ec564..1b3043014 100644
--- a/doc/plugins/tag/discussion.mdwn
+++ b/doc/plugins/tag/discussion.mdwn
@@ -23,99 +23,6 @@ better" --[[DavidBremner]]
Please make the actual text used a template some way or another. I may want `map` instead of `inline`. --[[madduck]]
----
-
-I have create a patch to tag.pm for add the option for auto create tag pages.
-A new setting is used to enable or disable auto-create tag pages, `tag_autocreate`.
-The new tag file is created during the preprocess phase.
-The new tag file is then complied during the change phase.
-
- --- tag.pm 2009-02-06 10:26:03.000000000 -0700
- +++ tag_new.pm 2009-02-06 12:17:19.000000000 -0700
- @@ -14,6 +14,7 @@
- hook(type => "preprocess", id => "tag", call => \&preprocess_tag, scan => 1);
- hook(type => "preprocess", id => "taglink", call => \&preprocess_taglink, scan => 1);
- hook(type => "pagetemplate", id => "tag", call => \&pagetemplate);
- + hook(type => "change", id => "tag", call => \&change);
- }
-
- sub getopt () {
- @@ -36,6 +37,36 @@
- safe => 1,
- rebuild => 1,
- },
- + tag_autocreate => {
- + type => "boolean",
- + example => 0,
- + description => "Auto-create the new tag pages, uses autotagpage.tmpl ",
- + safe => 1,
- + rebulid => 1,
- + },
- +}
- +
- +my $autocreated_page = 0;
- +
- +sub gen_tag_page($) {
- + my $tag=shift;
- +
- + my $tag_file=$tag.'.'.$config{default_pageext};
- + return if (-f $config{srcdir}.$tag_file);
- +
- + my $template=template("autotagpage.tmpl");
- + $template->param(tag => $tag);
- + writefile($tag_file, $config{srcdir}, $template->output);
- + $autocreated_page = 1;
- +
- + if ($config{rcs}) {
- + IkiWiki::disable_commit_hook();
- + IkiWiki::rcs_add($tag_file);
- + IkiWiki::rcs_commit_staged(
- + gettext("Automatic tag page generation"),
- + undef, undef);
- + IkiWiki::enable_commit_hook();
- + }
- }
-
- sub tagpage ($) {
- @@ -47,6 +78,10 @@
- $tag=~y#/#/#s; # squash dups
- }
-
- + if (defined $config{tag_autocreate} && $config{tag_autocreate} ) {
- + gen_tag_page($tag);
- + }
- +
- return $tag;
- }
-
- @@ -125,4 +160,18 @@
- }
- }
-
- +sub change(@) {
- + return unless($autocreated_page);
- + $autocreated_page = 0;
- +
- + # This refresh/saveindex is to complie the autocreated tag pages
- + IkiWiki::refresh();
- + IkiWiki::saveindex();
- +
- + # This refresh/saveindex is to fix the Tags link
- + # With out this additional refresh/saveindex the tag link displays ?tag
- + IkiWiki::refresh();
- + IkiWiki::saveindex();
- +}
- +
-
-
-This uses a template called `autotagpage.tmpl`, here is my template file:
-
- \[[!inline pages="link()" archive="yes"]]
-
-
-A quirk I have not figured out is during the `sub change`, see my comments in the code.
-I am not sure if that is the best way to handle it.
-
-[[!tag patch]]
+See [[/todo/auto-create]]
-- Jeremy Schultz
--
cgit v1.2.3
From 08615b9a5e54b6402e52b88be377e48b8bc42944 Mon Sep 17 00:00:00 2001
From: "http://taozhyn.myopenid.com/"
Date: Fri, 20 Feb 2009 05:05:57 -0500
Subject: Fix wikilink to correct todo page
---
doc/plugins/tag/discussion.mdwn | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
(limited to 'doc/plugins')
diff --git a/doc/plugins/tag/discussion.mdwn b/doc/plugins/tag/discussion.mdwn
index 1b3043014..b6dab5358 100644
--- a/doc/plugins/tag/discussion.mdwn
+++ b/doc/plugins/tag/discussion.mdwn
@@ -23,6 +23,8 @@ better" --[[DavidBremner]]
Please make the actual text used a template some way or another. I may want `map` instead of `inline`. --[[madduck]]
-See [[/todo/auto-create]]
+
+See [[todo/auto-create tag pages according to a template]]
+
-- Jeremy Schultz
--
cgit v1.2.3
From 786a9e20efbd6e8f3a321e4fde410828904e71bd Mon Sep 17 00:00:00 2001
From: intrigeri
Date: Mon, 23 Feb 2009 07:02:34 -0500
Subject: link to other todo item, personal opinions
---
doc/plugins/passwordauth/discussion.mdwn | 6 ++++++
1 file changed, 6 insertions(+)
(limited to 'doc/plugins')
diff --git a/doc/plugins/passwordauth/discussion.mdwn b/doc/plugins/passwordauth/discussion.mdwn
index 8ae960edd..3362ae7d2 100644
--- a/doc/plugins/passwordauth/discussion.mdwn
+++ b/doc/plugins/passwordauth/discussion.mdwn
@@ -59,3 +59,9 @@ Any opinion/suggestion/solution to this is welcome and appreciated.
--
[[NicolasLimare]]
+For a similar use case, I've been intending to implement
+[[todo/httpauth_feature_parity_with_passwordauth]], but your idea may
+actually be the way to go. IMHO, the Perl sections idea is the
+easiest to setup, but on the long run, I'd prefer ikiwiki to optionnally
+use a userdb storage backend supported at least by Apache and lighttpd.
+--[[intrigeri]]
--
cgit v1.2.3