Commit Graph

165 Commits (2b0473f09056120337637676f8f54bcd68c63442)

Author SHA1 Message Date
Joey Hess f937c1fb80 crazy optimisation to work around slow markdown
Markdown is slow. Especially if it has to process an enormous page. The
most common enormous page is currently the recentchanges page, which gets
processed a lot, and contains very little actual markdown. Most of it is a
big <div>, which markdown skips ... slowly.

This is a rather sick optimisation to work around markdown's speed issues.
Now inline inserts a small, dummy div, allows markdown to quickly render
the actual page content, then replaces the dummy with the actual inlined
pages later.

Results: Rendering just a recentchanges page, with diffs included, dropped
from 4.5 seconds to 2.7 seconds on my laptop. Building the entire wiki
dropped from 46.6 seconds to 39.5 seconds.

(It would be better if inline were a *post*-processor directive.)
2008-03-21 04:48:26 -04:00
Joey Hess 99c65a4c0e * Use absolute url for feedurl when filling out the feed templates.
Closes: #470530
2008-03-12 18:49:41 -04:00
Joey Hess 4eabb3cb7a * inline: When forcing urls absolute for rss feeds, skip mailto and other
such urls.
2008-02-24 17:07:56 -05:00
Joey Hess f7303db5a1 * Fix another preview will_render bug. This one involved inline,
which forced a scan of the page to make available metadata that
  appeared after the inline directive. Problem is that scan made it forget
  about any other files rendered due to the page. The scan also turns out
  to be unnecessary now, since meta persistently stores state and it's
  always available. So it was just removed.
2008-02-24 15:36:25 -05:00
Joey Hess f64ef7deb6 proper fix for the preview/will_render issue 2008-02-04 18:46:34 -05:00
Joey Hess b37dc9c926 preview shouldn't show the feed buttons or post form 2008-02-04 18:44:54 -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 d1c4899a22 * inline: When previewing, still call will_render on rss/atom files,
just avoid actually writing the files. This is necessary because ikiwiki
  saves state after a preview (in case it actually *did* write files),
  and if will_render isn't called its security checks will get upset
  when the page is saved. Thanks to Edward Betts for his help tracking this
  tricky bug down.
2008-02-04 17:58:23 -05:00
Joey Hess 3436fed081 * inline: The template can check for FIRST and LAST, which will be
set for the first and last inlined page. Useful for templates that build
    tables and the like.
2008-01-28 21:22:04 -05:00
Joey Hess deb39a1f14 * meta: Run in scan mode again (more intelligently) and re-add support for
meta link.
* Fix support for the case where metadata appears after an inline directive.
  This was broken in version 2.16.
2008-01-09 02:38:43 -05:00
Joey Hess 4ac5685744 fix some bad copy and pasted plugin ids 2008-01-07 15:28:53 -05:00
Joey Hess 1d60cb322d correct variable scoping error in nils's patch 2007-12-16 16:07:52 -05:00
Nis Martensen 723a10b5b1 rssurl and atomurl are only needed where $feeds is set 2007-12-16 16:04:38 -05:00
Nis Martensen c99369cdbe Also increment feednum only if feeds are generated 2007-12-16 16:04:28 -05:00
Nis Martensen 74a56db8d6 Set page_numfeeds only if feeds are being generated 2007-12-12 16:54:09 -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 Hess 2697ac99cf use nulls to avoid ambiguities 2007-10-25 06:20:32 -04:00
Joey Hess 9f1cd89bc2 * Add handling of feeds for nested inlines, as well as support for a
single page containing two different feeds.
* Also fixed some places in inline that failed to use destpage correctly.
2007-10-25 05:43:43 -04:00
joey 95199c5b04 * inline: add feedonly option, set feedonly=yes to get only the feed button
but not inline the pages.
2007-09-13 22:23:32 +00:00
joey ef43bff1ca * Correct generation of RFC 3339 format times for atom/rss feeds. Always use
gmtime for these since a time zone is not specified.
2007-09-02 19:29:40 +00:00
joey abc5919087 * Fix bug when blogging by cgi, introduced in last version. 2007-08-26 17:32:15 +00:00
joey 160326b469 * Apply a patch from NicolasLimare adding modification date tags to rss and
atom feeds, and also changing the publication time for a feed to the
  newest modiciation time (was newest creation time).
* The patch also adds dcterms:creator to rss items that have a known author.
2007-08-11 23:15:08 +00:00
joey 46a80d9cbe * Move blog form code out of CGI.pm and into the inline plugin. 2007-08-05 22:07:32 +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 d9a3c2bed2 * Make the url absolution code for feeds significantly more robust. 2007-06-03 17:10:32 +00:00
joey ba1765fbdf * More consistent encoding of titles in rss and atom feeds. Don't use
ESCAPE=HTML for titles in the templates for these feeds, and instead
  escape the title going in to the template. Previously, the title was
  sometimes double-escaped in a feed (if set via meta title), and sometimes
  not (if set from the page filename).
* In the meta plugin, when a title is set, encode the html entities in it
  numerically. This works better in the current landscape of a rss spec that
  doesn't specify encoding, and variously broken feed consumers, according
  to <http://www.rssboard.org/rss-profile#data-types-characterdata>.
2007-05-28 19:43:28 +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
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 e855e30d01 * Add feedshow parameter to inline, which can be useful for eg, removing
old posts from feeds when permalinks change.
2007-04-14 20:58:02 +00:00
joey 9b145798c7 * Patch from Tuomov to link to the directory in feeds when usedirs is in
effect. Note that this changes permalinks, so if you are already using
  usedirs you'll have to deal with that on upgrade to this version.
2007-04-14 20:46:41 +00:00
joey 01b058a285 * Add postformtext parameter to inline. 2007-04-12 04:13:55 +00:00
joey 13c7a51f1f * Optimise displaytime, trimming maybe 6% off the build time. 2007-04-10 01:49:16 +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 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 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 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 2e11f8a81f remove debugging code 2007-03-03 02:27:14 +00:00
joey 10b8557946 * Add "template" option to inline plugin to allow for use of customised
templates.
2007-03-02 04:00:42 +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 1eb59c4760 * Add "reverse" option to inline to invert sort orders. 2007-02-08 19:48:00 +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 46f0f5bdc2 * Add feedshow option to allow reducing the number of items included in
an rss or atom feed.
2007-02-05 21:54:36 +00:00
joey 2dc010d66a * Fix one more missing translation of Discussion. 2007-01-31 07:10:11 +00:00
joey f6e917fcce * Fix handling of discussion links on discussion pages when l10n is used. 2007-01-18 15:06:57 +00:00
joey d253cef179 fix broken format string, manual unfuzzy 2007-01-14 04:28:50 +00:00
joey b31dc8d994 * Fix --locale to control LC_ALL now. 2007-01-10 20:25:00 +00:00
joey 178ab4c51c * Don't put discussion links on discussion pages. 2006-12-29 04:45:09 +00:00
joey ef165d652e use same logic as for regular discussion links 2006-12-29 04:40:38 +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 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 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 83109863f6 * Fix an issue with inlining a page with a rss feed inside another
page with an rss feed.
2006-12-21 13:51:50 +00:00
joey 50c7f7ab04 * Fix sometimes broken links to Discussion pages from blog pages. 2006-12-14 19:41:41 +00:00
joey f65fa0ad68 * Fix daemonisation code to only do daemon setup things after forking the
child process.
2006-12-02 00:12:26 +00:00
joey abd262cf58 * Allow /etc/ikiwiki/wikilist to list just the names of users, if so then
* Fix url absolution code in inline plugin to support class and id fields in
  links and imgs, and to support anchor urls.
2006-11-28 09:10:42 +00:00
joey e7ddbb822a bugs 2006-11-26 20:23:23 +00:00
joey 3a31030550 add quick mode for speeding up generation of big archive pages 2006-11-26 19:43:24 +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 ffb2700043 * Add a test suite for the mercurial backend, contributed by Emanuele Aina.
* Add a test suite for the svn backend.
* Daemonize before sending RPC pings, since that can take a while
  and/or hang.
* Daemonize before sending commit mails, as that can also take a long
  time/hang if the mail server is unhappy.
* Factor out commit mail sending code into new function.
2006-11-21 17:47:53 +00:00
joey 35ee7e44a6 * Make sure to check for errors from every eval. 2006-11-08 21:03:33 +00:00
joey 6e1986cf12 * Patch from Ethan Glasser Camp to add a skip option to the inline plugin. 2006-11-08 20:39:48 +00:00
joey 369cf45ace * Patch from James Westby to support podcasting, photoblogging, vidcasting,
or what have you, by creating enclosures for non-page items that are
  included in feeds.
2006-11-01 06:45:59 +00:00
joey 771791104c * Change the rss feed title from the wikiname to the page title, with
an exception for the wiki's toplevel index page, which will still use the
  wikiname as the feed title.
* Sanitize possibly problimatic characters out of the polygen grammar names,
  just in case. Should not be exploitable anyway, since it only tries to run
  polygen after finding the specified grammar file.
2006-10-22 21:12:50 +00:00
joey 182748a9c1 * Change the rss feed title from the wikiname to the page title.
Overriding the page title with meta title already overrode the rss feed
  tittle.
2006-10-20 21:17:36 +00:00
joey ea217fdf8f todo 2006-10-16 19:06:29 +00:00
joey 7c18261b80 * Wrap entire technortati ping operation in an eval to catch all possible
failure modes, after I observed a simple ->value crashing ikiwiki when
  a ping failed.
2006-10-16 19:03:33 +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 48e004acb1 * inline: Add ability to sort by page name, based on a patch from
Benjamin A'Lee.
2006-09-25 21:13:14 +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 7ba4a844a8 * Include <link rel> tag for RSS feeds, used by some aggregators and
firefox to find the feed.
2006-09-06 21:03:39 +00:00
joey f0393523c8 * Fix another destpage issue in the inline directive. Closes: #385512
again.
2006-09-03 19:54:44 +00:00
joey fdaab0fddd releasing version 1.23 2006-09-03 16:25:47 +00:00
joey 1aac0b5a60 don't add actions if all empty 2006-08-28 19:46:00 +00:00
joey 1aeb64e148 * Patch from James Westby to add an actions option to inline; this
adds Edit and Discussion links at the end of blog entries.
2006-08-28 19:43:07 +00:00
joey 4895955cea * Change htmlize, format, and sanitize hooks to use named parameters. 2006-08-28 18:17:59 +00:00
joey 38ce4c3cef * Patch from James Westby to allow a description to be set for rss feeds. 2006-08-26 17:36:46 +00:00
joey 6fc3b624f2 * Generalised preprocesser loop protection code. 2006-08-25 19:06:37 +00:00
joey d4ca3b3f50 * Change order of linkify and preprocess; first preprocess and then linkify.
This allows passing a wikilink inside a parameter to a preprocessor
  directive without it being expanded to html, and leaking out of the
  parameter, which had required some non-obvious use of triple-quoting
  to avoid. Note that any preprocessor plugins that output something
  that looks like a wikilink will now have it treated as such; AFAIK
  this doesn't change any behavior though except for the template plugin.
* Enable preprocessor directives when previewing an edit.
2006-08-23 20:23:57 +00:00
joey 467d5b5e2a * Fix a bug introduced last version to do with nested inlines. 2006-08-22 17:02:01 +00:00
joey c6ee9cbf45 * Support inlining pages raw, rather than creating a blog.
* Clean up yes/no parameter parsing in inline plugin.
* Implemented better cycle detection in the inline plugin; nested inlines
  will now work.
2006-08-18 03:56:18 +00:00
joey 69d1592a17 * Call filter hooks on inlined page content. 2006-08-18 00:44:46 +00:00
joey 3bf104e528 avoid undefined value warning in some case 2006-08-15 18:06:55 +00:00
joey 3fcc926c5f releasing version 1.17 2006-08-12 16:56:04 +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 485a017a88 * Fix dates in rss feeds if running localised, so they're still rfc 822. 2006-08-05 00:45:03 +00:00
joey 4c3e9f0044 need to make it really utf8 or the url encode won't work 2006-08-04 03:06:23 +00:00
joey a5ea63e531 fix 2006-08-04 02:22:16 +00:00
joey d3713b0164 * Encode link and guid urls in rss feeds to avoid illegal utf8 slipping in. 2006-08-04 01:57:32 +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 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 418096be9e typo 2006-08-01 20:12:15 +00:00
joey 53d81ebcd6 * Patch from Roland Mas to support an rss=no parameter to inline directives.
Closes: #380743
2006-08-01 20:08:42 +00:00
joey e4ccc4f3b0 fix title metadata on blogs, reorg needed to do it, simplified tag some 2006-07-31 00:34:18 +00:00
joey 908e004b4c * Title metadata of inlined pages now shows up in blogs, although not yet
in their rss feeds.
2006-07-30 23:51:48 +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 8f2d8142e4 * Allow preprocessor directives to be expanded in inlined blog pages.
However, to avoid inlining loops etc, don't expand inline directives in
  inlined pages.
2006-07-29 21:38:50 +00:00
joey 267f98e2e1 * Put categories in rss feeds for tagged items. 2006-07-29 07:25:17 +00:00
joey dea23a1031 * Switch pagetemplate hooks to using named parameters.
* Pass a "destpage" parameter to preprocessor and pagetemplate hooks.
  This will be the page that a source page will be part of, which is
  different than the source page for inlined pages.
* Audited all plugins to endure they pass page, destpage to htmllink
  appropriatly. This means inlining of various plugins will not work
  properly, with correct links generated.
2006-07-27 23:41:58 +00:00