aboutsummaryrefslogtreecommitdiff
path: root/IkiWiki/Render.pm
Commit message (Collapse)AuthorAge
* Avoid duplicating debug message for building a page due to a dependencySimon McVittie2009-08-28
| | | | As per Joey's review
* Force %depends_exact to lower case, fixing incorrect case-sensitivitySimon McVittie2009-08-28
|
* Fix typo in dependency debug messageSimon McVittie2009-08-28
|
* Add depends_exact: simplified dependency tracking for dependencies on a ↵Simon McVittie2009-08-28
| | | | | | | | | | | | | | | | | | | | | | | single page Let E be the number of dependencies per page of the form "A depends on B and nothing else", let D be the number of other dependencies per page, let P be the total number of pages, and let C be the number of changed pages in a refresh. This patch should speed up a refresh from O(E*C*P + D*C*P) to O(C + E*P + D*C*P), assuming that hash lookups are O(1). In practice, plugins like inline and map produce a lot of these very simple dependencies, and my album plugin's combination of inline with a large number of pages causes it to suffer particularly badly. In testing on a wiki with about 7000 objects (3500 full pages, 3500 images), a full rebuild continued to take about 5:30, and a refresh after touching about 350 pages and 350 images reduced from 5:30 to 1:30. As with my previous optimizations, this change will result in downgrades not working correctly until the wiki is rebuilt.
* don't use pagespec_match_listJoey Hess2009-08-25
| | | | | | | | This should be more efficient than pagespec_match_list since it short-circuits after the first match is found. The other problem with using pagespec_match_list here is it may throw an error if a bad or failing pagespec somehow got into the dependencies.
* use pagespec_match_listSimon McVittie2009-08-25
|
* Use a hash to de-duplicate dependenciesSimon McVittie2009-08-25
|
* Optimize the dependencies listSimon McVittie2009-08-24
| | | | | | | | | | | | | | | | On a large wiki you can spend a lot of time reading through large lists of dependencies to see whether files need to be rebuilt (album, with its one-page-per-photo arrangement, suffers particularly badly from this). The dependency list is currently a single pagespec, but it's not used like a normal pagespec - in practice, it's a list of pagespecs joined with the "or" operator. Accordingly, change it to be stored as a list of pagespecs. On a wiki with many tagged photo albums, this reduces the time to refresh after `touch tags/*.mdwn` from about 31 to 25 seconds. Getting the benefit of this change on an existing wiki requires a rebuild.
* optimise brokenlinks by gathering the data when calculating backlinksJoey Hess2009-08-14
| | | | | | | | | | During backlink calulation, all links are examined and broken links can be detected for free, so store a list of broken links and have brokenlinks use it. Exposing the %brokenlinks structure is a bit ugly, but the speedup seems worth it: Around 1 second for wikis the size of the doc wiki that use brokenlinks.
* Add discussionpage configuration settingJoey Hess2009-08-13
| | | | | | By adding this setting, we get both more configurability, and a minor optimisation too, since gettext does not need to be called continually to get the Discussion value.
* fix some more foreaches that clal functions to not use $_Joey Hess2009-08-12
|
* Merge commit 'remotes/smcv/ready/among'Joey Hess2009-07-31
|\
| * IkiWiki::Render: split out backlink_pages() function from backlinks()Simon McVittie2009-07-17
| | | | | | | | | | | | This separates style from content - backlinks() performs lossy transformations on the page names to get it in the form that the page template wants.
* | Change rendering→building in translatable strings, to ease translations.Jonas Smedegaard2009-07-23
| |
* | split two helper functions of of render()Joey Hess2009-07-20
|/
* Disable the Preferences link if no plugin with an auth hook is enabled.Joey Hess2009-06-09
|
* fix further places where translated discussion case was assumedJoey Hess2009-06-04
| | | | | Another benefit is that consistently using gettext("Discussion") eliminates the need to translate one string.
* Avoid relying on translators preserving the case when translating ↵Joey Hess2009-06-04
| | | | "discussion", which caused Discussion pages to get unwanted Discussion links.
* Coding style change: Remove explcit vim folding markers.Joey Hess2008-12-17
|
* set ctime in --render mode if not knownJoey Hess2008-10-30
| | | | Avoids some uninitialised value warnings.
* fix display of error msgJoey Hess2008-10-29
|
* fix relativedate timezone inclusionJoey Hess2008-10-19
| | | | | | The machine parseable date needs to include a timezone. Also, simplified the interface for date display.
* relativedate: New javascript-alicious plugin that makes all dates display ↵Joey Hess2008-10-17
| | | | relative, in a very nice way, if I say so myself.
* use gettextJoey Hess2008-09-29
|
* Print a debug message if a page has multiple source files.Joey Hess2008-09-23
|
* editpage: New core plugin factoring out page editing to allow disabling it ↵Joey Hess2008-09-05
| | | | if desired.
* historyurl can be undefJoey Hess2008-07-26
|
* Rebuild pages that change their type.Gabriel McManus2008-07-23
| | | | | | | | | Previously, if a page changed its type but not its mtime (e.g. mv page.txt page.mdwn), then it would not be rebuilt. Now, check if the source of a page has changed, in which case force a rebuild of that page. (cherry picked from commit b6a3b8a683fed7a7f6d77a5b3f2dfbd14c849843)
* Add allow_symlinks_before_srcdir config settingJoey Hess2008-07-21
| | | | | | | | | can be used to avoid a security check that is a good safe default, but problimatic overkill in some situations. I decided to underdocument this, because the option looks ugly, and I don't want people randomly turning it on because it looks like a good idea. So if you need it, you'll get an error message mentioning how to fix it.
* Add a postscan hook.Joey Hess2008-07-17
| | | | | * Add a postscan hook. * search: Use postscan hook, avoid updating index when previewing.
* pedigree rename to parentlinks: rename/adapt everythingintrigeri2008-07-15
| | | | | | | | | | * Renamed to parentlinks every single variable or function called pedigree * Removed the parentlinks function from Render.pm * Enabled the new parentlinks plugin by default * Adapted testsuite and documentation to reflate the above facts Signed-off-by: intrigeri <intrigeri@boum.org>
* avoid hardlinking files owned by othersJoey Hess2008-07-12
| | | | | | | If hardlinks are enabled, it would hardlink files from the underlay. That was sorta annoying if you tried to edit by hand for some reason, so let's not. Files that are hardlinked should be rare enough that a few extra stats won't hurt.
* editpage escaping fixesJoey Hess2008-07-06
| | | | | | | | | | | * The editpage form now uses the raw page name, not the page title, in its 'page' cgi parameter. Using the title was ambiguous and made it impossible to tell between some pages, like "foo/bar" and "foo__47__bar", sometimes causing the wrong page to be edited. * This change means that some edit links need to be updated. Force a rebuild on upgrade to this version. * Above change also allowed really fixing escaped slashes from the blogpost form.
* fix expensive move code pathJoey Hess2008-07-01
|
* break out fast_file_copyJoey Hess2008-07-01
|
* Pass a destpage parameter to the sanitize hook.Joey Hess2008-06-04
| | | | | | | | Because the search plugin needed it, also because it's one of the few plugins that didn't already have it. I also considered adding it to htmlize, but I really cannot imagine caring what the destpage is when htmlizing. (I'll probably be poven wrong later.)
* Filter hooks are no longer called during the scan phase. This will prevent ↵Joey Hess2008-06-04
| | | | wikilinks added by filters from being scanned properly. But no known filter hook does that, and calling filters unncessarily during scan slowed down complex filters such as the one used to update the xapian index.
* load plugins before printing messagesJoey Hess2008-05-08
| | | | | This allows plugins to getopt and change what is done before an incorrect line is printed.
* amazon s3 support implemented and kinda workingJoey Hess2008-05-07
| | | | pruning not yet implemented, however
* Optimised file statting code when scanning for modified pages; cut the ↵Joey Hess2008-05-07
| | | | number of system calls in half. (Still room for improvement.)
* Added a hardlink option in the setup file, useful if the source and dest are ↵Joey Hess2008-03-29
| | | | on the same filesystem and the wiki includes large media files, which would normally be copied, wasting time and space.
* avoid calling getctime on internal pagesJoey Hess2008-02-24
| | | | internal pages won't be in revision control so this avoids some ugly noise
* * Add the linkify and scan hooks. These hooks can be used to implementJoey Hess2008-02-11
| | | | | | custom, first-class types of wikilinks. * Move standard wikilink implementation to a new wikilink plugin, which will of course be enabled by default.
* * Page templates can now use CTIME to show when the page was created.Joey Hess2008-02-09
|
* * Don't die if running with --getctime and rcs_getctime throws an error.Joey Hess2008-02-07
| | | | | There are several cases (recentchanges files, aggregated files) where some source files are not in revision control.
* * Revert preservation of input file modification times in output files,Joey Hess2008-02-02
| | | | | | | | since this leads to too many problems with web caching, especially with inlined pages. Properly solving this would involve tracking every page that contributes to a page's content and using the youngest of them all, as well as special cases for things like the version plugin, and it's just too complex to do.
* move recentchanges link enabling into a pagetemplate hookJoey Hess2008-01-30
|
* avoid temp varJoey Hess2008-01-29
|
* don't scan internal pagesJoey Hess2008-01-29
| | | | | scan() does too much. All that is needed is to preprocess the internal page in scan-only mode.
* * meta: Add pagespec functions to match against title, author, authorurl,Joey Hess2008-01-29
| | | | | | | 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.