Commit Graph

616 Commits (1a9c54454ee09e25ac26ccccea6bc59b63d522d2)

Author SHA1 Message Date
Joey Hess b1cd1c067f add cgi_overload_message 2012-10-11 11:22:03 -04:00
Joey Hess 6bd8c6732e add cgi_overload_delay tunable
Try to avoid a situation in which so many ikiwiki cgi wrapper programs are
running, all waiting on some long-running thing like a site rebuild, that
it prevents the web server from doing anything else. The current approach
only avoids this problem for GET requests; if multiple cgi's run GETs on a
site at the same time, one will display a "please wait" page for a
configurable number of seconds, which then redirects to retry. To enable
this protection, set cgi_overload_delay to the number of seconds to wait.
This is not enabled by default.
2012-10-09 17:12:04 -04:00
Joey Hess f9e96b0c32 passwordauth: Fix url in password recovery email to be absolute.
This got broken when cgiurl began often returning a relative url.
Added a cgiurl_abs for the things that need a guaranteed absolute cgiurl.
2012-04-02 12:24:14 -04:00
Joey Hess 3200515b3d fix typo in LC_TIME locale lookup 2012-02-01 22:49:35 -04:00
Joey Hess a78126c55e calendar, prettydate: Fix strftime encoding bug
strftime is a C function, it does not return decoded utf8.
Several places in ikiwiki manually decoded it, but at least two
forgot to.

Also, strftime might not return even encoded utf8, if LC_TIME is set
to a non-utf8 value. Went ahead and supported decoding whatever encoding
it uses.

The remaining direct calls to strftime() are all ones that first set
LC_TIME=C, in order to get times that are not for human display.
2012-01-30 15:09:37 -04:00
Giuseppe Bilotta 17fb0cf9f9 backlink(.) should behave like backlink(<current page>)
Since commit c4d4cad3be, the single dot in
a pagespec can be used to mean the current page. While this worked
correctly in link() it didn't work in backlink(). Fix this by explicitly
checking the testpage in backlink against . and replacing it with the
current location if necessary.
2012-01-13 13:42:38 -04:00
Simon McVittie 5333c113d6 Add path and path_natural sort orders
(cherry picked from commit 272e0b2f17)
2011-12-06 14:26:27 -04:00
Simon McVittie 3df7d14346 Support private, group, public as values for umask
These are equivalent to octal 077, 027 and 022, but easier to get from
YAML.

Signed-off-by: Simon McVittie <smcv@debian.org>
2011-11-27 14:14:47 +00:00
Joey Hess d2cf716876 Avoid using named capture groups in heredoc code for oldperl compatability.
Also reordered heredoc part of regexp for consistency.
2011-07-30 20:12:33 +02:00
Joey Hess 25b01f9404 Preserve mixed case in page creation links, and when creating a page whose title is mixed case, allow selecting between the mixed case and all lower-case names. 2011-06-29 16:38:32 -04:00
Joey Hess c90bc78d44 Support svg as a inlinable image type
svg images can be included on a page by simply linking to them, or by using
the img directive. Note that sanitizing svg files is still not addressed.
2011-06-29 14:17:47 -04:00
Joey Hess 46064d6d63 html5 is not experimental anymore. But not the default either, quite yet. 2011-06-23 09:41:21 -04:00
Timo Paulssen 1c58634068 added support for here-docs and ''' in parameters. 2011-05-13 11:24:15 -04:00
Joey Hess 9df8971e57 Yaml formatted setup files are now produced by default
This has been a while coming. It turns out that non-excutable setup files
have a number of benefits. Also, I find YAML setup files easier to edit
myself, and I suspect many users will prefer not needing to deal with
perl syntax.
2011-03-24 21:30:18 -04:00
Joey Hess 78c750f2d2 Add timezone setting in setup file. This alows time zone to be configured via the web. 2011-03-24 13:36:16 -04:00
Joey Hess 2a2ae88c84 avoid uninitlized value when urlto is called with 1 parameter and no url is configured
This brings back the old behavior before urlto changes for this case.
It will generate a path like "/foo", which is not right, but is
the same as is generated by urlto($page, "", 1) -- which is what
the code that now uses 1-parameter urlto used to use.
2011-02-27 18:32:44 -04:00
Simon McVittie dff44e4a6d Add add_literal_underlay and use it for the transient underlay
This means we don't need to import Cwd and use abs_path.
2011-01-07 20:04:45 +00:00
Joey Hess d991ccf134 use cgitemplate, remove misctemplate 2011-01-05 17:15:38 -04:00
Joey Hess 885bff7239 make urlabs a noop if base url is not provided
This allows urlabs($foo, $config{url}) to be used safely, even if
no url is configured.
2011-01-05 16:23:05 -04:00
Joey Hess c91b39fdb5 factored out an urlabs from aggregate and cgi 2011-01-05 16:18:25 -04:00
Joey Hess c11b1226ca oops 2011-01-05 15:43:03 -04:00
Joey Hess 6b5b0a3282 Temporarily revert one part of the multiple url support in the last release. Non-edit pages are now back to having `<base>` set to the site's main url. 2011-01-05 15:01:31 -04:00
Joey Hess 4fb26f4e60 Add a second parameter to the rcs_diff hook, and avoid bloating memory reading in enormous commits. 2010-12-29 19:58:49 -04:00
Simon McVittie d4704d8bbb urlto: simplify the to='' special case to allow it to be made absolute 2010-12-25 22:54:54 +00:00
Simon McVittie eb58b51bb0 checkconfig: don't warn if $config{url} is undef
The warning was "Use of uninitialized value $IkiWiki::config{"url"} in
length" when running a modified t/tag.t.
2010-12-25 21:35:06 +00:00
intrigeri b2a2246bac Enable HTML::Template's parent_global_vars option.
Else setting parameters that do not appear in the template (such as
title_overridden) fails horribly.
2010-12-22 19:21:41 +01:00
Joey Hess 53d466a07f second parameter of urlto is optional 2010-11-29 14:59:48 -04:00
Joey Hess 0ae1e4cc0e Merge remote branch 'smcv/ready/localurl' 2010-11-29 14:43:57 -04:00
Joey Hess 93d77673e4 Merge remote branch 'blipvert/fixes' 2010-11-28 13:35:52 -04:00
Craig Lennox e4c6f5bcbe check that user is defined before regexp compare 2010-11-28 10:51:53 -05:00
Simon McVittie d01334b8e9 If cgiurl is set, but url isn't, use an absolute $local_cgiurl 2010-11-23 22:21:31 +00:00
Simon McVittie 4c224ae143 urlto(): if $from is undef, return a local path, not an absolute URL 2010-11-22 23:47:05 +00:00
Simon McVittie f032bce791 baseurl(): return local path, not absolute URL, if the argument is undef 2010-11-22 23:47:04 +00:00
Simon McVittie 6be4e6d1a5 cgiurl(): return a locally-valid path by default
To get an absolute version you can use cgiurl(cgiurl => $config{cgiurl}).
The only place in IkiWiki that seems to actually need an absolute URL
is the openid plugin, and that already uses the named parameter.
2010-11-22 23:47:04 +00:00
Simon McVittie 200c599dca cgiurl: don't append "?" if there are no parameters
This means we can use cgiurl() instead of $config{cgiurl} if an absolute
URL isn't desired.
2010-11-22 23:16:59 +00:00
Simon McVittie 8f64c69e08 Compute local paths to the top of the wiki
"local" here is short for "locally valid" - the idea is that we can use
URLs that are relative in the sense of only having the path part, but
absolute in the sense that they start from '/', such as
'/~smcv/ikiwiki.cgi'. There's no particularly good name that I can find
for these between-relative-and-absolute URLs.

They're useful because in the common case where the pages and the CGI
script have the same scheme and authority component, each page is
identified by the same locally-valid URL when linking from any page or
from the CGI, without hard-coding a choice between HTTP and HTTPS, or
between multiple virtual hostnames with the same path layout. As such,
we can use them in many situations that previously used an absolute URL.

If there's no suitable semi-absolute value for local_url (for instance,
if your pages and your CGI reside on different servers), we can just fall
back to using the absolute URL. I append '/' because $config{url} doesn't
end with '/', but the common case for local_url (on all branchable.com
sites, for instance) is that it's just '/'.
2010-11-22 23:13:52 +00:00
Joey Hess b3bca318ef avoid an unnecessary hash lookup 2010-11-20 12:25:52 -04:00
Simon McVittie 55515050e1 make use of precompiled regex objects 2010-11-20 00:02:49 +00:00
Simon McVittie 788105e2a7 glob2re: return a precompiled, anchored case-insensitive regex
In practice every use of glob2re uses it like that.
2010-11-19 23:59:04 +00:00
Simon McVittie 321bf7ec19 match_glob: streamline glob cache slightly 2010-11-19 23:46:46 +00:00
Kathryn Andersen ff0e244701 Improve the speed of match_glob 2010-11-19 23:46:46 +00:00
Joey Hess 0cc2a36f59 bugfix 2010-10-23 16:47:19 -04:00
Joey Hess 7e8064e9fa add a hint that creation_month takes a number, not a month name 2010-10-20 19:07:46 -04:00
Joey Hess 4a75dee651 avoid perl warning when passed bad non-numeric year/month/day 2010-10-20 18:52:46 -04:00
Joey Hess faf94b5787 refactor check_canchange into IkiWiki library 2010-10-08 18:09:28 -04:00
Joey Hess 84111d96c4 make revert hooks optional
I removed the IkiWiki::rcs_ stubs for the revert hooks. Instead
recentchanges tests to see if the hooks are available and calls
them directly.
2010-10-08 17:54:12 -04:00
Joey Hess 238e8b95a5 convert rcs_revert to only stage the reversion 2010-10-06 15:08:12 -04:00
Joey Hess 237ea79d71 remove rcs_showpatch 2010-10-06 14:39:10 -04:00
Joey Hess a29f169b1e indentation 2010-10-04 16:34:33 -04:00
Peter Gammie 8024a2636f Complete rcs_preprevert and lightly test. 2010-10-01 14:06:00 +10:00
Peter Gammie acecbad0ff First cut at the revert plugin. 2010-09-29 15:14:19 +10:00
Joey Hess e22b18aabc template_depends: throw nice error message when template cannot be found
plovs reported a crash when templates were not installed properly,
with a non-useful error about the template object not being defined.
I've audited all uses of template_depends(), and template(), and it makes
sense for them to throw an error if the template cannot be found. All code
with a user-supplied template catches errors already, to handle template
parse failures.

It did not make sense for template_file to throw errors, as some code uses
it to probe if a template file is available.
2010-09-27 15:58:01 -04:00
Joey Hess 2df0999e40 revert check_canedit nosubs thing
Abstraction violation. I now think the problem should be treated as a bug
in httpauth.
2010-08-30 18:31:56 -04:00
Joey Hess 8030ecac02 Receive: avoid hiding check_canedit error messages
Avoid the generic "you are not allowed to change" message,
and instead allow check_canedit to propigate out useful error messages.

Went back to calling check_canedit in fatal mode, but added a parameter to
avoid calling the troublesome subs that might cause a login attempt.
2010-08-30 17:58:00 -04:00
Joey Hess 991d01f5b5 optimise single dot detection
Since it already looks for things starting with a dot, I was able to avoid
matching against the string twice.

This also fixes a minor bug; $from may not be defined. Avoid uninitialized
value warnings in this case.
2010-08-30 13:36:00 -04:00
Giuseppe Bilotta c4d4cad3be Single dot in pagespec translates to 'current page' 2010-08-30 13:25:53 -04:00
Joey Hess 5d88146861 Fixes a bug that prevented matching deleted pages when using the page() PageSpec. 2010-08-04 08:25:10 -04:00
Joey Hess c401b6958a Add new disable hook, allowing plugins to perform cleanup after they have been disabled. 2010-07-26 16:33:42 -04:00
Joey Hess 1b0bef6d49 template: Fix dependency tracking. Broken in version 3.20100427.
template_depends was adding a dependency on the source filename,
instead of on the page name when a template is a page. Such a
dependency doesn't work.
2010-07-23 14:14:25 -04:00
Joey Hess b45688e34e Merge remote branch 'intrigeri/po' 2010-07-18 19:35:16 -04:00
Joey Hess eeb8e11d65 remove dead case 2010-07-18 17:47:36 -04:00
Joey Hess e674bb1445 fix other 2 cases of conflicting destdir files
Cleanly fixed case where destdir file failed to be written because there
was a directory with the same name. This can be detected with no extra
system calls, and dealt with by finding all pages that wrote files
inside the directory, and removing them and the directory.

The other, inverse case would be expensive to detect in will_render,
since it would need to check each parent directory of the file to see
if the directory is really a conflicting file. But prep_writefile
already does a similar scan for symlinks in the path, so I added code
there to remove the conflicting file. This fix assumes that the file
is written using writefile, and not some other means (but using other means
would be a security hole too, so hopefully nothing does).
2010-07-18 17:38:35 -04:00
Joey Hess 2bf3a6edbb check oldrenderedfiles too
Handles the case where foo.mdwn is moved too foo/index.html
2010-07-18 16:47:52 -04:00
Joey Hess 773db5a35e avoid error if two source files render the same destination file
There are two sub-caces. If both source files still exist, the winner that
renders the destination file is undefined. If one source file is deleted
and the other added, in a refresh, the new file will take over the
destination file.
2010-07-18 16:28:39 -04:00
intrigeri ff8f6cd6b2 Make the rationale clearer. 2010-07-11 11:35:37 +02:00
intrigeri 4a1cb092ba Revert po vs. template kludges.
This reverts commits dcd57dd5c9,
d4136aea8a and
d877b9644b.
2010-07-11 11:03:41 +02:00
intrigeri c99d26030e Merge remote branch 'upstream/master' into prv/po
Conflicts:
	IkiWiki/Plugin/po.pm
	doc/plugins/po.mdwn
2010-07-11 10:46:18 +02:00
Joey Hess 0eabe6f794 git: Added git_wrapper_background_command option. Can be used to eg, make the git wrapper push to github in the background after ikiwiki runs. 2010-07-01 16:57:20 -04:00
intrigeri dcd57dd5c9 Add a fullpage arg to filter.
Set it to true every time IkiWiki::filter is called on a full page's content.

This is a much nicer solution, for the po plugin, than previous whitelisting
using caller().
2010-06-29 15:17:56 +02:00
intrigeri 9f401d6617 Merge remote branch 'upstream/master' into prv/po
Conflicts:
	IkiWiki/Plugin/po.pm
2010-06-25 14:38:37 +02:00
Joey Hess ecdfd1b864 rcs_commit and rcs_commit_staged api changes
Using named parameters for these is overdue. Passing the session in a
parameter instead of passing username and IP separately will later allow
storing other session info, like username or part of the email.

Note that these functions are not part of the exported API,
and the prototype change will catch (most) skew, so I am not changing
API versions. Any third-party plugins that call them will need updated
though.
2010-06-23 19:04:36 -04:00
Joey Hess 17592a951b websetup: Allow enabling plugins listed in disable_plugins.
The bug here was that disabling a plugin included thru goodstuff, like
htmlscrubber, caused it to be added to disable_plugins, and those plugins
were never loaded, so could not be re-enabled. Fix by allowing them to be
force loaded when appropriate. (Also that allows disabled plugins to still
record their setup options when dumping a setup file.)
2010-06-13 10:21:19 -04:00
Joey Hess e96cf38ecc When editing a page, show that page's sidebar. (Thanks, privat) 2010-06-09 16:00:12 -04:00
Joey Hess cdf4292846 Fix support for globbing in tagged() pagespecs.
The linktype check was being done on the relativised link target,
but %typedlinks uses the same link targets as %links, so that didn't work.

I think the bug only appeared when tagbase was not set.

This bugfix also let me factor out the common typedlink checking code.
2010-06-09 14:39:17 -04:00
Joey Hess 1b6aa2276e creation_day() etc use local time, not gmtime.
To match calendars, which use local time. Particularly important at
the end of the month.

I checked the history, and there seemed no good rationalle for the
pagespecs to use gmtime.
2010-05-31 20:46:12 -04:00
Joey Hess 7aa209f1ce Fix a bug that prevented matching deleted comments, and so did not update pages that had contained them.
Problem is that by the time rendering calls render_dependent, %pagesources
has had deleted files removed from it. So match_comment's lookup of
files in there to see if they had the _comment extension failed.

I had to introduce a hash that temporarily holds filenames of deleted pages
to fix this.

Note that unlike comment(), internal() had avoided this pitfall by being
defined to match both internal and non-internal pages.
2010-05-18 13:32:28 -04:00
Joey Hess c8b34aa31c allow misctemplate callers to pass params to suppress actions etc
Suppress disiplay of small search for on search results page, and of
Prefrences link on prefs page.
2010-05-14 21:45:54 -04:00
Joey Hess bbe971881a refactor template actions 2010-05-14 20:20:41 -04:00
Joey Hess 5a4c95cc35 enable action bar on misctemplates
So RecentChanges shows on the action bar there,
convert recentchanges to use new pageactions hook,
with compatability code to avoid breaking old templates.
2010-05-14 20:04:02 -04:00
Joey Hess bc0aa4d40e Use xhtml friendly pubdate setting. 2010-05-08 19:45:02 -04:00
Joey Hess b01a2274c3 fix undef warning when page() tests a deleted file 2010-05-07 13:25:32 -04:00
Joey Hess 2e86b8df98 fix param passing to match_glob 2010-05-06 20:46:58 -04:00
Joey Hess 71b8d2ad41 move meat of type checking to match_page where it belongs 2010-05-06 19:04:56 -04:00
Joey Hess cb2025af45 refactor 2010-05-05 22:41:23 -04:00
Joey Hess ee9a4e06fc rename ispage variable 2010-05-05 22:36:50 -04:00
Joey Hess 1193759568 remove unused indexlink function and template variable 2010-05-05 20:42:56 -04:00
Joey Hess 83b907c35e remove misc.tmpl checking
Turns out that users with a modified page.tmpl need to modify it on
upgrade, at least to add the FORCEBASEURL (so edit preview works),
so there is no point in trying to retain compatability.
2010-05-05 18:46:35 -04:00
Joey Hess 5971a731e9 allow search form visibility to be controlled on the template
hide extrafooter from misctemplate display per default
2010-05-05 18:42:18 -04:00
Joey Hess 66cc23a591 no more misc.tmpl
* Removed misc.tmpl. Now to theme ikiwiki, you only need to customise
  a single template, page.tmpl.
* misc.tmpl will, however, still be read if a locally modified version
  exists. This is to avoid forcing users to update page.tmpl right now.
2010-05-05 18:22:47 -04:00
Joey Hess 970373548f Add parameter to displaytime to specify that it is a pubdate, and in html5 mode, use time tag. 2010-05-02 13:44:13 -04:00
Joey Hess 0ec1fe1944 set html5 option as advanced for now 2010-05-01 21:04:14 -04:00
Joey Hess a547d26858 html5 option
* Ikiwiki can be configured to generate html5 instead of the default xhtml
  1.0. The html5 output mode is experimental, not yet fully standards
  compliant, and will be subject to rapid change.
2010-05-01 20:49:18 -04:00
Joey Hess 6293c62cac no need to use HTML::Entities
That module is unused now. Long long ago, it used to be used to encode data in
the index. Checked all modules, and every module that uses it imports it.
2010-04-30 17:26:41 -04:00
Joey Hess a6e6f604bd TMPL_INCLUDE re-enabled for templates read from the templatedir. (But not in-wiki templates.) 2010-04-28 12:39:13 -04:00
Joey Hess 3ac2ae1f14 Add page() PageSpec, which is like glob() but matches only pages, not other files. 2010-04-26 18:47:17 -04:00
Joey Hess 97b0c6e455 Fix removal of rendered files in rebuild mode.
Needed to handle the move of the .js files into ikiwiki/, but also this is
a longstanding bug.

Old pagemtime is not remembered in rebuild mode, and changing that would
need a lot of changes. So instead, loop on pagectime, which is remembered.

Change to remembering old pagesources info in rebuild mode. This seems safe
enough.
2010-04-26 17:14:03 -04:00
Joey Hess ca9c17db57 reword templatedir description 2010-04-24 21:38:22 -04:00
Joey Hess ca9c6cc254 add support for mass dependencies
Registered by passing "" as page name to add_depends.
2010-04-24 20:22:20 -04:00
Joey Hess 0d8fc55d33 bugfix 2010-04-24 19:50:23 -04:00
Joey Hess c2656f08f3 template() - return params in list context
I forgot CGI::Formbuilder's horrible interface that needs template
parameters instead of a constructed object.
2010-04-24 16:15:47 -04:00