]> sipb.mit.edu Git - ikiwiki.git/blobdiff - IkiWiki/Plugin/inline.pm
* Make sure to check for errors from every eval.
[ikiwiki.git] / IkiWiki / Plugin / inline.pm
index c02aac1ce9baf54b2d057a9c21b3b932c28c7ae9..c6c6c6a1e286bdacb46378d0767f5fa566c4c522 100644 (file)
@@ -72,6 +72,10 @@ sub preprocess_inline (@) { #{{{
                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];
        }
@@ -105,7 +109,9 @@ sub preprocess_inline (@) { #{{{
        ) 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.
@@ -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 $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)));
@@ -145,8 +152,6 @@ sub preprocess_inline (@) { #{{{
                        $template->clear_params;
                }
                else {
-                       my $file=$pagesources{$page};
-                       my $type=pagetype($file);
                        if (defined $type) {
                                $ret.="\n".
                                      linkify($page, $params{page},
@@ -206,6 +211,7 @@ sub date_822 ($) { #{{{
        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));
@@ -217,6 +223,7 @@ sub date_3339 ($) { #{{{
        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));
@@ -269,8 +276,33 @@ sub genfeed ($$$$@) { #{{{
                        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);
@@ -284,7 +316,7 @@ sub genfeed ($$$$@) { #{{{
 
        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,
@@ -310,6 +342,8 @@ sub pingurl (@) { #{{{
                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);