181 lines
7.0 KiB
Markdown
181 lines
7.0 KiB
Markdown
## online page editing
|
|
|
|
* Eventually, might want page deletion.
|
|
* Eventually, might want file upload.
|
|
|
|
## recentchanges
|
|
|
|
* Should support mail notification of new and changed pages.
|
|
|
|
Hmm, should be easy to implement this.. it runs as a svn post-coommit hook
|
|
already, so just look at the userdb, svnlook at what's changed, and send
|
|
mails to people who have subscribed.
|
|
|
|
A few details:
|
|
1. [[Joey]] mentioned that being able to subscribe to globs as well as
|
|
explicitly named pages would be desirable.
|
|
2. I think that since we're using Perl on the backend, being able to
|
|
let users craft their own arbitrary regexes would be good.
|
|
|
|
Joey points out that this is actually a security hole, because Perl
|
|
regexes let you embed (arbitrary?) Perl expressions inside them. Yuck!
|
|
|
|
It would also be good to be able to subscribe to all pages except discussion pages or the SandBox: `* !*/discussion !sandobx`, maybe --[[Joey]]
|
|
|
|
3. Of course if you do that, you want to have form processing on the user
|
|
page that lets them tune it, and probably choose literal or glob by
|
|
default.
|
|
|
|
I think that the new globlist() function should do everything you need.
|
|
Adding a field to the prefs page will be trivial --[[Joey]]
|
|
|
|
The first cut, I suppose, could use one sendmail process to batch-mail all
|
|
subscribers for a given page. However, in the long run, I can see users
|
|
demanding a bit of feature creep:
|
|
|
|
4. Each user should be able to tune whether they see the actual diff parts or
|
|
not.
|
|
5. Each user should be able to set a maximum desired email size.
|
|
6. We might want to support a user-specified shibboleth string that will be
|
|
included in the email they receive so they can easily procmail the messages
|
|
into a folder.
|
|
|
|
--[[BrandenRobinson]]
|
|
|
|
## pluggable renderers
|
|
|
|
I'm considering a configurable rendering pipeline for each supported
|
|
filename extension. So for ".mdwn" files, it would send the content through
|
|
linkify, markdown, and finalize, while for ".wiki" files it might send it
|
|
through just a wiki formatter and finalize.
|
|
|
|
This would allow not only supporting more types of markup, but changing
|
|
what style of [[WikiLink]]s are supported, maybe some people want to add
|
|
[[CamelCase]] for example, or don't like the [[SubPage/LinkingRules]].
|
|
|
|
The finalize step is where the page gets all the pretty junk around the
|
|
edges, so that clearly needs to be pluggable too.
|
|
|
|
There also needs to be a step before finalize, where stuff like lists of pages
|
|
that linked back to it could be added to the page. However, doing linkbacks
|
|
also needs to tie into the main logic, to determine what pages need to be
|
|
renered, so maybe that won't be a plugin.
|
|
|
|
## blogging and rss
|
|
|
|
The wiki should emit rss feeds for pages. The simple case is a regular
|
|
page. The complex case is a blog composed of multiple pages.
|
|
|
|
### single page
|
|
|
|
Just create an rss feed with one element, that contains the last diff to
|
|
the page, or the contents of the page, or something like that. Whenever the
|
|
page is changed, rss readers should see the single post in the feed as a
|
|
new post, so they'll dump out the page again. Simple, allows subscribing to
|
|
any page as an RSS feed if you want to see just changes to that page.
|
|
|
|
### multi-page blog
|
|
|
|
This also takes care of the feature of wanting to make a wiki page
|
|
comprised of several sub-pages that can be independantly edited. Add a
|
|
token that can be embedded into a page and that specifies a [[GlobList]] of
|
|
pages. Now when any page matching the globs changes, this page must be
|
|
updated too.
|
|
|
|
For the html rendering, just embed the most recently created N pages in the
|
|
[[GlobList]], with the title of each being a link to the individual page,
|
|
plus a link to an additional page that lists all the titles of every
|
|
matching page in creation order (archives). Plus at the bottom a small web
|
|
form that prompts for a title and allows creating a new page for a new blog
|
|
post.
|
|
|
|
For the rss rendering, generate a proper weblog of the same pages.
|
|
Of course for permalinks use the links to the subpages.
|
|
|
|
Note that this allows for weblogs with different sections, etc.
|
|
|
|
Requirements:
|
|
|
|
* Need to keep track of creation dates of pages in the index file.
|
|
* Need to keep track of the globlists in the index file.
|
|
- Probably need to redesign the index file format to allow for this sort
|
|
of future expansion.
|
|
* Need to pick a good token and note that the token will need to be passed
|
|
multiple parameters. Possibly something like this:
|
|
|
|
[[embed pages="myblog/*" show="30"]]
|
|
|
|
## revisit case
|
|
|
|
Being case insensative is handy, but it does make the [[BackLinks]] a bit
|
|
ugly compared to other links. It should be possible to support pagenames
|
|
that have uppercase, while still allowing them to be linked to using any
|
|
case.
|
|
|
|
## html
|
|
|
|
Make the html valid. Add css and prettify. Make RecentChanges use table for formatting, and images to indicate web vs svn commits and to link to diffs.
|
|
|
|
All of this should be doable w/o touching a single line of code, just editing the [[templates]] BTW.
|
|
|
|
## sigs
|
|
|
|
Need a way to sign name in page that's easier to type than "--\[[Joey]]"
|
|
and that includes the date.
|
|
|
|
What syntax do other wikis use for this? I'm considering "\[[--]]" (with
|
|
spaces removed) as it has a nice nmemonic.
|
|
|
|
OTOH, adding additional syntax for this would be counter to one of the
|
|
design goals for ikiwiki: keeping as much markup as possible out of the
|
|
wiki and not adding nonstandard markup. And it's not significantly hard to
|
|
type "--\[[Joey]]", and as to the date, we do have page history.
|
|
|
|
## recentchanges more than 100
|
|
|
|
Possibly add "next 100" link to it, but OTOH, you can just use svn log if
|
|
you need that data..
|
|
|
|
## search
|
|
|
|
* page name substring search
|
|
* full text (use third-party tools?)
|
|
|
|
## lists
|
|
|
|
* list of all missing pages
|
|
* list of all pages or some kind of page map (probably covered by the rss
|
|
feeds stuff above)
|
|
|
|
These could be their own static pages updated when other pages are updated.
|
|
Perhaps this ties in with the pluggable renderers stuff.
|
|
|
|
## page indexes
|
|
|
|
Might be nice to support automatically generating an index based on headers
|
|
in a page, for long pages. The question is, how to turn on such an index?
|
|
|
|
## basewiki underlay
|
|
|
|
Rather than copy the basewiki around everywhere, it should be configured to
|
|
underlay the main srcdir, and pages be rendered from there if not in the
|
|
srcdir. This would allow upgrades to add/edit pages in the basewiki.
|
|
|
|
Impementaion will be slightly tricky since currently ikiwiki is hardcoded
|
|
in many places to look in srcdir for pages. Also, there are possible
|
|
security attacks in the vein of providing a file ikiwiki would normally
|
|
skip in the srcdir, and tricking it to processing this file instead of the
|
|
one from the underlaydir.
|
|
|
|
There are also difficulties related to removing files from the srcdir, and
|
|
exposing ones from the underlaydir. Will need to make sure that the mtime
|
|
for the source file is zeroed when the page is removed, and that it then
|
|
finds the underlay file and treats it as newer.
|
|
|
|
## Logo
|
|
|
|
ikiwiki needs a logo. I'm thinking something simple like the word "ikiwiki"
|
|
with the first "k" backwards; drawn to show that it's "wiki" reflected.
|
|
|
|
## [[Bugs]]
|