diff options
author | Amitai Schlair <schmonz-web-ikiwiki@schmonz.com> | 2013-02-18 19:34:20 -0500 |
---|---|---|
committer | Amitai Schlair <schmonz-web-ikiwiki@schmonz.com> | 2013-02-19 20:22:47 -0500 |
commit | a7a68417d0b0dd9499afb593c21cf1b5cda02ab3 (patch) | |
tree | f142556bebb1c68860901d5f3eda63077060a706 | |
parent | d27c587ec9e7ff179cef42d68a6079282ef1fca9 (diff) | |
download | ikiwiki-a7a68417d0b0dd9499afb593c21cf1b5cda02ab3.tar ikiwiki-a7a68417d0b0dd9499afb593c21cf1b5cda02ab3.tar.gz |
When inlining HTML pages, render enclosures.
-rwxr-xr-x | t/podcast.t | 38 | ||||
-rw-r--r-- | t/tinypodcast/fancy.mdwn | 1 | ||||
-rw-r--r-- | templates/inlinepage.tmpl | 6 |
3 files changed, 39 insertions, 6 deletions
diff --git a/t/podcast.t b/t/podcast.t index 3125a7e55..235c2e768 100755 --- a/t/podcast.t +++ b/t/podcast.t @@ -9,7 +9,7 @@ BEGIN { "XML::Feed and/or HTML::Parser not available"}; } else { - eval q{use Test::More tests => 81}; + eval q{use Test::More tests => 89}; } } @@ -125,6 +125,36 @@ sub single_page_html { ok(! system("rm -rf $tmp $statedir"), q{teardown}); } +sub inlined_pages_html { + my @command = (qw(./ikiwiki.out -plugin inline)); + push @command, qw(-underlaydir=underlays/basewiki); + push @command, qw(-set underlaydirbase=underlays -templatedir=templates); + push @command, qw(t/tinypodcast), "$tmp/out"; + + ok(! system("mkdir $tmp"), + q{setup}); + ok(! system(@command), + q{build}); + + my $html = "$tmp/out/fancy/index.html"; + my $contents = _extract_html_content($html, 'content'); + like($contents, qr/has content and an/m, + q{html body text from pianopost}); + like($contents, qr/has content and only one/m, + q{html body text from attempted_multiple_enclosures}); + my $enclosures = _extract_html_content($html, 'inlineenclosure'); + like($enclosures, qr/this episode/m, + q{html enclosure}); + my ($href) = _extract_html_links($html, 'piano.mp3'); + ok(-f $href, + q{html enclosure from pianopost exists}); + ($href) = _extract_html_links($html, 'walter.ogg'); + ok(-f $href, + q{html enclosure from attempted_multiple_enclosures exists}); + + ok(! system("rm -rf $tmp $statedir"), q{teardown}); +} + sub _extract_html_content { my ($file, $desired_id, $desired_tag) = @_; $desired_tag = 'div' unless defined $desired_tag; @@ -141,11 +171,6 @@ sub _extract_html_content { my ($dtext) = @_; $content .= $dtext; }, "dtext"); - - $self->handler(end => sub { - my ($tag, $self) = @_; - $self->eof if $tag eq $desired_tag; - }, "tagname,self"); }, "tagname,self,attr"); $p->parse_file($file) || die $!; @@ -172,3 +197,4 @@ sub _extract_html_links { simple_podcast(); single_page_html(); +inlined_pages_html(); diff --git a/t/tinypodcast/fancy.mdwn b/t/tinypodcast/fancy.mdwn new file mode 100644 index 000000000..290f4c2fd --- /dev/null +++ b/t/tinypodcast/fancy.mdwn @@ -0,0 +1 @@ +[[!inline pages="pianopost or attempted_multiple_enclosures"]] diff --git a/templates/inlinepage.tmpl b/templates/inlinepage.tmpl index b0b53d041..cf0b6037e 100644 --- a/templates/inlinepage.tmpl +++ b/templates/inlinepage.tmpl @@ -23,6 +23,12 @@ <TMPL_VAR CONTENT> <TMPL_IF HTML5></section><TMPL_ELSE></div></TMPL_IF> +<TMPL_IF HTML5><section id="inlineenclosure"><TMPL_ELSE><div id="inlineenclosure"></TMPL_IF> +<TMPL_IF ENCLOSURE> +<a href="<TMPL_VAR ENCLOSURE>">Download this episode</a> +</TMPL_IF> +<TMPL_IF HTML5></section><TMPL_ELSE></div></TMPL_IF> + <TMPL_IF HTML5><footer class="inlinefooter"><TMPL_ELSE><div class="inlinefooter"></TMPL_IF> <span class="pagedate"> |