From 71fba7791f93f50768b345f318c87ac43ae45b63 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 12 Jul 2008 20:20:26 -0400 Subject: [PATCH 01/12] add perlmagick to build deps needed since the doc wiki is using an [[img]] --- debian/control | 2 +- doc/bugs/Missing_build-dep_on_perlmagick__63__.mdwn | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/debian/control b/debian/control index a50c13c26..36d83c640 100644 --- a/debian/control +++ b/debian/control @@ -2,7 +2,7 @@ Source: ikiwiki Section: web Priority: optional Build-Depends: perl, debhelper (>= 5) -Build-Depends-Indep: dpkg-dev (>= 1.9.0), libxml-simple-perl, libtext-markdown-perl | markdown, libtimedate-perl, libhtml-template-perl, libhtml-scrubber-perl, wdg-html-validator, libhtml-parser-perl, liburi-perl +Build-Depends-Indep: dpkg-dev (>= 1.9.0), libxml-simple-perl, libtext-markdown-perl | markdown, libtimedate-perl, libhtml-template-perl, libhtml-scrubber-perl, wdg-html-validator, libhtml-parser-perl, liburi-perl, perlmagick Maintainer: Joey Hess Uploaders: Joey Hess , Josh Triplett Standards-Version: 3.8.0 diff --git a/doc/bugs/Missing_build-dep_on_perlmagick__63__.mdwn b/doc/bugs/Missing_build-dep_on_perlmagick__63__.mdwn index 77e9b3560..f6c0266ba 100644 --- a/doc/bugs/Missing_build-dep_on_perlmagick__63__.mdwn +++ b/doc/bugs/Missing_build-dep_on_perlmagick__63__.mdwn @@ -9,3 +9,6 @@ Trying to build current Git master in a (two weeks old - no DSL here) sid chroot make: *** [build-stamp] Error 2 Adding perlmagick to the build-deps fixes it. I read somewhere in debian/changelog that this build-deb was not needed, but... + +> It's not needed by the test suite, but once I added a img to the source +> wiki, it became needed. [[done]] --[[Joey]] From e4e3d7e2d4195bcd22c467522719c9c6dd39216b Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 12 Jul 2008 20:21:42 -0400 Subject: [PATCH 02/12] convert fatal error to warning Since perlmagick is not a hard dep, and goodstuff is enabled by default, imgs should not crash builds --- IkiWiki/Plugin/img.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IkiWiki/Plugin/img.pm b/IkiWiki/Plugin/img.pm index cc0e84b01..49e1d57d6 100644 --- a/IkiWiki/Plugin/img.pm +++ b/IkiWiki/Plugin/img.pm @@ -46,7 +46,7 @@ sub preprocess (@) { #{{{ my $base = IkiWiki::basename($file); eval q{use Image::Magick}; - error($@) if $@; + return "[[img ".gettext("Image::Magick not installed")."]]" if $@; my $im = Image::Magick->new; my $imglink; my $r; From e3c0e4977449de2eec36e254a7e131693ba2f822 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 12 Jul 2008 23:23:25 -0400 Subject: [PATCH 03/12] only htmlize errors when cgi is actually running --- IkiWiki.pm | 5 ---- IkiWiki/CGI.pm | 10 ++++++++ doc/bugs/html_errors.mdwn | 3 +++ ikiwiki.in | 7 ++++-- po/ikiwiki.pot | 50 +++++++++++++++++++++++---------------- 5 files changed, 47 insertions(+), 28 deletions(-) diff --git a/IkiWiki.pm b/IkiWiki.pm index f1a5f8058..d4e19c388 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -189,11 +189,6 @@ sub loadplugin ($) { #{{{ sub error ($;$) { #{{{ my $message=shift; my $cleaner=shift; - if ($config{cgi}) { - print "Content-type: text/html\n\n"; - print misctemplate(gettext("Error"), - "

".gettext("Error").": $message

"); - } log_message('err' => $message) if $config{syslog}; if (defined $cleaner) { $cleaner->(); diff --git a/IkiWiki/CGI.pm b/IkiWiki/CGI.pm index 6770f6feb..d805506aa 100644 --- a/IkiWiki/CGI.pm +++ b/IkiWiki/CGI.pm @@ -750,4 +750,14 @@ sub cgi (;$$) { #{{{ } } #}}} +# Does not need tobe called directly; all errors will go through here. +sub cgierror ($) { #{{{ + my $message=shift; + + print "Content-type: text/html\n\n"; + print misctemplate(gettext("Error"), + "

".gettext("Error").": $message

"); + die $@; +} #}}} + 1 diff --git a/doc/bugs/html_errors.mdwn b/doc/bugs/html_errors.mdwn index 5a60e0449..aef2f7f71 100644 --- a/doc/bugs/html_errors.mdwn +++ b/doc/bugs/html_errors.mdwn @@ -1,2 +1,5 @@ ikiwiki will generate html formatted error messages to the command line if --cgi is set, even if it's not yet running as a cgi + +> [[done]], at last. Oldest open bug.. just thought of an elegant fix! +> --[[Joey]] diff --git a/ikiwiki.in b/ikiwiki.in index e0a591824..cc3f210b5 100755 --- a/ikiwiki.in +++ b/ikiwiki.in @@ -100,7 +100,7 @@ sub getconfig () { #{{{ else { # wrapper passes a full config structure in the environment # variable - eval possibly_foolish_untaint($ENV{WRAPPED_OPTIONS}); + eval {possibly_foolish_untaint($ENV{WRAPPED_OPTIONS})}; if ($@) { error("WRAPPED_OPTIONS: $@"); } @@ -123,7 +123,10 @@ sub main () { #{{{ } elsif ($config{cgi}) { require IkiWiki::CGI; - cgi(); + eval {cgi()}; + if ($@) { + cgierror($@); + } } elsif ($config{render}) { require IkiWiki::Render; diff --git a/po/ikiwiki.pot b/po/ikiwiki.pot index 8aef6cc1a..f94f5bdd3 100644 --- a/po/ikiwiki.pot +++ b/po/ikiwiki.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-07-11 06:04-0400\n" +"POT-Creation-Date: 2008-07-12 23:07-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -50,7 +50,7 @@ msgid "%s is not an editable page" msgstr "" #: ../IkiWiki/CGI.pm:438 ../IkiWiki/Plugin/brokenlinks.pm:24 -#: ../IkiWiki/Plugin/inline.pm:266 ../IkiWiki/Plugin/opendiscussion.pm:17 +#: ../IkiWiki/Plugin/inline.pm:261 ../IkiWiki/Plugin/opendiscussion.pm:17 #: ../IkiWiki/Plugin/orphans.pm:28 ../IkiWiki/Render.pm:95 #: ../IkiWiki/Render.pm:162 msgid "discussion" @@ -71,6 +71,10 @@ msgstr "" msgid "You are banned." msgstr "" +#: ../IkiWiki/CGI.pm:758 ../IkiWiki/CGI.pm:759 +msgid "Error" +msgstr "" + #: ../IkiWiki/Plugin/aggregate.pm:53 msgid "Aggregation triggered via web." msgstr "" @@ -148,7 +152,7 @@ msgstr "" msgid "deleting bucket.." msgstr "" -#: ../IkiWiki/Plugin/amazon_s3.pm:37 ../IkiWiki/Setup.pm:115 +#: ../IkiWiki/Plugin/amazon_s3.pm:37 ../IkiWiki/Setup.pm:117 msgid "done" msgstr "" @@ -228,6 +232,10 @@ msgstr "" msgid "prog not a valid graphviz program" msgstr "" +#: ../IkiWiki/Plugin/img.pm:49 +msgid "Image::Magick not installed" +msgstr "" + #: ../IkiWiki/Plugin/img.pm:56 #, perl-format msgid "bad size \"%s\"" @@ -253,29 +261,29 @@ msgstr "" msgid "Must specify url to wiki with --url when using --rss or --atom" msgstr "" -#: ../IkiWiki/Plugin/inline.pm:106 +#: ../IkiWiki/Plugin/inline.pm:101 msgid "missing pages parameter" msgstr "" -#: ../IkiWiki/Plugin/inline.pm:154 +#: ../IkiWiki/Plugin/inline.pm:149 #, perl-format msgid "unknown sort type %s" msgstr "" -#: ../IkiWiki/Plugin/inline.pm:225 +#: ../IkiWiki/Plugin/inline.pm:220 msgid "Add a new post titled:" msgstr "" -#: ../IkiWiki/Plugin/inline.pm:241 +#: ../IkiWiki/Plugin/inline.pm:236 #, perl-format msgid "nonexistant template %s" msgstr "" -#: ../IkiWiki/Plugin/inline.pm:274 ../IkiWiki/Render.pm:99 +#: ../IkiWiki/Plugin/inline.pm:269 ../IkiWiki/Render.pm:99 msgid "Discussion" msgstr "" -#: ../IkiWiki/Plugin/inline.pm:504 +#: ../IkiWiki/Plugin/inline.pm:506 msgid "RPC::XML::Client not found, not pinging" msgstr "" @@ -297,15 +305,15 @@ msgstr "" msgid "failed to load Markdown.pm perl module (%s) or /usr/bin/markdown (%s)" msgstr "" -#: ../IkiWiki/Plugin/meta.pm:137 +#: ../IkiWiki/Plugin/meta.pm:141 msgid "stylesheet not found" msgstr "" -#: ../IkiWiki/Plugin/meta.pm:171 +#: ../IkiWiki/Plugin/meta.pm:175 msgid "redir page not found" msgstr "" -#: ../IkiWiki/Plugin/meta.pm:184 +#: ../IkiWiki/Plugin/meta.pm:188 msgid "redir cycle is not allowed" msgstr "" @@ -387,11 +395,11 @@ msgstr "" msgid "LWP not found, not pinging" msgstr "" -#: ../IkiWiki/Plugin/poll.pm:65 +#: ../IkiWiki/Plugin/poll.pm:60 msgid "vote" msgstr "" -#: ../IkiWiki/Plugin/poll.pm:73 +#: ../IkiWiki/Plugin/poll.pm:68 msgid "Total votes:" msgstr "" @@ -660,11 +668,11 @@ msgstr "" msgid "generating wrappers.." msgstr "" -#: ../IkiWiki/Setup.pm:105 +#: ../IkiWiki/Setup.pm:107 msgid "rebuilding wiki.." msgstr "" -#: ../IkiWiki/Setup.pm:108 +#: ../IkiWiki/Setup.pm:110 msgid "refreshing wiki.." msgstr "" @@ -712,15 +720,15 @@ msgstr "" msgid "Must specify url to wiki with --url when using --cgi" msgstr "" -#: ../IkiWiki.pm:194 ../IkiWiki.pm:195 -msgid "Error" -msgstr "" - #. translators: The first parameter is a #. translators: preprocessor directive name, #. translators: the second a page name, the #. translators: third a number. -#: ../IkiWiki.pm:770 +#: ../IkiWiki.pm:765 #, perl-format msgid "%s preprocessing loop detected on %s at depth %i" msgstr "" + +#: ../IkiWiki.pm:1203 +msgid "yes" +msgstr "" From 0b140ed1c8428d6984e1e0294b5008670d4f87fe Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 12 Jul 2008 23:31:27 -0400 Subject: [PATCH 04/12] avoid hardlinking files owned by others 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. --- IkiWiki/Render.pm | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm index c241fd40b..990fcaaa1 100644 --- a/IkiWiki/Render.pm +++ b/IkiWiki/Render.pm @@ -229,10 +229,14 @@ sub render ($) { #{{{ will_render($file, $file, 1); if ($config{hardlink}) { - prep_writefile($file, $config{destdir}); - unlink($config{destdir}."/".$file); - if (link($srcfile, $config{destdir}."/".$file)) { - return; + # only hardlink if owned by same user + my @stat=stat($srcfile); + if ($stat[4] == $>) { + prep_writefile($file, $config{destdir}); + unlink($config{destdir}."/".$file); + if (link($srcfile, $config{destdir}."/".$file)) { + return; + } } # if hardlink fails, fall back to copying } From 180c96307487c78d9ee3066eedca2c5ca265b1a5 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 12 Jul 2008 23:45:21 -0400 Subject: [PATCH 05/12] revert eval change --- ikiwiki.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ikiwiki.in b/ikiwiki.in index cc3f210b5..3bb881c43 100755 --- a/ikiwiki.in +++ b/ikiwiki.in @@ -100,7 +100,7 @@ sub getconfig () { #{{{ else { # wrapper passes a full config structure in the environment # variable - eval {possibly_foolish_untaint($ENV{WRAPPED_OPTIONS})}; + eval possibly_foolish_untaint($ENV{WRAPPED_OPTIONS}); if ($@) { error("WRAPPED_OPTIONS: $@"); } From 154a572ec61b39deb0ad0378cc8d9a02de113f2b Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 12 Jul 2008 23:45:36 -0400 Subject: [PATCH 06/12] make errors red --- doc/style.css | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/style.css b/doc/style.css index b98507991..246da1ffc 100644 --- a/doc/style.css +++ b/doc/style.css @@ -146,6 +146,10 @@ div.recentchanges { margin-top: 1em; } +.error { + color: #C00; +} + /* Used for invalid form fields. */ .fb_invalid { color: red; From a6b4d94e0c40c633c4473d058e65a9f005aa6b8c Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 13 Jul 2008 08:03:27 -0400 Subject: [PATCH 07/12] web commit by http://mornfall.myopenid.com/ --- doc/todo/darcs.mdwn | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/todo/darcs.mdwn b/doc/todo/darcs.mdwn index c31ce105c..84c99daba 100644 --- a/doc/todo/darcs.mdwn +++ b/doc/todo/darcs.mdwn @@ -480,4 +480,8 @@ It is in a [darcs repository](http://joyful.com/darcsweb/darcsweb.cgi?r=ikiwiki- > conflicts and return a page with conflict markers for the user to fix > the conflict. +I have addressed the recentchanges bit, you can find my hacked up darcs.pm at . + +It's got couple of FIXMEs, and a very site-specific filter for recentchanges. Not sure how to do that better though. I will eventually add web commits, probably of my own (and mention it here). + [[tag patch]] From 4ad9680d52b058aee9e81518dce5f00ff9e1bd44 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 13 Jul 2008 09:45:59 -0400 Subject: [PATCH 08/12] web commit by http://smcv.pseudorandom.co.uk/: suggest solution --- ...__39____39___for___96__.page__42____39____63__.mdwn | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/doc/bugs/__96____96__clear:_both__39____39___for___96__.page__42____39____63__.mdwn b/doc/bugs/__96____96__clear:_both__39____39___for___96__.page__42____39____63__.mdwn index e389ce3ed..b0a63ba3c 100644 --- a/doc/bugs/__96____96__clear:_both__39____39___for___96__.page__42____39____63__.mdwn +++ b/doc/bugs/__96____96__clear:_both__39____39___for___96__.page__42____39____63__.mdwn @@ -15,3 +15,13 @@ adding this `clear: both`? > before the modification date. So all of them have to clear both above and > below. I'm sure there are better ways for the CSS to handle that. > --[[Joey]] + +>> There is indeed a better way - all the optional things below the +>> content are wrapped in ` From 879d7806032bb673e3fb5459e67de90a8ad8c72b Mon Sep 17 00:00:00 2001 From: Simon McVittie Date: Sun, 13 Jul 2008 15:13:20 +0100 Subject: [PATCH 11/12] Add more CSS hooks to inlinepage.tmpl * Wrap everything before the content in
* Wrap the inlined content itself in
* Wrap everything after the content in
--- templates/inlinepage.tmpl | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/templates/inlinepage.tmpl b/templates/inlinepage.tmpl index 71d57b008..ffcb897a8 100644 --- a/templates/inlinepage.tmpl +++ b/templates/inlinepage.tmpl @@ -1,4 +1,7 @@
+ +
+ @@ -15,7 +18,14 @@ + +
+ +
+
+ +
Posted @@ -52,7 +62,9 @@ License:
  • -
    +
    -
    +
    + +
    From f6e6d561e9d0269d8b52bf926adb3f782e777bde Mon Sep 17 00:00:00 2001 From: Simon McVittie Date: Sun, 13 Jul 2008 15:16:41 +0100 Subject: [PATCH 12/12] Don't set clear:both on .pagedate etc., only on .pagefooter This removes clear:both from the trailing metadata of inlined entries as requested by tschwinge, but if you want that feature back, you can set .inlinefooter { clear: both; } in local.css. --- doc/style.css | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/doc/style.css b/doc/style.css index 246da1ffc..0e3bfb3e6 100644 --- a/doc/style.css +++ b/doc/style.css @@ -35,12 +35,14 @@ padding: .2em .4em; } -.tags { +.pagefooter { clear: both; } +.tags { +} + #pageinfo { - clear: both; margin: 1em 0; border-top: 1px solid #000; } @@ -140,7 +142,6 @@ div.recentchanges { .pagedate, .pagelicense, .pagecopyright { - clear: both; font-style: italic; display: block; margin-top: 1em;