summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
Diffstat (limited to 'doc')
-rw-r--r--doc/bugs/git_mail_notification_race.mdwn19
-rw-r--r--doc/cgi.mdwn6
-rw-r--r--doc/features.mdwn7
-rw-r--r--doc/ikiwiki.setup8
-rw-r--r--doc/ikiwiki/pagespec.mdwn9
-rw-r--r--doc/index/discussion.mdwn3
-rw-r--r--doc/news/no_more_email_notifications.mdwn14
-rw-r--r--doc/plugins/brokenlinks.mdwn2
-rw-r--r--doc/plugins/orphans.mdwn3
-rw-r--r--doc/plugins/pagecount.mdwn4
-rw-r--r--doc/plugins/recentchanges.mdwn26
-rw-r--r--doc/plugins/write.mdwn23
-rw-r--r--doc/post-commit.mdwn6
-rw-r--r--doc/rcs/monotone.mdwn1
-rw-r--r--doc/recentchanges.mdwn8
-rw-r--r--doc/sandbox.mdwn36
-rw-r--r--doc/setup.mdwn3
-rw-r--r--doc/sitemap.mdwn5
-rw-r--r--doc/style.css48
-rw-r--r--doc/todo/Commit_emails:_ones_own_changes.mdwn3
-rw-r--r--doc/todo/__34__subscribe_to_this_page__34___checkbox_on_edit_form.mdwn6
-rw-r--r--doc/todo/aggregate_to_internal_pages.mdwn5
-rw-r--r--doc/todo/bzr.mdwn8
-rw-r--r--doc/todo/httpauth_example.mdwn3
-rw-r--r--doc/todo/mercurial.mdwn2
-rw-r--r--doc/todo/passwordauth:_sendmail_interface.mdwn1
-rw-r--r--doc/todo/plugin.mdwn16
-rw-r--r--doc/todo/recentchanges.mdwn56
-rw-r--r--doc/usage.mdwn16
-rw-r--r--doc/wikitemplates.mdwn5
30 files changed, 236 insertions, 116 deletions
diff --git a/doc/bugs/git_mail_notification_race.mdwn b/doc/bugs/git_mail_notification_race.mdwn
index ebe158fb9..58bd82325 100644
--- a/doc/bugs/git_mail_notification_race.mdwn
+++ b/doc/bugs/git_mail_notification_race.mdwn
@@ -1,10 +1,12 @@
+[[done]] (in this branch); fixed removing email notification support!
+
I was suprised to receive two mails from ikiwiki about one web edit:
1 F Oct 30 To joey+ikiwiki update of ikiwiki's plugins/contrib/gallery.mdwn by http://arpitjain11.myopenid.com/
1 F Oct 30 To joey+ikiwiki update of ikiwiki's plugins/contrib/gallery.mdwn by http://arpitjain11.myopenid.com/
The first of these had the correct diff for the changes made by the web
- edit (00259020061577316895370ee04cf00b634db98a).
+edit (00259020061577316895370ee04cf00b634db98a).
But the second had a diff for modifications I made to ikiwiki code
around the same time (2a6e353c205a6c2c8b8e2eaf85fe9c585c1af0cd).
@@ -38,3 +40,18 @@ diff for the first commit.
Ikiwiki's own locking prevents this from happenning if both commits are web
edits. At least one of the two commits has to be a non-web commit.
+
+----
+
+A related problem is that if two commits are made separately but then
+pushed in together, the commit code only looks at the HEAD commit, which
+is the second one. No notification is sent for the first.
+
+----
+
+Based on all of these problems with using the post-update hook, ikiwiki
+should be changed to use the post-receive hook, which provides enough
+information to avoid the assumuptions that led to these problems.
+Transitioning existing wikis to using a new hook will be interesting. Also,
+this hook is only present in git >= 1.5.0.7.
+--[[Joey]]
diff --git a/doc/cgi.mdwn b/doc/cgi.mdwn
index 22d8c4332..1448fa4d5 100644
--- a/doc/cgi.mdwn
+++ b/doc/cgi.mdwn
@@ -1,3 +1,5 @@
-While ikiwiki is primarily a wiki compiler, which generates static html pages, it does use CGI for two important wiki features, online page editing and the [[RecentChanges]] display.
+While ikiwiki is primarily a wiki compiler, which generates static html
+pages, it does use CGI for online page editing.
-To enable CGI, you need to create and install an ikiwiki.cgi wrapper. [[Setup]] explains how to do this. \ No newline at end of file
+To enable CGI, you need to create and install an ikiwiki.cgi wrapper.
+[[Setup]] explains how to do this.
diff --git a/doc/features.mdwn b/doc/features.mdwn
index a7b5c19ab..1d762bed4 100644
--- a/doc/features.mdwn
+++ b/doc/features.mdwn
@@ -127,7 +127,7 @@ with that there's no new commit marker syntax to learn.
Nearly the definition of a wiki, although perhaps ikiwiki challenges how
much of that web gunk a wiki really needs. These features are optional
-and can be enabled by enabling [[CGI]].
+and can be enabled by enabling [[CGI]] and a [[Revision_Control_System|rcs]].
### User registration
@@ -161,11 +161,6 @@ Well, sorta. Rather than implementing YA history browser, it can link to
ikiwiki can use the [[HyperEstraier]] search engine to add powerful
full text search capabilities to your wiki.
-### Commit mails
-
-ikiwiki can be configured to send you commit mails with diffs of changes
-to selected pages.
-
### [[w3mmode]]
Can be set up so that w3m can be used to browse a wiki and edit pages
diff --git a/doc/ikiwiki.setup b/doc/ikiwiki.setup
index 44cb35425..9bf542981 100644
--- a/doc/ikiwiki.setup
+++ b/doc/ikiwiki.setup
@@ -23,7 +23,6 @@ use IkiWiki::Setup::Standard {
#rcs => "svn",
#historyurl => "http://svn.example.org/trunk/[[file]]",
#diffurl => "http://svn.example.org/trunk/[[file]]?root=wiki&r1=[[r1]]&r2=[[r2]]",
- #svnrepo => "/svn/wiki",
#svnpath => "trunk",
# Git stuff.
@@ -72,8 +71,6 @@ use IkiWiki::Setup::Standard {
# # what you want.
# wrapper => "/svn/wikirepo/hooks/post-commit",
# wrappermode => "04755",
- # # Enable mail notifications of commits.
- # notify => 1,
# # Log to syslog since svn post-commit hooks
# # hide output and errors.
# syslog => 1,
@@ -85,8 +82,6 @@ use IkiWiki::Setup::Standard {
# # what you want.
# wrapper => "/git/wiki.git/hooks/post-update",
# wrappermode => "06755",
- # # Enable mail notifications of commits.
- # notify => 1,
#},
],
@@ -120,6 +115,9 @@ use IkiWiki::Setup::Standard {
#account_creation_password => "example",
# Uncomment to force ikiwiki to run with a particular umask.
#umask => 022,
+ # Default settings for the recentchanges page.
+ #recentchangespage => "recentchanges",
+ #recentchangesnum => 100,
# To add plugins, list them here.
#add_plugins => [qw{goodstuff search wikitext camelcase
diff --git a/doc/ikiwiki/pagespec.mdwn b/doc/ikiwiki/pagespec.mdwn
index 5c6433ed3..3cd6bb9f4 100644
--- a/doc/ikiwiki/pagespec.mdwn
+++ b/doc/ikiwiki/pagespec.mdwn
@@ -33,8 +33,13 @@ functions:
was created
* "`created_before(page)`" - match only pages created before the given page
was created
-* "`user(name)`" - only available in page subscription preferences, match
- only changes made by this user
+* "`glob(someglob)`" - match pages that match the given glob. Just writing
+ the glob by itself is actually a shorthand for this function.
+* "`internal(glob)`" - like `glob()`, but matches even internal-use
+ pages that globs do not usually match.
+* "`title(glob)`", "`author(glob)`", "`authorurl(glob)`",
+ "`license(glob)`", "`copyright(glob)`" - match pages that have the given
+ metadata, matching the specified glob.
For example, to match all pages in a blog that link to the page about music
and were written in 2005:
diff --git a/doc/index/discussion.mdwn b/doc/index/discussion.mdwn
index d5a48f282..4cf38e9cb 100644
--- a/doc/index/discussion.mdwn
+++ b/doc/index/discussion.mdwn
@@ -405,6 +405,9 @@ I'm playing around with various ways that I can use subversion with ikiwiki.
> away without running the post-commit wrapper on commit, and all you lose
> is the ability to send commit notification emails.
+> (And now that [[recentchanges]] includes rss, you can just subscribe to
+> that, no need to worry about commit notification emails anymore.)
+
* Is it possible / sensible to have ikiwiki share a subversion repository with other data (either completely unrelated files or another ikiwiki instance)? This works in part but again the post-commit hook seems problematic.
--[[AdamShand]]
diff --git a/doc/news/no_more_email_notifications.mdwn b/doc/news/no_more_email_notifications.mdwn
new file mode 100644
index 000000000..685a0d340
--- /dev/null
+++ b/doc/news/no_more_email_notifications.mdwn
@@ -0,0 +1,14 @@
+ikiwiki.info has upgraded to the not yet released ikiwiki 2.30. This
+version of ikiwiki drops support for subscribing to commit mail
+notifications for pages. The idea is that you can subscribe to the new
+[[RecentChanges]] feed instead. (Or create your own custom feed of only the
+changes you're interested in, and subscribe to that.)
+
+So if you were subscribed to mail notifications on here, you'll need to
+change how you keep track of changes. Please let me know if there are any
+missing features in the [[RecentChanges]] feeds.
+
+Statically building the RecentChanges also has performance implications,
+I'll keep an eye on [[server_speed]]..
+
+--[[Joey]]
diff --git a/doc/plugins/brokenlinks.mdwn b/doc/plugins/brokenlinks.mdwn
index 23fa04d7c..208d7120b 100644
--- a/doc/plugins/brokenlinks.mdwn
+++ b/doc/plugins/brokenlinks.mdwn
@@ -10,4 +10,4 @@ pages to search for broken links, default is search them all.
If this plugin is turned on, here's a list of broken links on this wiki:
-[[brokenlinks ]]
+[[brokenlinks pages="* and !recentchanges"]]
diff --git a/doc/plugins/orphans.mdwn b/doc/plugins/orphans.mdwn
index 798a5c8c2..74f4bae08 100644
--- a/doc/plugins/orphans.mdwn
+++ b/doc/plugins/orphans.mdwn
@@ -15,5 +15,6 @@ orphans.
Here's a list of orphaned pages on this wiki:
[[orphans pages="* and !news/* and !todo/* and !bugs/* and !users/* and
-!examples/* and !tips/* and !sandbox/* and !wikiicons/* and !plugins/*"]]
+!recentchanges and !examples/* and !tips/* and !sandbox/* and
+!wikiicons/* and !plugins/*"]]
"""]]
diff --git a/doc/plugins/pagecount.mdwn b/doc/plugins/pagecount.mdwn
index 9a9768277..8f7029df8 100644
--- a/doc/plugins/pagecount.mdwn
+++ b/doc/plugins/pagecount.mdwn
@@ -10,5 +10,5 @@ pages to count, default is to count them all.
This plugin is included in ikiwiki, but is not enabled by default.
If it is turned on it can tell us that this wiki includes
-[[pagecount ]] pages, of which [[pagecount pages="*/Discussion"]] are
-discussion pages.
+[[pagecount pages="* and !recentchanges"]]
+pages, of which [[pagecount pages="*/Discussion"]] are discussion pages.
diff --git a/doc/plugins/recentchanges.mdwn b/doc/plugins/recentchanges.mdwn
new file mode 100644
index 000000000..b48dcbacf
--- /dev/null
+++ b/doc/plugins/recentchanges.mdwn
@@ -0,0 +1,26 @@
+[[template id=plugin name=recentchanges core=1 author="[[Joey]]"]]
+
+This plugin examines the [[revision_control_system|rcs]] history and
+generates a page describing each recent change made to the wiki. These
+pages can be joined together with [[inline]] to generate the
+[[RecentChanges]] page.
+
+Typically only the RecentChanges page will use the pages generated by this
+plugin, but you can use it elsewhere too if you like. It's used like this:
+
+ \[[inline pages="internal(recentchanges/change_*)"
+ template=recentchanges show=0]]
+
+Here's an example of how to show only changes to "bugs/*".
+This matches against the title of the change, which includes a list of
+modified pages.
+
+ \[[inline pages="internal(recentchanges/change_*) and title(*bugs/*)"
+ template=recentchanges show=0]]
+
+Here's an example of how to show only changes that Joey didn't make.
+(Joey commits sometimes as user `joey`, and sometimes via openid.)
+
+ \[[inline pages="internal(recentchanges/change_*) and
+ !author(joey) and !author(http://joey.kitenet.net*)"
+ template=recentchanges show=0]]
diff --git a/doc/plugins/write.mdwn b/doc/plugins/write.mdwn
index 0da425402..9c3a36b8f 100644
--- a/doc/plugins/write.mdwn
+++ b/doc/plugins/write.mdwn
@@ -82,11 +82,19 @@ configuration. It's called early in the startup process. The
function is passed no values. It's ok for the function to call
`error()` if something isn't configured right.
+### refresh
+
+ hook(type => "refresh", id => "foo", call => \&refresh);
+
+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
hook(type => "needsbuild", id => "foo", call => \&needsbuild);
-This allows a plugin the manipulate the list of files that need to be
+This allows a plugin to manipulate the list of files that need to be
built when the wiki is refreshed. The function is passed a reference to an
array of pages that will be rebuilt, and can modify the array, either
adding or removing files from it.
@@ -523,6 +531,19 @@ destination file, as registered by `will_render`.
Passed a page and an extension, returns the filename that page will be
rendered to.
+## Internal use pages
+
+Sometimes it's useful to put pages in the wiki without the overhead of
+having them be rendered to individual html files. Such internal use pages
+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
+either on them with extreme caution), and are not matched by regular
+PageSpecs glob patterns, but instead only by a special `internal()`
+[[ikiwiki/PageSpec]].
+
## RCS plugins
ikiwiki's support for [[revision_control_systems|rcs]] also uses pluggable
diff --git a/doc/post-commit.mdwn b/doc/post-commit.mdwn
index 18eae1735..1c5176d42 100644
--- a/doc/post-commit.mdwn
+++ b/doc/post-commit.mdwn
@@ -1,7 +1,8 @@
If your wiki is kept in [[revision_control|rcs]], a post-commit hook is run
every time you commit a change to your repository.
-ikiwiki generates the "post-commit hook" once you've uncommented the relevant section (under wrappers) in the ikiwiki.setup.
+ikiwiki generates the "post-commit hook" once you've uncommented the relevant
+section (under wrappers) in the ikiwiki.setup.
The generated wrapper is a C program that is designed to safely be made
suid if necessary. It's hardcoded to run ikiwiki with the settings
@@ -14,4 +15,5 @@ your wiki checkout and html directory. If so, you can safely make
the wrapper suid to a user who can write there (*not* to root!). You might
want to read [[Security]] first.
-[[Setup]] explains setting this up from the start and see [[rcs/details]] to know more.
+[[Setup]] explains setting this up from the start and see [[rcs/details]] to
+know more.
diff --git a/doc/rcs/monotone.mdwn b/doc/rcs/monotone.mdwn
index d79381571..1d3cd2bc4 100644
--- a/doc/rcs/monotone.mdwn
+++ b/doc/rcs/monotone.mdwn
@@ -10,7 +10,6 @@ The module is available from the monotone source repository at:
Monotone support works, but there are still a few minor missing bits (listed here so they are not forgotten):
* At the moment there are no links to display diffs between revisions. It shouldn't be hard to add links to a [ViewMTN](http://grahame.angrygoats.net/moinmoin/ViewMTN) instance, but it hasn't been done yet.
-* The [[post-commit]] hook support, so that Ikiwiki sends change notifications when people commit using Monotone rather than the web interface, is partially implemented and untested.
* Documentation (this page) could be improved.
There is also a mismatch between the way Ikiwiki handles conflicts and the way Monotone handles conflicts. At present, if there is a conflict, then Ikiwiki will commit a revision with conflict markers before presenting it to the user. This is ugly, but there is no clean way to fix it at present.
diff --git a/doc/recentchanges.mdwn b/doc/recentchanges.mdwn
index 2e67f02e7..f83298187 100644
--- a/doc/recentchanges.mdwn
+++ b/doc/recentchanges.mdwn
@@ -1,3 +1,5 @@
-ikiwiki generates the list of recent changes by examining the history of
-the [[revision_control_system|rcs]] that the wiki is configured to use. You
-have to have [[CGI]] set up for this feature to be enabled.
+[[meta title="RecentChanges"]]
+Recent changes to this wiki:
+
+[[inline pages="internal(recentchanges/change_*) and !*/Discussion"
+template=recentchanges show=0]]
diff --git a/doc/sandbox.mdwn b/doc/sandbox.mdwn
index 84175d68c..17f5fde76 100644
--- a/doc/sandbox.mdwn
+++ b/doc/sandbox.mdwn
@@ -1,49 +1,15 @@
This is the SandBox, a page anyone can edit to try out this fab ikiwiki.
-# Table of Contents
-testhead
-sandbox
-
-
-<h2>testhead</h2>
-----
-Do re me fa so la te... git?
-
-i see. i see. lalala hmmmmmmmm.
-
-## sandbox
-[[sandbox]] does that work? yep. yay!
-
-# テスト。
-
-Test. Korean. 나는 한국인, 백두산,동해
-
-Test. Chinese. 我是中国人,泰山、黄河。
-
-testing openid ... ignore.
-
-Test. Проверка. Тэстенг. テスト ığüşöçİ ทดสอบ éphémère
-
Testing right-to-left text: (שרה) should be spelled shin (ש) resh (ר) heh (ה) from right to left.
-Testing it in a comment...
-
Here's a paragraph.
Here's another one with *emphasised* text.
do ë characters work? Sure.
-OpenID test. It works!!
-
Hupple hupple hupple hupple snork.
-Exactly my point!
-
-Test..
-
-A [[nonexistingpage]]
-
There are Polish diacritical characters: ą, ć, ę, ł, ń, ó, ś, ż, ź.
# Header
@@ -83,7 +49,7 @@ Bulleted list
* three
* four
* five
- * six
+
----
[[template id=note text="this is generated by the [[plugins/haiku]] plugin"]]
diff --git a/doc/setup.mdwn b/doc/setup.mdwn
index af1adc235..9bf7f7c7b 100644
--- a/doc/setup.mdwn
+++ b/doc/setup.mdwn
@@ -180,8 +180,7 @@ about using the git repositories.
Once your wiki is checked in to the revision control system,
you should configure ikiwiki to use revision control. Edit your
ikiwiki.setup, and uncomment the lines for the revision control system
-you chose to use. Be sure to set `svnrepo` to $REPOSITORY, if using
-subversion. Uncomment the block for the wrapper for your revision
+you chose to use. Uncomment the block for the wrapper for your revision
control system, and configure the wrapper path in that block
appropriately (for Git, it should be `$REPOSITORY/hooks/post-update`).
diff --git a/doc/sitemap.mdwn b/doc/sitemap.mdwn
index 939f20a74..836ccdb9a 100644
--- a/doc/sitemap.mdwn
+++ b/doc/sitemap.mdwn
@@ -1,5 +1,6 @@
This map excludes discussion pages, as well as subpages that are in feeds.
-[[map pages="* and !*/discussion
-and !bugs/* and !examples/*/* and !news/* and !tips/* and !plugins/* and !sandbox/* and !todo/* and !users/*
+[[map pages="* and !*/discussion and !recentchanges
+and !bugs/* and !examples/*/* and !news/* and !tips/* and !plugins/*
+and !sandbox/* and !todo/* and !users/*
and !*.css and !*.ico and !*.png and !*.svgz and !*.gif"]]
diff --git a/doc/style.css b/doc/style.css
index 0fa15d2b1..026d2c881 100644
--- a/doc/style.css
+++ b/doc/style.css
@@ -70,27 +70,49 @@ img {
border-style: none;
}
-/* Stuff for the RecentChanges table. */
-tr.changeheader {
+div.recentchanges {
+ border-style: solid;
+ border-width: 1px;
+ overflow: auto;
+ width: 100%;
background: #eee;
color: black !important;
}
-tr.changeinfo {
- background: #eee;
+.recentchanges .metadata {
+ padding: 0px 0.5em;
+}
+.recentchanges .changelog {
+ font-style: italic;
+ clear: both;
+ display: block;
+ padding: 1px 2px;
+ background: white !important;
color: black !important;
}
-th.changeheader {
- padding: 1px .3em;
+.recentchanges .desc {
+ display: none;
+}
+.recentchanges .committer {
+ float: left;
+ margin: 0;
+ width: 40%;
}
-td.changeinfo {
- padding: 1px .3em;
+.recentchanges .committype {
+ float: left;
+ margin: 0;
+ width: 5%;
+ font-size: small;
}
-td.changetime {
- white-space: nowrap;
- padding: 1px .3em;
+.recentchanges .changedate {
+ float: left;
+ margin: 0;
+ width: 35%;
+ font-size: small;
}
-td.changelog {
- font-style: italic;
+.recentchanges .pagelinks {
+ float: right;
+ margin: 0;
+ width: 60%;
}
/* Used for adding a blog page. */
diff --git a/doc/todo/Commit_emails:_ones_own_changes.mdwn b/doc/todo/Commit_emails:_ones_own_changes.mdwn
index d577c454f..862a85071 100644
--- a/doc/todo/Commit_emails:_ones_own_changes.mdwn
+++ b/doc/todo/Commit_emails:_ones_own_changes.mdwn
@@ -4,3 +4,6 @@ What's the rationale behind excluding ones own changes from the commit emails se
> Well, commit mails are intended to keep you informed of changes in the
> wiki, and I assumed you'd know about changes you made yourself.
> --[[Joey]]
+
+> [[done]] -- commit mails removed; recentchanges feeds can be configured
+> for whatever you like.
diff --git a/doc/todo/__34__subscribe_to_this_page__34___checkbox_on_edit_form.mdwn b/doc/todo/__34__subscribe_to_this_page__34___checkbox_on_edit_form.mdwn
index 70970c6cc..dc456bbbf 100644
--- a/doc/todo/__34__subscribe_to_this_page__34___checkbox_on_edit_form.mdwn
+++ b/doc/todo/__34__subscribe_to_this_page__34___checkbox_on_edit_form.mdwn
@@ -3,4 +3,8 @@ user to add a page to their subscribed list while editing. This would prove
particularly useful for [[todo]] and [bug](bugs) items, to allow users to receive
notifications for activity on their reports.
---[[JoshTriplett]] \ No newline at end of file
+--[[JoshTriplett]]
+
+I went and removed commit notification mails entirely, the idea is that you
+subscribe using the [[RecentChanges]] rss feed, and filter it on your end.
+Good enough? --[[Joey]]
diff --git a/doc/todo/aggregate_to_internal_pages.mdwn b/doc/todo/aggregate_to_internal_pages.mdwn
new file mode 100644
index 000000000..a4164fa25
--- /dev/null
+++ b/doc/todo/aggregate_to_internal_pages.mdwn
@@ -0,0 +1,5 @@
+The new internal page feature is designed for something like
+[[plugins/aggregate]].
+
+How to transition to it though? inlines of aggregated content would need to
+change their pagespecs to use `internal()`.
diff --git a/doc/todo/bzr.mdwn b/doc/todo/bzr.mdwn
index dbe35245c..51ae08146 100644
--- a/doc/todo/bzr.mdwn
+++ b/doc/todo/bzr.mdwn
@@ -4,6 +4,8 @@ rcs_commit was only changed to work around bzr's lack of a switch to set the
username). bzr_log could probably be written better by someone better at perl,
and rcs_getctime and rcs_notify aren't written at all. --[[bma]]
+(rcs_notify is not needed in this branch --[[Joey]])
+
#!/usr/bin/perl
use warnings;
@@ -183,4 +185,8 @@ and rcs_getctime and rcs_notify aren't written at all. --[[bma]]
>>> It's new (in fact I'm not even sure that it made it in to 0.90, it might be in 0.91 due
>>> in a couple of weeks.
->>> I was just noting it for a future enhancement. --[[JamesWestby]] \ No newline at end of file
+>>> I was just noting it for a future enhancement. --[[JamesWestby]]
+
+> I've just posted another patch with support for bzr, including support for
+> --author and a testsuite to git://git.samba.org/jelmer/ikiwiki.git. I hadn't
+> seen this page earlier. --[[jelmer]]
diff --git a/doc/todo/httpauth_example.mdwn b/doc/todo/httpauth_example.mdwn
index f67f67371..0c6268aa1 100644
--- a/doc/todo/httpauth_example.mdwn
+++ b/doc/todo/httpauth_example.mdwn
@@ -3,3 +3,6 @@ authentication (perhaps as a [[tip|tips]]), showing how to authenticate the
user for edits without requiring authentication for the entire wiki. (Ideally,
recentchanges should work without authentication as well, even though it goes
through the CGI.) --[[JoshTriplett]]
+
+> (Now that recentchanges is a static page, it auths the same as other wiki
+> pages.) --[[Joey]]
diff --git a/doc/todo/mercurial.mdwn b/doc/todo/mercurial.mdwn
index e5de93521..608c7d681 100644
--- a/doc/todo/mercurial.mdwn
+++ b/doc/todo/mercurial.mdwn
@@ -1,6 +1,6 @@
* Need to get post commit hook working (or an example of how to use it.)
* See below. --[[bma]]
-* rcs_notify is not implemented
+* rcs_notify is not implemented (not needed in this branch --[[Joey]])
* Is the code sufficiently robust? It just warns when mercurial fails.
* When rcs_commit is called with a $user that is an openid, it will be
passed through to mercurial -u. Will mercurial choke on this?
diff --git a/doc/todo/passwordauth:_sendmail_interface.mdwn b/doc/todo/passwordauth:_sendmail_interface.mdwn
index 4714a7a09..4bbda6565 100644
--- a/doc/todo/passwordauth:_sendmail_interface.mdwn
+++ b/doc/todo/passwordauth:_sendmail_interface.mdwn
@@ -44,7 +44,6 @@ Remaining TODOs:
just for this bit of functionality?
* Debian news file.
* ikiwiki news file.
- * Are commit emails still working?
--[[tschwinge]]
diff --git a/doc/todo/plugin.mdwn b/doc/todo/plugin.mdwn
index 0d702975f..89dbb04a2 100644
--- a/doc/todo/plugin.mdwn
+++ b/doc/todo/plugin.mdwn
@@ -6,20 +6,6 @@ Suggestions of ideas for plugins:
> web-server-specific code to list all users, and openid can't feasibly do so
> at all. --[[JoshTriplett]]
-* Support [[RecentChanges]] as a regular page containing a plugin that
- updates each time there is a change, and statically builds the recent
- changes list. (Would this be too expensive/inflexible? There might be
- other ways to do it as a plugin, like making all links to RecentChanges
- link to the cgi and have the cgi render it on demand.)
-
- Or using an iframe
- to inline the cgi, although firefox seems to render that nastily with
- nested scroll bars. :-(
-> Or just link to the equivalent in the version control system, if available;
-> gitweb's shortlog or summary view would work nicely as a
-> RecentChanges. --[[JoshTriplett]]
->>Why not fork the process? We wouldn't have to wait around for a response since we would assume the recent changes page was being generated correctly.
-
* It would be nice to be able to have a button to show "Differences" (or
"Show Diff") when editing a page. Is that an option that can be enabled?
Using a plugin?
@@ -58,4 +44,4 @@ Suggestions of ideas for plugins:
* As I couldn't find another place to ask, I'll try here. I would like to install some contributed plugins, but can not find anywhere to downlod them.
- > Not sure what you mean, the [[plugins/contrib]] page lists contributed plugins, and each of their pages tells where to download the plugin from.. --[[Joey]] \ No newline at end of file
+ > Not sure what you mean, the [[plugins/contrib]] page lists contributed plugins, and each of their pages tells where to download the plugin from.. --[[Joey]]
diff --git a/doc/todo/recentchanges.mdwn b/doc/todo/recentchanges.mdwn
index d46c0d9a8..91128a860 100644
--- a/doc/todo/recentchanges.mdwn
+++ b/doc/todo/recentchanges.mdwn
@@ -86,3 +86,59 @@ your pages. --Ethan
> backend.
>
> -- CharlesMauch
+
+----
+
+Here's a full design for redoing recentchanges, based on Ethan's ideas:
+
+* Add a recentchanges plugin that has a preprocessor directive:
+ \[[recentchanges num=100 pages=* template=recentchanges.tmpl]]
+ If put on the [[recentchanges]] page, this would result in up to 100
+ recentchanges/change_$id.mdwn files being created.
+* Which means the plugin has to store state and use a checkconfig hook
+ or the like to create the requested pages (and delete old ones) when
+ the wiki is rebuilt and when the post_commit hook is run.
+* Then it's a simple matter of using inline on the recentchanges page
+ to display the changes. (With a special template to display nicely.)
+* Rss/atom comes for free..
+* So drop mail notifications.
+* If someone wants to subscribe to notifications for only a subset
+ of pages, they can either filter the recentchanges in their rss
+ aggregator, or they can set up their own page that uses the recentchanges
+ directive for only the pages they want.
+* The `rcs_notify` functions will be removed.
+* To add diffs, another plugin can add a pagetemplate hook that calls
+ a `rcs_diff`. (optional)
+* So to update the changes files, just call `rcs_recentchanges`, create
+ files for each new id, and delete files for each id that is no longer
+ included.
+* The cgi support for recentchanges can be dropped, or moved to a different
+ plugin.
+
+I'm unsure how fast this will all be, but by using regular pages, there's
+cacheing, at least. The main slowdown might turn out to be the inlining and
+not the generation of the changes pages. The current cgi recentchanges
+code saves a tenth of a second or so by memoizing htmllink, an optimisation
+that won't be available when using the more general inlining code.
+
+An obvious optimisation, and one implied by this design, is that each change
+file is only written once. This assumes that the data in them doesn't ever
+change, which actually isn't true (svn commit messages can be changed), but
+is probably close enough to true for our purposes.
+
+Another optimisation would be to htmlize the change files when they're
+written out -- avoids re-rendering a given file each time a new change is
+made (thus doing 1/100th the work).
+
+Links in the change files to the changed pages will need special handling.
+These links should not generate backlinks. They probably shouldn't be
+implemented as wikiliks at all. Instead, they should be raw, absolute
+html links to the pages that were changed.
+
+Only problem with this approach is that the links break if the changed
+page later gets deleted. I think that's acceptable. It could link to
+`ikiwiki.cgi?do=redir&page=foo`, but that's probably overkill.
+
+--[[Joey]]
+
+[[done]] !! (in this branch at least :-)
diff --git a/doc/usage.mdwn b/doc/usage.mdwn
index 136e969c2..f34d5bad6 100644
--- a/doc/usage.mdwn
+++ b/doc/usage.mdwn
@@ -33,8 +33,7 @@ These options control the mode that ikiwiki operates in.
* --cgi
Enable [[CGI]] mode. In cgi mode ikiwiki runs as a cgi script, and
- supports editing pages, signing in, registration, and displaying
- [[RecentChanges]].
+ supports editing pages, signing in, and registration.
To use ikiwiki as a [[CGI]] program you need to use --wrapper or --setup
to generate a wrapper. The wrapper will generally need to run suid 6755 to
@@ -133,11 +132,6 @@ configuration options of their own.
access controlled by a group, it makes sense for the ikiwiki wrappers
to run setgid to that group.
-* --notify, --no-notify
-
- Enable email notification of commits. This should be used when running
- ikiwiki as a [[post-commit]] hook.
-
* --rcs=svn|git|.., --no-rcs
Enable or disable use of a [[revision_control_system|rcs]].
@@ -146,16 +140,10 @@ configuration options of their own.
whatever the revision control system you select uses.
In [[CGI]] mode, with a revision control system enabled, pages edited via
- the web will be committed. Also, the [[RecentChanges]] link will be placed
- on pages.
+ the web will be committed.
No revision control is enabled by default.
-* --svnrepo /svn/wiki
-
- Specify the location of the svn repository for the wiki. This is required
- for using --notify with [[Subversion|rcs/svn]].
-
* --svnpath trunk
Specify the path inside your svn repository where the wiki is located.
diff --git a/doc/wikitemplates.mdwn b/doc/wikitemplates.mdwn
index 4588b948e..1f6325b4b 100644
--- a/doc/wikitemplates.mdwn
+++ b/doc/wikitemplates.mdwn
@@ -10,11 +10,8 @@ located in /usr/share/ikiwiki/templates by default.
* `page.tmpl` - Used for displaying all regular wiki pages.
* `misc.tmpl` - Generic template used for any page that doesn't
have a custom template.
-* `recentchanges.tmpl` - Used for the RecentChanges page.
* `editpage.tmpl` - Create/edit page.
-* `notifymail.tmpl` - Not a html template, this is used to
- generate change notification mails for users who have subscribed to
- changes to a page.
+* `change.tmpl` - Used to create a page describing a change made to the wiki.
* `passwordmail.tmpl` - Not a html template, this is used to
generate the mail with the user's password in it.
* `rsspage.tmpl` - Used for generating rss feeds for [blogs|[ikiwiki/blog]].