eaa45d2f8a73509cf17423ee4552b3de3922f819
[scpubgit/App-SCS.git] / lib / App / SCS / Plugin / Core / PagePlugin / PageData.pm
1 package App::SCS::Plugin::Core::PagePlugin::PageData;
2
3 use Moo;
4
5 with 'App::SCS::Role::PagePlugin';
6
7 has static_dir => (is => 'ro', required => 1);
8
9 sub filter_content_zoom {
10   my ($self, $zoom) = @_;
11
12   my $page = $self->page;
13   my $static_dir = $self->static_dir;
14
15   $zoom->select('.page.title')->replace_content($page->title)
16        ->select('.page.subtitle')->${\sub {
17            $page->subtitle
18              ? $_[0]->replace_content($page->subtitle)
19              : $_[0]->replace('')
20          }}
21        ->select('.page.published_at')->${\sub {
22            $page->published_at
23            ? $_[0]->replace_content($page->published_at)
24            : $_[0]->replace('')
25          }}
26        ->select('meta[name=description]')
27          ->set_attribute(content => $page->description)
28        ->select('meta[name=keywords]')
29          ->set_attribute(content => $page->keywords)
30        ->select('meta[name=created]')
31          ->set_attribute(content => $page->created)
32        ->select('link[data-cur-page-css]')->${\sub {
33            if (-f $static_dir . "/page-css/" . $page->path . ".css") {
34                $_[0]->set_attribute(href => "/static/page-css/" . $page->path . ".css");
35            } else {
36                $_[0]->replace('');
37            }
38          }}
39 }
40
41 1;