aboutsummaryrefslogtreecommitdiff
path: root/doc/plugins/write.mdwn
Commit message (Expand)AuthorAge
...
| * Avoid %links accumulating duplicates. (For TOVA)•••This is sorta an optimisation, and sorta a bug fix. In one test case I have available, it can speed a page build up from 3 minutes to 3 seconds. The root of the problem is that $links{$page} contains arrays of links, rather than hashes of links. And when a link is found, it is just pushed onto the array, without checking for dups. Now, the array is emptied before scanning a page, so there should not be a lot of opportunity for lots of duplicate links to pile up in it. But, in some cases, they can, and if there are hundreds of duplicate links in the array, then scanning it for matching links, as match_link and some other code does, becomes much more expensive than it needs to be. Perhaps the real right fix would be to change the data structure to a hash. But, the list of links is never accessed like that, you always want to iterate through it. I also looked at deduping the list in saveindex, but that does a lot of unnecessary work, and doesn't completly solve the problem. So, finally, I decided to add an add_link function that handles deduping, and make ikiwiki-transition remove the old dup links. Joey Hess2009-05-06
| * pagespec_match_list added and used in most appropriate places•••* pagespec_match_list: New API function, matches pages in a list and throws an error if the pagespec is bad. * inline, brokenlinks, calendar, linkmap, map, orphans, pagecount, pagestate, postsparkline: Display a handy error message if the pagespec is erronious. Joey Hess2009-04-23
| * pagespec error/failure distinction and error display by inline•••* Add IkiWiki::ErrorReason objects, and modify pagespecs to return them in cases where they fail to match due to a configuration or syntax error. * inline: Display a handy error message if the inline cannot display any pages due to such an error. This is perhaps somewhat incomplete, as other users of pagespecs do not display the error, and will eventually need similar modifications to inline. I should probably factor out a pagespec_match_all function and make it throw ErrorReasons. Joey Hess2009-04-23
| * clarifyJoey Hess2009-04-22
* | rename hook: run once per file to be renamed•••... as Joey suggested on todo/need_global_renamepage_hook This hook is applied recursively to returned additional rename hashes, so that it handles the case where two plugins use the hook: plugin A would see when plugin B adds a new file to be renamed. The full set of rename hashes can no longer be changed by hook functions, that are only allowed to return any additional rename hashes it wants to add. Rationale: the correct behavior of the recursion would be hard, if not impossible, to define, if already considered pages were changing on the run. Signed-off-by: intrigeri <intrigeri@boum.org> intrigeri2009-03-08
* | Merge commit 'upstream/master' into prv/po•••Conflicts: IkiWiki/Plugin/editpage.pm debian/control debian/copyright doc/todo/need_global_renamepage_hook.mdwn Signed-off-by: intrigeri <intrigeri@boum.org> intrigeri2009-03-08
|\|
| * Add noextension parameter to htmlize hooks to support, eg, Makefile.Joey Hess2009-02-19
| * revert addition of several blank linesJoey Hess2009-02-17
| * correct WikiLinks to the WikiLink pageAlexandreDupas2009-02-16
| * document writefile symlink checksJoey Hess2009-02-09
* | rename hook: instead of modifying the passed-by-name array, return a copy•••This is intended to solve Joey's concerns expressed on http://ikiwiki.info/todo/need_global_renamepage_hook/, i.e. the need to make it possible to use this hook from external plugins. A plugin using this hook still can add/modify/remove elements of the @torename array. Signed-off-by: intrigeri <intrigeri@boum.org> intrigeri2009-01-27
* | revert renamepage's hook original name•••Signed-off-by: intrigeri <intrigeri@boum.org> intrigeri2009-01-27
* | only pass named parameters to the canremove hook•••Signed-off-by: intrigeri <intrigeri@boum.org> intrigeri2009-01-26
* | only pass named parameters to the canrename hook•••Signed-off-by: intrigeri <intrigeri@boum.org> intrigeri2009-01-26
* | don't add new exported warning function•••Nothing in the po plugin actually uses this function. The benefit of adding the function in general is debatable, but I'd prefer to keep the changes involved in merging po at a minimum. Joey Hess2009-01-26
* | remove cansave plugin, now replaced by Joey's checkcontent one•••Signed-off-by: intrigeri <intrigeri@boum.org> intrigeri2009-01-19
* | make checkcontent compatible with hooks that need the full content•••Always pass the full (modified) content in `content` named parameter. When the user edits an existing wiki page, also pass a `diff` named parameter, which includes only the lines that they added to the page, or modified. Signed-off-by: intrigeri <intrigeri@boum.org> intrigeri2009-01-19
* | Merge commit 'upstream/master' into prv/po•••Conflicts: IkiWiki/Plugin/editpage.pm IkiWiki/Plugin/skeleton.pm.example doc/plugins/write.mdwn t/syntax.t intrigeri2009-01-17
|\|
| * checkcontent: New hook, can be used to implement arbitrary content filters, i...Joey Hess2009-01-16
* | add a warning (exported) function to the core•••Signed-off-by: intrigeri <intrigeri@boum.org> intrigeri2009-01-16
* | editpage: added a cansave hook•••Signed-off-by: intrigeri <intrigeri@boum.org> intrigeri2009-01-01
* | Pass src, srcfile, dest and destfile to the canrename hook.•••This is not needed by the use I'm doing of it, but seems more consistent to me. Future users of this hook may need this data to make their mind. Signed-off-by: intrigeri <intrigeri@boum.org> intrigeri2009-01-01
* | rename: pass the CGI and session to the rename hook•••The po plugin remame + canrename hook combination will need this. Signed-off-by: intrigeri <intrigeri@boum.org> intrigeri2009-01-01
* | rename: implemented new canrename hook•••Signed-off-by: intrigeri <intrigeri@boum.org> intrigeri2009-01-01
* | remove: implemented a new canremove hook; use it in the po plugin•••Signed-off-by: intrigeri <intrigeri@boum.org> intrigeri2009-01-01
* | Merge commit 'upstream/master' into prv/pointrigeri2009-01-01
|\|
| * Merge branch 'master' into nextJoey Hess2008-12-26
| |\
| * | make ikiwiki-transition prefix_directives take a setup file•••This is easier to remeber, and less error-prone than passing it all the pages in the wiki. Joey Hess2008-12-24
| * | finalise version 3.00 of the plugin apiJoey Hess2008-12-23
* | | the rename hook can now change the list of pages to rename•••Signed-off-by: intrigeri <intrigeri@boum.org> intrigeri2008-12-30
* | | renamed the renamepage hook to renamelink, added rename hook•••Signed-off-by: intrigeri <intrigeri@boum.org> intrigeri2008-12-30
| |/ |/|
* | inline: Run format hook first•••inline has a format hook that is an optimisation hack. Until this hook runs, the inlined content is not present on the page. This can prevent other format hooks, that process that content, from acting on inlined content. In bug ##509710, we discovered this happened commonly for the embed plugin, but it could in theory happen for many other plugins (color, cutpaste, etc) that use format to fill in special html after sanitization. The ordering was essentially random (hash key order). That's kinda a good thing, because hooks should be independent of other hooks and able to run in any order. But for things like inline, that just doesn't work. To fix the immediate problem, let's make hooks able to be registered as running "first". There was already the ability to make them run "last". Now, this simple first/middle/last ordering is obviously not going to work if a lot of things need to run first, or last, since then we'll be back to being unable to specify ordering inside those sets. But before worrying about that too much, and considering dependency ordering, etc, observe how few plugins use last ordering: Exactly one needs it. And, so far, exactly one needs first ordering. So for now, KISS. Another implementation note: I could have sorted the plugins with first/last/middle as the primary key, and plugin name secondary, to get a guaranteed stable order. Instead, I chose to preserve hash order. Two opposing things pulled me toward that decision: 1. Since has order is randomish, it will ensure that no accidental ordering assumptions are made. 2. Assume for a minute that ordering matters a lot more than expected. Drastically changing the order a particular configuration uses could result in a lot of subtle bugs cropping up. (I hope this assumption is false, partly due to #1, but can't rule it out.) Joey Hess2008-12-26
|/
* inline: Support feedfile option to change the filename of the feed generated.Joey Hess2008-12-11
* include temp file for attachment change tooJoey Hess2008-10-24
* Typo fix.tschwinge2008-10-24
* check_canattach hooked upJoey Hess2008-10-23
* more work on untrusted committers•••Wired up check_canedit and check_canremove, still need to deal with check_canattach, and test. Joey Hess2008-10-23
* initial support for git repos with untrusted committers•••Still need to wire up the calls to check_* , but it's cold out here and my hands are going numb, so enough for now. Joey Hess2008-10-22
* displaytime hook is goneJoey Hess2008-10-21
* function injection overhaul•••Add an inject function, that can be used by plugins that want to replace one of ikiwiki's functions with their own version. (This is a scary thing that grubs through the symbol table, and replaces all exported occurances of a function with the injected version.) external: RPC functions can be injected to replace exported functions. Removed the stupid displaytime hook, and use injection instead. Joey Hess2008-10-21
* add displaytime hook•••Need to use a hook because an exported function cannot be reliably overridden. The replacement verstion was actually only affecting plugins loaded after it. formattime doesn't need a hook, since there's no reason to export it. Joey Hess2008-10-19
* Add an underlay for javascript, and add ikiwiki.js containing some utility code.•••* Add an underlay for javascript, and add ikiwiki.js containing some utility code. * toggle: Stop embedding the full toggle code on each page using it, and move it to toggle.js in the javascript underlay. Joey Hess2008-10-17
* add newpagefile functionJoey Hess2008-09-29
* Add %wikistate, which is like %pagestate except not specific to a given page,...Joey Hess2008-09-27
* Export pagetitle, titlepage, linkpage.Joey Hess2008-09-27
* clarify when to use utlto and when to use htmlpage•••suggestion from smcv Joey Hess2008-09-27
* clarifyJoey Hess2008-09-26
* Add keepextension parameter to htmlize hook. (Willu)Joey Hess2008-09-23
* fix IkiWiki::Setup::load docsJoey Hess2008-09-12
* fix %pagestate{Joey Hess2008-08-26