Commit Graph

612 Commits (1f773784ed4a7cdba1595de8dc1d468ac4455e3b)

Author SHA1 Message Date
Joey Hess e3866fd94f fix transition call 2008-03-21 13:56:52 -04:00
Joey Hess 3479809f96 add transition code for indexdb 2008-03-21 09:37:52 -04:00
Joey Hess 213eb2e408 Changed to a binary index file, written using Storable, for speed
During refresh of a wiki with 800 files, loadindex was using more total
time than any other function, and saveindex was also in the top ten.
Rewriting them to use Storable makes them three times as fast.

0.7 seconds is saved on my laptop in profiling mode.
2008-03-21 09:07:44 -04:00
Joey Hess bf7360347e Precompile pagespecs, about 10% overall speedup
About 12% of ikiwiki runtime was spent in pagespec_match. It was evaling
the same pagespec code over and over again. This changes pagespec_translate
to return memoized, precompiled functions that can be called to match against
a given pagespec.

This also allows getting rid of the weird variable scoping trick that had
to be in effect for pagespec_translate to be called -- the variables are
now just fed into the function it returns.

On my laptop, this drops build time for the docwiki from about 60 to 50
seconds.
2008-03-21 06:36:07 -04:00
Joey Hess f40fec811d improve comment 2008-03-21 05:59:33 -04:00
Joey Hess 8a29361c32 * Detect invalid pagespecs and do not merge them in add_depends,
as that can result in a broken merged pagespec that matches nothing.
2008-03-17 14:04:59 -04:00
Joey Hess 52d9f8e9f3 * Correct bug in encoding of %pagestate keys, fixes edittemplate. 2008-03-17 13:08:16 -04:00
Joey Hess 736fa378c5 typo 2008-02-24 15:58:20 -05:00
Joey Hess 4763514861 * Add the linkify and scan hooks. These hooks can be used to implement
custom, first-class types of wikilinks.
* Move standard wikilink implementation to a new wikilink plugin, which
  will of course be enabled by default.
2008-02-11 22:48:27 -05:00
Josh Triplett fb82474be0 Tighten page name regex to not allow carriage returns or line feeds 2008-02-09 22:53:28 -08:00
Josh Triplett 1bcfef8be8 Allow whitespace in page names.
Spaces in page names map to underscores in file names.  Newlines and
tabs follow ikiwiki's usual filename escaping rules: __10__ and __9__.
2008-02-06 20:02:25 -08:00
Joey Hess f92505d78b Merge branch 'master' into prefix-directives 2008-02-05 15:59:42 -05:00
Joey Hess bf522a347f * inline: Add new `allowrss` and `allowatom` config options. These can be
used if you want a wiki that doesn't default to generating rss or atom
  feeds, but that does allow them to be turned on for specific blogs.
2008-02-04 18:36:50 -05:00
Joey Hess 09187f83bc clear %pagestate in loadindex
This is to handle the case where loadindex is called multiple times in one run,
as when aggregating.
2008-02-03 03:25:47 -05:00
Joey Hess 870adf3bbf move openiduser function to the openid plugin 2008-01-30 02:39:17 -05:00
Joey Hess 64a8c828b8 * meta: Add pagespec functions to match against title, author, authorurl,
license, and copyright. This can be used to create custom RecentChanges.
* meta: To support the pagespec functions, metadata about pages has to be
  retained as pagestate.
* Fix encoding bug when pagestate values contained spaces.
2008-01-29 17:16:51 -05:00
Joey Hess 47ee266163 improve support for internal pages
This makes it a lot quicker to deal with lots of recentchanges pages
appearing and disappearing. It avoids needing to clutter up pagespecs with
exclusions for those pages, by making normal pagespecs not match them.
2008-01-29 15:05:49 -05:00
Joey Hess 21f44880cd non-tabular recentchanges display
Doesn't look as good as the old table, but works as a rss feed.
2008-01-29 01:48:55 -05:00
Joey Hess d7fdd04b5a * Removed support for sending commit notification mails. Along with it went
the svnrepo and notify settings, though both will be ignored if left in
  setup files.
2008-01-29 00:36:58 -05:00
Joey Hess 1b8f1b867c only linkify openids in userlink
Can't use htmllink in userlink due to it being called from recentchanges
in cases where there is no configured url. It seems easist, at least for now,
to not linkify user names in this case. I don't think I've ever clicked on such
a link anyway.

Might revisit this later.
2008-01-28 23:32:36 -05:00
Joey Hess 29f3082772 move userlink to IkiWiki.pm
I have a plugin that needs to use userlink.
2008-01-28 22:58:31 -05:00
Josh Triplett 1b03a06c8c Add new preprocessor directive syntax¸ using a '!' prefix.
Add a prefix_directives option to the setup file to turn this syntax
on; currently defaults to false, for backward compatibility.  Support
optional '!' prefix even with prefix_directives off, and use that in
the underlay to support either setting of prefix_directives.  Add NEWS
entry with migration information.
2008-01-27 16:14:38 -08:00
Joey Hess 14002b58d2 fix 2008-01-09 14:45:07 -05:00
Joey Hess e01960e90a not only markdown adds gunk, so remove it in the main htmlize function 2008-01-09 14:41:28 -05:00
Joey Hess 50faf0b151 Call preprocessor hooks in void context during the scan pass.
This allows the hook to determine if it's just scanning, and avoid expensive
operations.
2008-01-09 02:30:46 -05:00
Joey Hess dd0b844477 further improve the .. regexp 2007-12-17 13:53:51 -05:00
Joey Hess 90bce7d139 * Don't refuse to render files with ".." in their name. (Anchor the regexp.) 2007-12-17 13:37:19 -05:00
Joey Hess 214bc2b65b * Allow dashes in preprocessor directive commands, and shortcuts. 2007-12-12 16:13:15 -05:00
Joey Hess 58049e97c1 * Fix file pruning code to work if ikiwiki is run with "." as the srcdir. 2007-12-10 15:12:56 -05:00
Joey Hess ff97b0358b bug fix 2007-12-08 18:25:22 -05:00
Joey Hess 055179cb4c * Finally implemented a simple per-page data storage mechanism for plugins,
via the %pagestate hash.
* Use pagestate in meta to detect potential redir loops.
2007-12-08 17:40:50 -05:00
Joey Hess 91fe16f35c * Add umask configuration option. Closes: #443329 2007-11-27 16:46:02 -05:00
Joey Hess d00e8d78c8 * Don't consider links to anchors on the same page to be self links.
Patch by Daniel Burrows. Closes: #451729
* When usedirs is disabled, link direct to index.html files, not to
  directories, to improve browsing of file:// urls.
  Patch by Daniel Burrows. Closes: #451728
2007-11-17 19:58:17 -05:00
Joey Hess 3e17b7d612 need to remove trailing slashes in not one, but 2 places
htmllink needs to do it because it uses the basename of the link as the link
text

bestlink needs to do it because it is not always called from htmllink
2007-11-17 16:32:02 -05:00
Joey Hess 80d16f80bf * Allow trailing slashes after page names in wikilinks. 2007-11-17 16:26:34 -05:00
Joey Hess 264a82a435 * inline: Add timeformat parameter to control how the ctime of
inlined pages is displayed. Closes: #451019
2007-11-13 16:14:48 -05:00
joey 2d9ee11006 * Add a "createlink" class attribute to the span for wikilinks pointing
to not-yet-existing pages. I don't have a useful style defined for that
  though.
2007-10-13 23:08:38 +00:00
joey 3945473f8a clear hashes in loadindex, so that it can safely be called more than once
even if pages have been deleted in between
2007-10-10 18:46:25 +00:00
joey b86f9b8409 * Don't allow whitespace in link text in a wikilink. This was still
allowed by the regexp in one case though not documented to work, and
  was ambiguous with preprocessor directives.
2007-09-24 16:50:49 +00:00
joey 4ccb9be7c6 improve diagnostics 2007-09-22 18:10:40 +00:00
joey 7bde880fa8 * map: Render pages on the way to subpages whose parent pages
are not included in the map. Include special styling for such pages.
* map: Remove common prefixes and don't over-indent.
* Add class option to htmllink().
2007-09-22 16:32:24 +00:00
joey 8489e68916 * table: Text::CSV doesn't return decoded unicode (XS module); decode its
return values.
2007-09-05 17:22:26 +00:00
joey 99261148fe fix 2007-08-28 23:11:40 +00:00
joey 25294defb8 Don't allow newlines in link text in a wikilink. 2007-08-28 22:54:54 +00:00
joey 9c5f4761d8 * Support for looking in multiple directories for underlay files.
* Plugins can add new directories to the search path with the add_underlay
  function.
* Split out smiley underlay files into a separate underlay, so if the plugin
  isn't used, the wiki isn't bloated with all those files.
2007-08-28 01:59:01 +00:00
joey ab8125d62a * Fix a bug in unlockwiki intorduced last version that made it crash ikiwiki
if it wasn't locked when called. This is known to break post-commit
  emails.
2007-08-26 17:38:17 +00:00
joey 7946c67d1f * Avoid ugly gettext messages if LANG is empty. Closes: #439035 2007-08-21 21:19:53 +00:00
joey 7dd6385fdb fix undef issue 2007-08-21 19:51:05 +00:00
joey 9ff9ea55f7 fix libdir tainting 2007-08-21 16:47:01 +00:00
joey 50e1b43408 * Add monotone support, contributed by William Uther. 2007-08-21 03:10:35 +00:00
joey c5ad5c8276 * Various minor fixes and stylistic improvements suggested by Perl::Critic. 2007-08-15 08:08:32 +00:00
joey 69065b8e79 * Fix bug in deletion/move during edit code introduced in 1.44. Need to take
the underlaydir into account.
2007-08-14 19:44:59 +00:00
joey 922e6ec144 the perl critic reminded me that the library shouldn't be using IN and OUT
global file handles
2007-08-14 05:47:29 +00:00
joey b4dafe467b * Change yet again how unhandled and escaped preprocessor directives are
re-output onto the page. Hopefully I finally got it right..
2007-08-13 17:35:14 +00:00
joey 506bcbac04 * Fix --libdir to work at the command line.
* Plugins can now be written as standalone external programs, which can
  be written in any language that can do XML::RPC.
2007-08-13 03:07:31 +00:00
joey 7922a663c0 * Support pagespec "functions" with no parameters, like included() in the
conditional plugin.
2007-08-11 23:31:57 +00:00
joey 09b0a3b73f * Add rel=tag attribute to tag links, supporting that microformat, as well
as allowing them to be styled specially. Thanks, NicolasLimare.
2007-08-05 20:48:13 +00:00
joey 1e5cd11635 * Add a libdir config option to let ikiwiki load perl modules, including
plugins, from a user-configurable directory.
2007-07-27 00:48:06 +00:00
joey 1612dce6bb * Add a htmlext config option, this can be used to make ikiwiki generate
html files with a different extension.
2007-07-25 01:16:53 +00:00
joey 4936b3db88 * Correct some issues with escaped preprocessor directives. 2007-07-20 17:55:19 +00:00
joey afcf0dc79e * Patch fixing various additional problems with test suite. Closes: #425891
once more.
2007-06-26 22:11:59 +00:00
joey 3bfa109971 * Allow svnpath config option to contain additional extra slashes anywhere
w/o confusing ikiwiki.
* Rcs modules are now imported, so other modules that need similar
  normalisation of configs etc can do so.
2007-06-23 12:12:59 +00:00
joey aadb214220 * Fix wrapper generator and untaint code's handling of strings contining
newlines.
2007-06-03 16:24:22 +00:00
joey 78323806ee * Explode some of the more insane regexps. 2007-06-01 23:40:43 +00:00
joey 66cb6baf4e * Apply a patch from Carl Worth adding support for using globs in link()
in a PageSpec.
2007-05-30 19:54:08 +00:00
joey b4eaef94bd * Correct some issues with display of unhandled preprocessor directives. 2007-05-29 01:56:52 +00:00
joey 8c2c8c6bea * Deal better with rebuilds that involve moving files; track and clean up the
old files.
* Change where the img plugin puts scaled images. It's better to make the
  scaled images subpages of the page that embeds them, rather than putting
  them alongside the original image, since if two pages scale the same image
  the same way, this prevents complications in dealing with two pages
  creating the same file. The move will be handled transparently, though you
  might want to rebuild your wiki to make it occur in one step.
2007-05-24 19:56:08 +00:00
joey ee843c7523 improve messages 2007-05-21 03:00:45 +00:00
joey 82ac63d798 * Change the aggregate plugin's locking strategy. Now it defers loading state
until the wiki is building and already locked, unless it's aggregating.
  When aggregating, it does not wait for the lock if it cannot get it, and
  instead exits, to prevent aggregating processes from piling up.
2007-05-21 02:52:51 +00:00
joey cf35ee04cd * Add a destpage parameter to the filter hook.
* Fix links to smilies generated by the smiley plugin for inlined pages. The
  old links were often wrong, but often still worked by accident.
2007-05-17 19:55:11 +00:00
joshtriplett b8d7ae91d0 * Add an account-creation password as a simple anti-spam mechanism. If
set in the wiki setup, passwordauth will require the password in
  order to create an account.
2007-05-09 02:05:32 +00:00
joey 1e62e4f87f * Enable openid logins by default.
* Enable usedirs by default.
2007-04-29 22:54:14 +00:00
joey 89260fb39a folding 2007-04-27 18:55:20 +00:00
joey 1eee32c5b5 * Make pagespec_match return an object that can be stringified to tell
* Include wikiname in syslogged messages.
2007-04-27 17:48:11 +00:00
joey ed54f94ee7 minor improvements 2007-04-27 17:01:52 +00:00
joshtriplett bf006f771b * Fix bestlink to use pagecase for pages in userdir, to support pages
with non-lowercase filenames.
2007-04-27 09:11:14 +00:00
joey 8fa8bd0adb the kind of perl code that can only be written at 4:30 am
(Get a good message when a PageSpec fails due to a negated success by
creating success objects with a reason string, which morph into failure
objects when negated.)
2007-04-27 08:34:09 +00:00
joey f8a7fb227b * Make pagespec_match on failure return a value that is false, but in a
scalar context, evaluates to a reason why the match failed.
* Add testpagespec plugin, which might be useful to see why a pagespec isn't
  matching something.
2007-04-27 07:55:40 +00:00
joey ee1ad53c4c * pagespec_match() has changed to take named parameters, to better allow
for extended pagespecs. The old calling convention will still work for
  back-compat for now.
* The calling convention for functions in the IkiWiki::PageSpec namespace
  has changed so they are passed named parameters.
* Plugin interface version increased to 2.00 since I don't anticipate any
  more interface changes before 2.0.
2007-04-27 02:55:52 +00:00
joey fedaead1d0 * Add .dpkg-tmp to prune regexp, so that if ikiwiki is run right as it's
being upgraded by dpkg it will ignore dpkg temp files in the basewiki.
2007-04-15 18:10:39 +00:00
joey 40af2fc96c expost %destsources 2007-04-14 20:41:25 +00:00
joey fb802f8d2d * Apply patch from Ethan to improve an error message that should never
happen.
2007-04-14 20:07:03 +00:00
joey dd03d57678 * Internal version number and installdir substitutions were lost, fix. 2007-04-13 18:41:06 +00:00
joey 13c7a51f1f * Optimise displaytime, trimming maybe 6% off the build time. 2007-04-10 01:49:16 +00:00
joey 06b955b84a * Add a new %destsources hash, which maps between a destination file and
the source page used to create it, ie it's the reverse of %renderedfiles.
* Use %destsources in htmllink and urlto for 20-50% speedup.
2007-04-10 01:18:03 +00:00
joey 98994a4719 use err facility when logging errors to syslog 2007-04-09 23:09:43 +00:00
joey e589e24fad oops 2007-04-06 23:30:22 +00:00
joey 4de163b997 * Fix display of escaped wikilinks containing anchors. 2007-04-06 21:20:14 +00:00
joey 83618add81 * Fix a bug that caused link(foo) to succeed if page foo did not exist. 2007-04-04 20:57:13 +00:00
joey 02b9f69ba5 * Finally apply the index.html patch, with thanks to everyone who worked
on and supported creating it (especially Tumov). This adds a "usedirs"
  option that makes ikiwiki use foo/index.html instead of foo.html as
  output page names. It is not yet enabled by default.
2007-04-01 19:59:42 +00:00
joey a2cfdaaec5 * Hide excess backlinks and expand using CSS trick; control quantiy via
the numbacklinks setting.
2007-03-31 08:48:10 +00:00
joey bbb0b3e72f * Finally fixed the longstanding inline removal bug.
* Renamed %oldpagemtime to a more accurately named %pagemtime and fix it to
  actually store pages' mtimes.
* Add "mtime" sort parameter to inline plugin.
2007-03-24 15:10:58 +00:00
joey 2a0d91af2f * Fix link() PageSpecs to not just look at the raw link text, but at where
that given link points based on the page doing the linking. Note that this
  could make such PageSpecs match different things than before, if you
  relied on the old behavior of them only matching the raw link text.
* This required changing the match_* interface, adding a third parameter.
* Allow link() PageSpecs to match relative, as is allowed with globs.a
* Add postform option to inline plugin.
* Add an bug tracker to the softwaresite example.
2007-03-21 23:11:09 +00:00
joey e5ddd9b581 * Fix a bug with inlined create page links, including Discussion links on
blog post pages. The links will now create pages relative to the page that
  actually contains the link.
2007-03-11 04:59:03 +00:00
joey 1465676082 need to use uri_escape_utf8 2007-03-08 06:25:20 +00:00
joey c1b698e418 * The underscore escaping support exposed a bug in edit links: Such links
were titlepage escaped in the urls, and then doubly escaped by the CGI
  when editing. To fix this, I removed the titlepage escaping in the edit
  urls.
* That means that *every edit link* on the wiki is potentially changed.
  Rebuilding wikis on upgrade to this version therefore necessary; enabled
  that in postinst.
2007-03-08 06:03:59 +00:00
joey 16ab4ba2df remove debugging 2007-03-07 09:49:38 +00:00
joey b365d864c5 My fix to support encoded underscores in page titles broke links to pages
with underscores in their filenames, since the link code also used
titlepage. Create a new linkpage function and have the link code use that
instead.
2007-03-07 09:48:59 +00:00
joey 1202b4fd7b * Add preview parameter to preprocesser calls, use this rather than the
previous ugly hack used to avoid writing rss feeds in previews.
* Fix the img plugin to avoid overwriting images in previews. Instead it
  does all the work to make sure the resizing works, and dummys up a resized
  image using width and height attributes.
* Also fixes img preview display, the links were wrong in preview before.
2007-03-06 22:37:05 +00:00
joey 7562417578 fix precidence problem, thanks bod 2007-03-03 00:46:21 +00:00
joey 3660b1c7a1 * Allow for underscores to appear in page titles, if encoded appropriately
(__95__) in filenames. Previously, all underscores were replaced with
  spaces. Thanks, Enrico Zini for noticing that bug.
2007-03-02 00:37:22 +00:00
joey 67bc7ca8a1 doh! 2007-02-21 09:12:20 +00:00
joey c60477228c * Since the CGI had to drop the wiki lock to avoid deadlocking the
commit hook, it was possible for one CGI to race another one and "win"
  the commit of both their files. This race has been fixed by adding a new
  commitlock, which when locked by the CGI, disables the commit hook
  (except for commit mails). The CGI then takes care of the updates the
  commit hook would have done.
2007-02-21 08:55:28 +00:00
joey 135e5fc63a * perl is broken: print "" || die fails! Work around this insanity. 2007-02-20 22:19:28 +00:00
joey fa52a730ff * Changed calling convention for httmllink slightly. The first three
parameters remain the same, but additional options are now passed in using
  named parameters.
* Change plugin interface version to 1.02 to reflect this change.
* Add a new anchor option to htmllink. Thanks Ben for the idea.
* Support anchors in wikilinks.
* Add a "more" plugin based on one contributed by Ben to allow implementing
  those dreaded "Read more" links in blogs.
2007-02-20 03:05:47 +00:00
joey 1081aa1ee5 fix a bug 2007-02-20 01:49:52 +00:00
joey ecf37caff9 * Avoid potential syslog format string issue, although only older versions
of perl are vulnerable and it is not known to really be exploitable from
  ikiwiki.
2007-02-17 21:34:42 +00:00
joey cf2aabd6c8 foo 2007-02-15 05:39:49 +00:00
joey d4c61b7281 * Many changes to make ikiwiki very resistant to write failures
including out of disk space situations. ikiwiki should never leave
  truncated files, and if the error occurs during a web-based file edit,
  the user will be given an opportunity to retry.
  Inspired by the many ways Moin Moin destroys itself when out of disk. :-)
* Fix syslogging of errors.
2007-02-15 02:22:08 +00:00
joey 479c7a1ea6 * Allow plugins to add new types of tests that can be used in PageSpecs.
* Add a "conditional" plugin, which allows displaying text if a condition
  is true. It is enabled by default so conditional can be used in the
  basewiki.
* Use conditionals in the template for plugins, so that plugin pages
  say if they're currently enabled or not, and in various other places
  in the wiki.
2007-02-12 02:44:47 +00:00
joey d472e293cd fixes and more tests 2007-02-07 00:45:00 +00:00
joey 28e3bd2db2 edito 2007-02-07 00:27:10 +00:00
joey 58141a0ebc * Patch based on a patch from Ethan to support relative matching in
PageSpecs, by using "./". pagespec_match() has grown a new third parameter
  to support this.
2007-02-06 21:17:25 +00:00
joey 97aea86162 code checking for locked pages into a new "lockedit" plugin. Both are
* Avoid using lots of memory when copying large non-html files.
  Yes, you can keep videos in the wiki..
2007-02-03 03:27:33 +00:00
joey 5f162cfd34 * Add canedit hook, allowing arbitrary controls over when a page can be
edited.
* Move code forcing signing before edit to a new "signinedit" plugin, and
  code checking for locked pages into a new "lockedit" plugin. Both are 
  enabled by default.
* Remove the anonok config setting. This is now implemented by a new
  "anonok" plugin. Anyone with a wiki allowing anonymous edits should
  change their configs to enable this new plugin.
* Add an opendiscussion plugin that allows anonymous users to edit
  discussion pages, on a wiki that is otherwise wouldn't allow it.
* Lots of CGI code reorg and cleanup.
2007-02-02 02:33:03 +00:00
joey ab71299293 * More gettext fun. 2007-01-28 02:24:43 +00:00
joey 350a063896 reorg 2007-01-28 00:35:32 +00:00
joey 72dbbe3a2c * Make gitorigin_branch and gitmaster_branch configurable via the setup
file. Closes: #408599
2007-01-27 23:56:17 +00:00
joey 04cde27a0e * Gettext 1.04 or up is needed for the OO interface that ikiwiki needs,
if an older version is installed, just don't gettext strings, instead of
  crashing.
2007-01-16 03:37:39 +00:00
joey 8c8ce06a1b * Search in default location for templates as a fallback when templatedir is
pointed elsewhere, so that only modified templates need to be copied into
  a templatedir. Based on work by JeremyReed.
2007-01-12 20:48:19 +00:00
joey 92e26031ee * Fix encoding issue with use of Locale::Gettext. Seems that the OO
interface returns proper utf-8 decoded strings, unlike the traditional
  interface, so use the OO interface.
2007-01-11 23:29:22 +00:00
joey b31dc8d994 * Fix --locale to control LC_ALL now. 2007-01-10 20:25:00 +00:00
joey 8daaa11baa added some comments for translators 2007-01-04 12:00:23 +00:00
joey 137a87afd5 userdir fixes 2006-12-29 05:58:33 +00:00
joey f62d23f008 * If a userdir is configured, links to pages in it can be made without
specifying the path. This allows for easy signing of comments by linking
  to your page in the userdir.
2006-12-29 05:33:20 +00:00
joey b5e2afa943 * Allow disabling of plugins included in goodstuff. 2006-12-29 04:49:55 +00:00
joey 912521ef07 * Initial work on internationalization of the program code. po/ikiwiki.pot
is available for translation.
* Export gettext() from IkiWiki module.
2006-12-29 04:38:40 +00:00
joey f4e3e47e12 * Ikiwiki used to use svn as its RCS by default unless configured otherwise,
now it defaults to using no RCS unless configured to do so.
2006-12-23 06:55:18 +00:00
joey 201d11da0a the problem with coding while drunk -- idiotic mistakes 2006-12-23 06:48:56 +00:00
joey 829e0b1b65 * Avoid creating edit links when not in cgi mode.
* Avoid displaying discussion links at all, if there's not a discussion
  page, when not in cgi mode.
2006-12-23 06:18:55 +00:00
joey 2476447a5b changed my mind about how to disambiguate links, it seems to make more
sense to start them with a /
2006-12-21 22:15:11 +00:00
joey 31d0021e9c * Add support for links of the form [[../foo]], this links to the page
* Fix code to make absolute urls for rss feeds, was missing some urls.
* Fix double-escaping of html entities in titles etc in rss feeds
  that occured if escaped characters were present in the page filename.
2006-12-21 21:52:06 +00:00
joey ff6941cef9 * Add support for links of the form [../foo]], this links to the page
foo a level higher in the directory hierarchy than the one it would link
  to by default.
2006-12-21 20:11:18 +00:00
joey 472dabbb60 * Turn $config{wiki_file_prune_regexps} into an array that is easier to
manipulate.
* Only exclude rss and atom files from processing if the inline plugin
  is enabled and that feed type is enabled. Else it's just a copyable file
  type.
* Move rss and atom option handling code into the inline plugin.
* Applied a rather old patch from Recai to fix the "pruning is too strict"
  issue. Now you can have wiki source directories inside dotdirs and the
  like, if you want.
2006-12-21 19:36:15 +00:00
joey 389ad222ec * Add userdir config setting. 2006-12-19 16:58:55 +00:00
joey e1604375da note fixed bug 2006-12-07 04:56:06 +00:00
joey c861b8cae9 update 2006-11-28 08:56:11 +00:00
joey a405b46c3b * Add toggle plugin.
* Introduce the nicebundle. This is a kind of plugin, that just enables
  many other plugins. It's an easy way to boost ikiwiki from its default,
  basic wiki, to a full-featured wiki, without manually picking the right
  set of plugins. New plugins will be added to the nicebundle from time to
  time.
2006-11-22 02:28:42 +00:00
joey 3e593eb9c0 * Add "last" parameter to hook function. Very basic ordering, and hopefully
nothing more spohisticated will be needed.
* Add formbuilder_setup and formbuilder hooks.
* Split out a passwordauth module, that holds all the traditional password
  based authentication etc code. It's enabled by default, but can be disabled
  if you want only openid or some other auth method.
2006-11-20 20:37:27 +00:00
joey b236b1a4ff fix regexp 2006-11-20 06:44:08 +00:00
joey e7ee388ea1 minor improvements 2006-11-20 06:22:19 +00:00
joey 702b8721d3 * Add an openid plugin to support logging in using OpenID.
* Web commits by OpenID users will record the full OpenID url for the user,
  but in recentchanges, these urls will be converted to a simplified display
  form+link.
* Modified svn, git, tla backends to recognise such web commits.
2006-11-20 02:46:58 +00:00
joey 35ee7e44a6 * Make sure to check for errors from every eval. 2006-11-08 21:03:33 +00:00
joey 5a82103526 * Implemented expiry options for aggregate plugin.
* Use precalculated backlinks info when determining if files need an update
  due to a page they link to being added/removed. Mostly significant if
  there are lots of pages.
* Remove duplicate link info when saving index. In some cases it could
  pile up rather badly. (Probably not the best way to deal with this
  problem.)
2006-11-01 05:41:37 +00:00
joey 438676af37 fold 2006-10-29 00:24:18 +00:00
joey db3b72c482 instead of over and over. Typical speedup is ~4x. Max possible speedup:
8x.
* Add "scan" parameter to hook(), which is used to make the hook be called
  during the scanning pass, as well as the render pass. The meta and tag
  plugins need to use the new scan parameter, so will any others that modify
  %links.
* Now that links are calculated in a separate pass, it can also 
  precalculate backlinks in one pass, which is O(N^2) instead of the
  previous code that was O(N^3). A very nice speedup for wikis with lots
  (thousands) of pages.
2006-10-28 05:07:56 +00:00
joey b02bbe8253 * Fix a subtle bug in will_render that broke some builds, by only clearing
items from renderedfiles the first time per build.
2006-10-16 18:51:13 +00:00
joey b973ed8269 * Add no_override parameter to hook().
* Add a shortcut plugin, inspired by Victor Moral's contributed shortcuts 
  plugin, but featuring a more ikiwiki-ish syntax and with shortcuts that
  can be configured using a page in wiki.
2006-10-15 19:33:52 +00:00
joey 8f4878d8ae export will_render 2006-10-13 18:28:37 +00:00
joey be55f6fd7c * Atom feed support based on a patch by Clint Adams.
* Add feeds=no option to inline preprocessor directive to turn off all types
  of feeds. feeds=rss will still work, and feeds=atom was also added, for
  fine control.
* $IkiWiki::version now holds the program version, and is accessible to
  plugins.
2006-10-08 23:57:37 +00:00
joey cefbe6210f * Change %renderedfiles to store an array of files rendered from a given
source file, to allow tracking of extra rendered files like rss feeds.
* Note that plugins that accessed this variable will need to be updated!
  The plugin interface has been increased to version 1.01 for this change.
* Add will_render function to the plugin interface, used to register that a
  page renders a destination file, and do some security checks.
* Use will_render in the inline and linkmap plugins.
* Previously but no longer rendered files will be cleaned up.
* You will need to rebuild your wiki on upgrade to this version.
2006-10-08 21:56:50 +00:00
joey 67b513e8c4 * Patch from Alec Berryman adding a http_auth config item that allows
using HTTP Authentication instead of ikiwiki's built in authentication.
  Useful for eg, large sites with their own previously existing user auth
  setup. Closes: #384534
2006-10-02 22:56:09 +00:00
joey 22ddd81dd2 * Numerous tla fixes from Clint. 2006-09-16 04:09:06 +00:00
joey 0f25ec8eb6 * pagetemplate hooks are now also called when generating cgi pages.
* Add a favicon plugin, which simply adds a link tag for an icon to each
  page (and cgis).
2006-09-16 00:52:26 +00:00
joey 96b395705a * Fix a baseurl problem in hyperestradier search results. 2006-09-15 03:15:34 +00:00
joey 80508e4e79 add displaytime 2006-09-11 02:44:05 +00:00
joey 1705e6246e updates 2006-09-10 02:55:42 +00:00
joey 9bae900242 * Add a module version number to IkiWiki, so you can "use IkiWiki '1.00'"
to declare which version of the interface your plugin needs.
2006-09-09 23:07:27 +00:00
joey dae0f48e91 * Work on firming up the plugin interface:
- Plugins should not need to load IkiWiki::Render to get commonly
    used functions, so moved some functions from there to IkiWiki.
  - Picked out the set of functions and variables that most plugins
    use, documented them, and made IkiWiki export them by default,
    like a proper perl module should.
  - Use the other functions at your own risk.
  - This is not quite complete, I still have to decide whether to
    export some other things.
* Changed all plugins included in ikiwiki to not use "IkiWiki::" when
  referring to stuff now exported by the IkiWiki module.
* Anyone with a third-party ikiwiki plugin is strongly enrouraged
  to make like changes to it and avoid use of non-exported symboles from
  "IkiWiki::".
* Link debian/changelog and debian/news to NEWS and CHANGELOG.
* Support hyperestradier version 1.4.2, which adds a new required phraseform
  setting.
2006-09-09 22:50:27 +00:00
joey 4ad7c9d625 * Patch from James Westby to add a --sslcookie switch, which forces
cookies to only be sent over ssl connections to avoid interception.
* Factor out the cgi header printing code into a new function.
* Fix preferences page on anonok wikis; still need to sign in to get
  to the preferences page.
2006-08-27 20:25:05 +00:00
joey f4d99ac1ca * Use DESTDIR and not PREFIX to specify installation prefix for packaging.
* Support running "perl Makefile.PL PREFIX=foo" to build ikiwiki to run
  from a different directory.
2006-08-25 02:12:43 +00:00
joey c9dbcd29e5 * Make pagespec merge code smarter about merging duplicate pagespecs. 2006-08-23 06:44:47 +00:00
joey 78b279c3d8 * Allow preprocessor directives to span multiple lines, both to make
long ones with lots of values easier to write, and to allow for ones with
  multi-line quoted values.
2006-08-23 03:25:40 +00:00
joey cf3021ef3f * Fixed a bug with previews of subpages having broken links to top-level
pages.
* Change how the stylesheet url is determined in the templates: Remove
  STYLEURL and add BASEURL to all templates (some already had it). This
  new more general variable can be used to link to other things (eg, images)
  from the template, as well as stylesheets.
2006-08-21 22:27:02 +00:00
joey cedb48765b * Add a tail fin^W^Wsidebar plugin by Tuomo Valkonen.
* If a page links to itself, mark up the link text in a span with
  class="selflink" so that it can be styled. I don't have a useful style
  defined for that though.
2006-08-18 00:24:22 +00:00
joey 24fcf2b97d * Add --syslog config option, to log to the syslog. 2006-08-16 21:17:49 +00:00
joey 4b36dee35a * The last release accidentially installed ikiwiki as ikiwiki.pl, now fixed.
* Add --version.
* Man page format fixups.
* Add a %pagecase which maps lower-case page names to the actual case
  used in the filename. Use this in bestlinks calculation instead of
  forcing the link to lowercase.
* Also use %pagecase in various other places that want to check if a page
  with a given name exists.
* This means that links to pages with mixed case names will now work,
  even if the link is in some other case mixture, and mixed case pages
  should be fully supported throughout ikiwiki.
* Recommend rebuilding wikis on upgrade to this version.
2006-08-13 02:03:43 +00:00
joey 2eff1c64ab * Set die_on_bad_params => 0 for all templates, to allow users to modify
them without annoyances.
* Suck in the page content when generating an inline archive page, to work
  around the meta plugin's lack of caching of title metadata across runs.
2006-08-12 16:36:35 +00:00
joey 7a05087f47 * Turn on HTML::Template loop_context_vars; not actually used in stock
templates but can be useful for things like making comma-delimited lists
  of tags or what have you.
2006-08-05 03:21:14 +00:00
joey d8819689b1 * Add xhtml files to the default prune regexp. 2006-08-04 02:35:54 +00:00
joey 5077165953 revert this, it seems wrong 2006-08-04 01:47:07 +00:00
joey c5919df5f3 * Make aggregator save permalinks and author name to pages as metadata.
* Add permalink and author support to meta plugin, affecting RSS feeds
  and blog pages.
* Change titlepage() to encode utf-8 alnum characters. This is necessary
  to avoid UTF-8 creeping into filenames in urls. (There are still
  some other ways that it can get in.)
2006-08-04 00:01:51 +00:00
joey 1253db7de2 * Added created_before and created_after PageSpec limits. 2006-08-03 16:55:52 +00:00
joey ee84ed3770 * Fix stupid bug in date matching, patch from Roland Mas. Closes: #381132
* Added many unit tests for pagespec_match.
2006-08-02 15:33:26 +00:00
joey 98f6f5e580 * Memoize pagespec translation, this speeds up a build of the ikiwiki tree
by 10% or so.
2006-08-02 03:39:19 +00:00
joey 3a95b4b132 stupid perl.. 2006-08-02 03:31:15 +00:00
joey 413ac79a99 backlink is just the reverse of link, so.. 2006-08-02 02:17:42 +00:00
joey 9db405f76a oy, case-insensativity lost! 2006-08-02 01:06:59 +00:00
joey 11ff91a6ed better use gmtime here 2006-08-02 00:28:46 +00:00
joey 2794d7ef5a * Renamed GlobLists to PageSpecs.
* PageSpecs can now include nested parens, "and", and "or". This remains
  backwards compatible to the old GlobList format. It's implemented by
  treating the GlobList as a very limited microlanguage that is transformed
  to perl code that does the matching.
* The old GlobList format is deprecated, and I encourage users to switch to
  using the new PageSpec format. Compatability with the old format will be
  removed at some point, possibly by 2.0.
* Wiki rebuild needed on upgrade to this version due to PageSpec change.
* Add support for creation_month and creation_year to PageSpec.
  Closes: #380680
* Changes to index file encoding.
2006-08-02 00:14:31 +00:00
joey 0f45548333 allow hooks to add options even to --setup 2006-07-30 07:41:26 +00:00
joey e49ff966a3 * ikiwiki can now download and aggregate feeds with its new aggregate
plugin, so it's possible to implement a Planet using ikiwiki!
* --setup --refresh no longer rebuilds wrappers. Use --setup --refresh
  --wrappers to do that.
* Add %IkiWiki::forcerebuild to provide a way for plugins like aggregate
  to update pages that haven't changed on disk.
2006-07-30 04:31:08 +00:00
joey 7bb447675f forgot to add this 2006-07-30 01:38:50 +00:00
joey ab75c0323b * Add a run_hooks function for the common task of running all hooks of a
given type.
* Add a savestate hook.
* Don't put blog post forms on pages if there's no cgiurl set.
* Reformat front page.
2006-07-30 00:20:11 +00:00
joey ee3e0e3c50 last minute fix from faidon 2006-07-29 21:40:59 +00:00
joey 6a9e16374f * Locale patch from Faidon:
- Adds a locale setting to setup files.
  - Proper local time, if the locale configuration option is used.
  - Support for UTF-8 (or ISO-8859-X) filenames in SVN. Before this patch,
    commiting (or even rcs_updating) on repositories with UTF-8 filenames was
    impossible.
2006-07-29 21:04:31 +00:00
joey 409e62021c * Add getopt hook type, this allows plugins to add new command-line options.
* Add --tagbase option to tag plugin.
2006-07-28 05:26:49 +00:00
joey 1bdfa4d8b5 * Support a w3mmode, which lets w3m run ikiwiki using its local CGI
support, to edit pages etc without a web server.
2006-07-07 21:00:48 +00:00
joey 014a387996 * Memoize abs2rel, which is still kinda slow, for another 30% speedup
in time to build the doc wiki.
2006-07-04 16:34:27 +00:00
joey ebc6120f99 * Work around very innefficient behavior in File::Spec::abs2rel. Result
is a savings of 2 pointless fork/execs per link calculation, which
    results in ~25% speedup of ikiwiki building its own doc wiki, and
    about 35% speedup displaying RecentChanges!
2006-07-04 03:42:19 +00:00
joey f877845353 remove leading dot from default_pageext
fix preview to not assume it's the default page type, and instead get the
type from the page
2006-07-04 01:29:45 +00:00
joey 23ab9057d2 re-improve regexp 2006-07-04 00:31:03 +00:00
joey ad6f4c5253 improve regexp 2006-07-03 23:59:34 +00:00
joey af029154d6 use "use open" pragma to avoid manually needing to specify utf8 everywhere
and also to set default stdio mode

change filetype to return undef, not "unknown"
2006-07-03 22:14:52 +00:00
joey 6551c1e560 * Support htmlize plugins and make mdwn one such plugin, which is enabled by
default (of course!). Based on a patch by Faidon Liambotis.
2006-07-03 22:08:04 +00:00
joey 929b9de9c2 Encode is used in nearly all code paths so stop loading it on demand 2006-07-03 20:18:16 +00:00
joey fa9517e5bb * Support pages with utf8 filenames. Patch by Faidon Liambotis. 2006-07-03 20:12:27 +00:00
joey 628e2ad5e0 modify to actually work 2006-07-02 19:47:22 +00:00
joey d1d212203c * Centralised all calls to HTML::Template and force all the templates
to be read as utf8.
2006-07-02 19:06:08 +00:00
joey b0e7e2e123 * Support pinging services such as Technorati using XML-RPC to notify them
about changes to rss feeds.
2006-06-27 01:13:03 +00:00
joey 202c4d522f * -CSD does not affect modules, so readfile() was not using the utf-8 input
layer, which led to lots of problems; make it force read files as utf-8.
  Closes: #373203
* writefile() likewise needs to use the utf8 output layer.
* Remove the -CSD from ikiwiki's hashbang since it's useless to have it
  there.
* Revert some of the decode_utf8 changes in CGI.pm that seem unnecessary
  given the readfile fix.
* Add utf-8 testcases for readfile and htmlize.
2006-06-15 06:37:33 +00:00
joey ad247de723 * Patch from Dr. Zini to add link() and backlink() to globlists. This allows
for some handy stuff like:
  - Using links as a kind of tag; creating blog pages that list all pages
    containing a given tag/link or not containing some other tag.
  - Subscribing to mail notifications whenever a change is made to a page
    that is a backlink of page foo. Ie, "Please notify me of changes in all
    pages that link to my home page in the wiki"
  - Locking any pages that are linked to from a particular page, so that
    lists of locks can be exposed in the wiki.
2006-06-02 01:17:26 +00:00
joey 7a1e12675e * Add --timeformat config option to allow changing how dates are displayed.
Note that as a side effect, dates will now be displayed using the local
  timezone, not as GMT.
2006-05-29 05:09:43 +00:00
joey 65d0aee407 * --getctime had bitrotted (well I only ever used it the once so far..),
* When inlining a page in another one, links from the inlined page are now
  expanded the same as they are when rendering the inlined page as a
  standalone page. So rather than being expanded from the POV of the
  inlining page, they are expanded from the POV of the inlined page.
  For example, a link from blog/foo to "bar" will now link to blog/bar
  if it exists. Previously this needed to be a link explicitly to 
  "blog/bar"; such links will also continue to work.
  (This was slightly complex to do as the link still has to be constructed
  relative to the inlining page.)
2006-05-26 16:11:53 +00:00
joey 5466a1daf9 * The page name and parent links has switched from using a <h1> to a styled
<span>, so pages can use <h1> internally instead of needing to use <h2>.
* Updated all of ikiwiki's own wiki pages for that.
* Add pagetemplate hook, which can be used by plugins that want to mess
  around with adding new stuff to the page template.
* Remove headercontent; the search plugin now adds the search box to the
  header by registering a pagetemplate hook, and other plugins should do
  similarly.
2006-05-26 01:10:58 +00:00
joey b2bd444f31 * Allow discussion links on pages to be turned off with --no-discussion. 2006-05-05 18:20:52 +00:00
joey 6652de5e1a * Removed --sanitize and --no-sanitize, replaced with --plugin htmlscrubber
and --disable-plugin htmlscrubber.
2006-05-05 05:41:11 +00:00
joey 642f73a39f dirname, basename, bestlink, linkify, pagetitle, titlepage.
* Allow links of the form [[some page|page]], with whitespace in the link
  text.
2006-05-04 18:51:26 +00:00
joey af9566ff1a rather a lot of changes to make hyperestraier search be a plugin, allowing
for other types of search engine plugins if wanted, and also opening up a
lot of new possibilities for other kinds of plugins later

some notable changes along the way:

- lots of new hook types: cgi, render, delete
- wrapper files fixed to support config strings with newlines in them
- HEADERCONTENT in page template useful for plugins. Probably needs to be
  expanded to more such for other places plugins might want to add content.
- remove unnecessary wrappers field from config info stored in wrappers
2006-05-03 21:50:39 +00:00
joey a44bfb158d change plugin interface to use named parameters for flexability 2006-05-03 19:58:58 +00:00
joey 12422e9890 * Patch from Thomas Schwinge to switch from --svn to --rcs=svn, etc,
to pave the way for adding other RCS support. This also changes the
  setup files, where before they had svn => 1 or svn => 0, now they have
  rcs => "svn" or rcs => "".
* Add a debian/NEWS file with upgrade notes.
* Load whatever rcs module is specified, so new ones can be just dropped in
  as plugins and work.
* Add some basic docs about writing RCS modules.
2006-05-02 18:44:39 +00:00
joey 3b0fce93e4 * Split off an IkiWiki.pm out of ikiwiki and have all the other modules use
it, this will allow for adding a unit test suite.
2006-05-02 06:53:33 +00:00