X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/3a31030550d302fdafa6407e9d24e300031d9787..ff6941cef9a88ea2a0d3af2e5ae1edd09048916b:/IkiWiki/Plugin/inline.pm diff --git a/IkiWiki/Plugin/inline.pm b/IkiWiki/Plugin/inline.pm index 890cdb446..78a8813a3 100644 --- a/IkiWiki/Plugin/inline.pm +++ b/IkiWiki/Plugin/inline.pm @@ -9,6 +9,8 @@ use IkiWiki::Render; # for displaytime use URI; sub import { #{{{ + hook(type => "getopt", id => "inline", call => \&getopt); + hook(type => "checkconfig", id => "inline", call => \&checkconfig); hook(type => "preprocess", id => "inline", call => \&IkiWiki::preprocess_inline); hook(type => "pagetemplate", id => "inline", @@ -20,6 +22,29 @@ sub import { #{{{ call => \&IkiWiki::pingurl); } # }}} +sub getopt () { #{{{ + eval q{use Getopt::Long}; + error($@) if $@; + Getopt::Long::Configure('pass_through'); + GetOptions( + "rss!" => \$config{rss}, + "atom!" => \$config{atom}, + ); +} + +sub checkconfig () { #{{{ + if (($config{rss} || $config{atom}) && ! length $config{url}) { + error("Must specify url to wiki with --url when using --rss or --atom"); + } + if ($config{rss}) { + print STDERR "!!\n"; + push @{$config{wiki_file_prune_regexps}}, qr/\.rss$/; + } + if ($config{atom}) { + push @{$config{wiki_file_prune_regexps}}, qr/\.atom$/; + } +} #}}} + # Back to ikiwiki namespace for the rest, this code is very much # internal to ikiwiki even though it's separated into a plugin. package IkiWiki; @@ -113,7 +138,7 @@ sub preprocess_inline (@) { #{{{ my $file = $pagesources{$page}; my $type = pagetype($file); if (! $raw || ($raw && ! defined $type)) { - if (! $archive && $quick) { + unless ($archive && $quick) { # Get the content before populating the # template, since getting the content uses # the same template if inlines are nested. @@ -135,7 +160,7 @@ sub preprocess_inline (@) { #{{{ my $type = pagetype($file); if ($config{discussion}) { $template->param(have_actions => 1); - $template->param(discussionlink => htmllink($page, $page, "Discussion", 1, 1)); + $template->param(discussionlink => htmllink($page, $params{page}, "Discussion", 1, 1)); } if (length $config{cgiurl} && defined $type) { $template->param(have_actions => 1); @@ -234,12 +259,14 @@ sub date_3339 ($) { #{{{ sub absolute_urls ($$) { #{{{ # sucky sub because rss sucks my $content=shift; - my $url=shift; + my $baseurl=shift; + my $url=$baseurl; $url=~s/[^\/]+$//; - $content=~s/new(encode_utf8($config{url}."/".htmlpage($p))); + + my $pcontent = absolute_urls(get_inline_content($p, $page), $url); $itemtemplate->param( title => pagetitle(basename($p)), @@ -278,7 +307,6 @@ sub genfeed ($$$$@) { #{{{ date_3339 => date_3339($pagectime{$p}), ); - my $pcontent = absolute_urls(get_inline_content($p, $page), $url); if ($itemtemplate->query(name => "enclosure")) { my $file=$pagesources{$p}; my $type=pagetype($file); @@ -334,7 +362,7 @@ sub genfeed ($$$$@) { #{{{ } #}}} sub pingurl (@) { #{{{ - return unless $config{pingurl} && %toping; + return unless @{$config{pingurl}} && %toping; eval q{require RPC::XML::Client}; if ($@) { @@ -343,13 +371,13 @@ sub pingurl (@) { #{{{ } # daemonize here so slow pings don't slow down wiki updates - eval q{use POSIX ’setsid’}; - chdir '/'; - open STDIN, '/dev/null'; - open STDOUT, '>/dev/null'; defined(my $pid = fork) or error("Can't fork: $!"); return if $pid; + chdir '/'; + eval q{use POSIX ’setsid’}; setsid() or error("Can't start a new session: $!"); + open STDIN, '/dev/null'; + open STDOUT, '>/dev/null'; open STDERR, '>&STDOUT' or error("Can’t dup stdout: $!"); # Don't need to keep a lock on the wiki as a daemon.