]> sipb.mit.edu Git - ikiwiki.git/blobdiff - IkiWiki/Plugin/inline.pm
* Add support for links of the form [[../foo]], this links to the page
[ikiwiki.git] / IkiWiki / Plugin / inline.pm
index fd7a59ab39cecd12857ebb55de80467d74eb6439..70b353ec5ef5970852677cf8ae02e4070641fdf4 100644 (file)
@@ -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,28 @@ 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}) {
+               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;
@@ -240,8 +264,8 @@ sub absolute_urls ($$) { #{{{
        $url=~s/[^\/]+$//;
        
        $content=~s/(<a(?:\s+(?:class|id)="?\w+"?)?)\s+href="(#[^"]+)"/$1 href="$baseurl$2"/ig;
-       $content=~s/(<a(?:\s+(?:class|id)="?\w+"?)?)\s+href="(?![^:]+:\/\/)([^"]+)"/$1 href="$url$2"/ig;
-       $content=~s/(<img(?:\s+(?:class|id)="?\w+"?)?)\s+src="(?![^:]+:\/\/)([^"]+)"/$1 src="$url$2"/ig;
+       $content=~s/(<a(?:\s+(?:class|id)="?\w+"?)?)\s+href="(?!\w+:\/\/)([^"]+)"/$1 href="$url$2"/ig;
+       $content=~s/(<img(?:\s+(?:class|id)="?\w+"?)?)\s+src="(?!\w+:\/\/)([^"]+)"/$1 src="$url$2"/ig;
        return $content;
 } #}}}
 
@@ -271,16 +295,17 @@ 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)),
+                       title => pagetitle(basename($p), 1),
                        url => $u,
                        permalink => $u,
                        date_822 => date_822($pagectime{$p}),
                        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);
@@ -318,7 +343,7 @@ sub genfeed ($$$$@) { #{{{
 
        my $template=template($feedtype."page.tmpl", blind_cache => 1);
        $template->param(
-               title => $page ne "index" ? pagetitle($page) : $config{wikiname},
+               title => $page ne "index" ? pagetitle($page, 1) : $config{wikiname},
                wikiname => $config{wikiname},
                pageurl => $url,
                content => $content,
@@ -358,14 +383,14 @@ sub pingurl (@) { #{{{
        IkiWiki::unlockwiki();
 
        foreach my $page (keys %toping) {
-               my $title=pagetitle(basename($page));
+               my $title=pagetitle(basename($page), 0);
                my $url="$config{url}/".htmlpage($page);
                foreach my $pingurl (@{$config{pingurl}}) {
                        debug("Pinging $pingurl for $page");
                        eval {
                                my $client = RPC::XML::Client->new($pingurl);
                                my $req = RPC::XML::request->new('weblogUpdates.ping',
-                               $title, $url);
+                                       $title, $url);
                                my $res = $client->send_request($req);
                                if (! ref $res) {
                                        debug("Did not receive response to ping");