]> sipb.mit.edu Git - ikiwiki.git/blobdiff - IkiWiki/Plugin/inline.pm
testing
[ikiwiki.git] / IkiWiki / Plugin / inline.pm
index 1ee79180c52fccc8f336c7f1dc7a6fdc02a2d919..c6c6c6a1e286bdacb46378d0767f5fa566c4c522 100644 (file)
@@ -72,6 +72,10 @@ sub preprocess_inline (@) { #{{{
                return "unknown sort type $params{sort}";
        }
 
                return "unknown sort type $params{sort}";
        }
 
+       if (exists $params{skip}) {
+               @list=@list[$params{skip} .. scalar @list - 1];
+       }
+       
        if ($params{show} && @list > $params{show}) {
                @list=@list[0..$params{show} - 1];
        }
        if ($params{show} && @list > $params{show}) {
                @list=@list[0..$params{show} - 1];
        }
@@ -105,7 +109,9 @@ sub preprocess_inline (@) { #{{{
        ) unless $raw;
        
        foreach my $page (@list) {
        ) unless $raw;
        
        foreach my $page (@list) {
-               if (! $raw) {
+               my $file = $pagesources{$page};
+               my $type = pagetype($file);
+               if (! $raw || ($raw && ! defined $type)) {
                        # Get the content before populating the template,
                        # since getting the content uses the same template
                        # if inlines are nested.
                        # Get the content before populating the template,
                        # since getting the content uses the same template
                        # if inlines are nested.
@@ -116,7 +122,8 @@ sub preprocess_inline (@) { #{{{
                        my $content=get_inline_content($page, $params{destpage});
                        # Don't use htmllink because this way the title is separate
                        # and can be overridden by other plugins.
                        my $content=get_inline_content($page, $params{destpage});
                        # Don't use htmllink because this way the title is separate
                        # and can be overridden by other plugins.
-                       my $link=htmlpage(bestlink($params{page}, $page));
+                       my $link=bestlink($params{page}, $page);
+                       $link=htmlpage($link) if defined $type;
                        $link=abs2rel($link, dirname($params{destpage}));
                        $template->param(pageurl => $link);
                        $template->param(title => pagetitle(basename($page)));
                        $link=abs2rel($link, dirname($params{destpage}));
                        $template->param(pageurl => $link);
                        $template->param(title => pagetitle(basename($page)));
@@ -145,8 +152,6 @@ sub preprocess_inline (@) { #{{{
                        $template->clear_params;
                }
                else {
                        $template->clear_params;
                }
                else {
-                       my $file=$pagesources{$page};
-                       my $type=pagetype($file);
                        if (defined $type) {
                                $ret.="\n".
                                      linkify($page, $params{page},
                        if (defined $type) {
                                $ret.="\n".
                                      linkify($page, $params{page},
@@ -206,6 +211,7 @@ sub date_822 ($) { #{{{
        my $time=shift;
 
        eval q{use POSIX};
        my $time=shift;
 
        eval q{use POSIX};
+       error($@) if $@;
        my $lc_time= POSIX::setlocale(&POSIX::LC_TIME);
        POSIX::setlocale(&POSIX::LC_TIME, "C");
        my $ret=POSIX::strftime("%a, %d %b %Y %H:%M:%S %z", localtime($time));
        my $lc_time= POSIX::setlocale(&POSIX::LC_TIME);
        POSIX::setlocale(&POSIX::LC_TIME, "C");
        my $ret=POSIX::strftime("%a, %d %b %Y %H:%M:%S %z", localtime($time));
@@ -217,6 +223,7 @@ sub date_3339 ($) { #{{{
        my $time=shift;
 
        eval q{use POSIX};
        my $time=shift;
 
        eval q{use POSIX};
+       error($@) if $@;
        my $lc_time= POSIX::setlocale(&POSIX::LC_TIME);
        POSIX::setlocale(&POSIX::LC_TIME, "C");
        my $ret=POSIX::strftime("%Y-%m-%dT%H:%M:%SZ", localtime($time));
        my $lc_time= POSIX::setlocale(&POSIX::LC_TIME);
        POSIX::setlocale(&POSIX::LC_TIME, "C");
        my $ret=POSIX::strftime("%Y-%m-%dT%H:%M:%SZ", localtime($time));
@@ -269,8 +276,33 @@ sub genfeed ($$$$@) { #{{{
                        permalink => $u,
                        date_822 => date_822($pagectime{$p}),
                        date_3339 => date_3339($pagectime{$p}),
                        permalink => $u,
                        date_822 => date_822($pagectime{$p}),
                        date_3339 => date_3339($pagectime{$p}),
-                       content => absolute_urls(get_inline_content($p, $page), $url),
                );
                );
+
+               my $pcontent = absolute_urls(get_inline_content($p, $page), $url);
+               if ($itemtemplate->query(name => "enclosure")) {
+                       my $file=$pagesources{$p};
+                       my $type=pagetype($file);
+                       if (defined $type) {
+                               $itemtemplate->param(content => $pcontent);
+                       }
+                       else {
+                               my ($a, $b, $c, $d, $e, $f, $g, $size) = stat(srcfile($file));
+                               my $mime="unknown";
+                               eval q{use File::MimeInfo};
+                               if (! $@) {
+                                       $mime = mimetype($file);
+                               }
+                               $itemtemplate->param(
+                                       enclosure => $u,
+                                       type => $mime,
+                                       length => $size,
+                               );
+                       }
+               }
+               else {
+                       $itemtemplate->param(content => $pcontent);
+               }
+
                run_hooks(pagetemplate => sub {
                        shift->(page => $p, destpage => $page,
                                template => $itemtemplate);
                run_hooks(pagetemplate => sub {
                        shift->(page => $p, destpage => $page,
                                template => $itemtemplate);
@@ -284,7 +316,7 @@ sub genfeed ($$$$@) { #{{{
 
        my $template=template($feedtype."page.tmpl", blind_cache => 1);
        $template->param(
 
        my $template=template($feedtype."page.tmpl", blind_cache => 1);
        $template->param(
-               title => $config{wikiname},
+               title => $page ne "index" ? pagetitle($page) : $config{wikiname},
                wikiname => $config{wikiname},
                pageurl => $url,
                content => $content,
                wikiname => $config{wikiname},
                pageurl => $url,
                content => $content,
@@ -310,21 +342,28 @@ sub pingurl (@) { #{{{
                return;
        }
 
                return;
        }
 
+       # TODO: daemonize here so slow pings don't slow down wiki updates
+
        foreach my $page (keys %toping) {
                my $title=pagetitle(basename($page));
                my $url="$config{url}/".htmlpage($page);
                foreach my $pingurl (@{$config{pingurl}}) {
        foreach my $page (keys %toping) {
                my $title=pagetitle(basename($page));
                my $url="$config{url}/".htmlpage($page);
                foreach my $pingurl (@{$config{pingurl}}) {
-                       my $client = RPC::XML::Client->new($pingurl);
-                       my $req = RPC::XML::request->new('weblogUpdates.ping',
-                               $title, $url);
                        debug("Pinging $pingurl for $page");
                        debug("Pinging $pingurl for $page");
-                       my $res = $client->send_request($req);
-                       if (! ref $res) {
-                               debug("Did not receive response to ping");
-                       }
-                       my $r=$res->value;
-                       if (! exists $r->{flerror} || $r->{flerror}) {
-                               debug("Ping rejected: ".(exists $r->{message} ? $r->{message} : "[unknown reason]"));
+                       eval {
+                               my $client = RPC::XML::Client->new($pingurl);
+                               my $req = RPC::XML::request->new('weblogUpdates.ping',
+                               $title, $url);
+                               my $res = $client->send_request($req);
+                               if (! ref $res) {
+                                       debug("Did not receive response to ping");
+                               }
+                               my $r=$res->value;
+                               if (! exists $r->{flerror} || $r->{flerror}) {
+                                       debug("Ping rejected: ".(exists $r->{message} ? $r->{message} : "[unknown reason]"));
+                               }
+                       };
+                       if ($@) {
+                               debug "Ping failed: $@";
                        }
                }
        }
                        }
                }
        }