X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/abd262cf58315ddcd8bc3d3d835d6eb1e107651e..ff6941cef9a88ea2a0d3af2e5ae1edd09048916b:/IkiWiki/Plugin/inline.pm diff --git a/IkiWiki/Plugin/inline.pm b/IkiWiki/Plugin/inline.pm index f90d87ae2..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; @@ -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); @@ -271,6 +296,8 @@ sub genfeed ($$$$@) { #{{{ my $lasttime = 0; foreach my $p (@pages) { my $u=URI->new(encode_utf8($config{url}."/".htmlpage($p))); + + my $pcontent = absolute_urls(get_inline_content($p, $page), $url); $itemtemplate->param( title => pagetitle(basename($p)), @@ -280,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); @@ -336,7 +362,7 @@ sub genfeed ($$$$@) { #{{{ } #}}} sub pingurl (@) { #{{{ - return unless $config{pingurl} && %toping; + return unless @{$config{pingurl}} && %toping; eval q{require RPC::XML::Client}; if ($@) { @@ -345,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.