Commit Graph

267 Commits (abd644256e49368df9dbac614b3d835ff06b033f)

Author SHA1 Message Date
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 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 bd94a95ccd fix missing text 2007-04-08 18:55:26 +00:00
joey fd8463c878 web commit by JoshTriplett: Use inline code blocks for formbuilder_setup, to avoid using _ as italics. 2007-04-07 01:34:14 +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 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 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 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 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 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 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 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 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 74cb86fbb7 typo 2006-11-20 13:01:27 +00:00
joey 54cf5a62ca * Make auth methods pluggable.
* Move httpauth support to a plugin.
* Add an openid plugin to support logging in using OpenID.
2006-11-20 01:52: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 ed463de21f revert spammer 2006-10-27 23:48:38 +00:00
joey dcadf11388 web commit by shoesorder 2006-10-27 23:22:36 +00:00
joey ad2c77dd30 web commit by NicolasDuboc 2006-10-24 14:46:56 +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 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 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 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 516eaeafbd web commit by joey 2006-09-07 15:42:01 +00:00
joey cd5f2eadd9 web commit by joey 2006-09-07 15:39:05 +00:00
joey e7ff9acf86 web commit by joey 2006-09-07 15:38:02 +00:00
joey 4895955cea * Change htmlize, format, and sanitize hooks to use named parameters. 2006-08-28 18:17:59 +00:00
joey 3c378ff6e7 update 2006-08-23 20:28:08 +00:00
joey b7e28ae022 reorganise, include preprocess in the right order 2006-08-23 01:54:40 +00:00
joey d39717a1cb * If the meta plugin overides the page title, set a title_overridden
variable in the template to true. This allows doing things with the
  templates conditional on the title being overriden.
2006-08-12 17:51:32 +00:00
joey 0708bb8aec * Don't run tidy with -xml as that fails if the input is not well-formed.
Run it with -asxhtml instead, so it will output well-formed xhtml no
  matter what the input.
* Disable tidy warnings too.
* Add a new format hook, and make tidy use it, since tidy can really only
  operate on and output complete html documents, not the body chunks
  that sanitise gets.
2006-08-04 07:41:02 +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 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 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 267f98e2e1 * Put categories in rss feeds for tagged items. 2006-07-29 07:25:17 +00:00
joey 201e681d34 improve 2006-07-28 05:36:37 +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 51d20d72f6 small improvements 2006-07-28 04:43:45 +00:00
joey 22df49a2bf more destpage improvements 2006-07-27 23:47:13 +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
joey 20eacc2c1f - Adds a tag plugin that allows more easily tagging pages.
The meta plugin can also still be used for that, but the tag plugin
    also lists a page's tags at the bottom of the page.
  - Allows preprocessor directives to have parameters with no specified
    value.
  - Fixes preprocessor directive parameter parsing so that
    foo=bar baz now means "foo=bar" and a "baz" with no value.
* Run pagetemplate hooks when inlining pages so that inlines pages also
  list their tags.
* Make all plugins with pagetemplate hooks check that variables exist
  on the template before setting them.
2006-07-27 23:08:03 +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 5454186939 meta headers are not sanitised; prevent html leaking into them 2006-06-02 06:11:22 +00:00
joey d534483b9b * Reorganised the doc wiki's todo/* pages, using a link/tag to flag
* Allow pagetemplate plugins to override *anything* in the template.
* Add a meta plugin, which allows specifying various metadata about pages,
  like license and author. It also allows for inserting html link and meta
  tags into html, overriding the title, and adding hidden WikiLinks, which
  can be useful when using link-based globbing for page categorisation.
* Remove preprocessor directives from inlined pages.
* Allow simple preprocessor directive values to be specified w/o quotes.
2006-06-02 04:49:12 +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 6652de5e1a * Removed --sanitize and --no-sanitize, replaced with --plugin htmlscrubber
and --disable-plugin htmlscrubber.
2006-05-05 05:41:11 +00:00
joey 157df8591f rename the "render" hook to "change", which is clearer 2006-05-05 05:10:00 +00:00
joey 253c4a9acc link updates 2006-05-04 14:59:30 +00:00
joey be56970d05 * Added smiley plugin, nicely controlled and documented by the smileys page.
* Copied in some smileys from Moin Moin.
2006-05-04 04:29:37 +00:00
www-data b0952742b2 web commit by joey 2006-05-03 21:04:17 +00:00
www-data e64ef95dfc web commit by joey 2006-05-03 21:03:35 +00:00
www-data 92ffe3446f web commit by joey 2006-05-03 20:46:14 +00:00
www-data 5d887948f9 web commit by joey 2006-05-03 20:45:10 +00:00
www-data 3900abf314 web commit by joey 2006-05-03 20:43:55 +00:00
www-data 1478bab0cd web commit by joey 2006-05-03 20:31:16 +00:00
www-data 40d739caba web commit by joey: change to plugin interface 2006-05-03 20:07:02 +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
www-data ec5ddd9a4f web commit by joey 2006-05-02 06:27:16 +00:00
www-data bfead4a004 web commit by joey 2006-05-02 06:26:55 +00:00
www-data a0d372751a web commit by joey 2006-05-02 06:26:08 +00:00
www-data 63f2eddaa4 web commit by joey 2006-05-02 06:24:38 +00:00
joey 54d5308cd8 * Added plugin system, currently only supporting for PreProcessorDirectives.
* Added a pagecount plugin, enabled by default.
* Support PreProcessorDirectives with no parameters, ie "[[pagecount ]]".
* Fixed/optimised backlinks code, to avoid rebuilding pages to update
  backlinks when the backlinks hadn't really changed.
* Moved inline page support, rss generation etc into the inline plugin,
  enabled by default.
* Added brokenlinks plugin, not enabled by default, but rather handy.
* Fix several broken links in the doc wiki.
2006-05-02 02:34:33 +00:00