42910de125d20879abf229697c09eb5754bd1a9b
[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            my $path = '';
34            my $replace = '';
35            my @parts = split /\//, $page->path;
36
37            foreach my $part (@parts) {
38                next unless $part;
39
40                $path .= "/" . $part;
41
42                if (-f $static_dir . "/page-css/$path.css") {
43                    $replace .= "<link href='/static/page-css/$path.css' rel='stylesheet' type='text/css' />";
44                }
45            }
46
47            $_[0]->replace(HTML::Zoom->from_html($replace));
48          }}
49        ->select('script[data-cur-page-js]')->${\sub {
50            my $path = '';
51            my $replace = '';
52            my @parts = split /\//, $page->path;
53
54            foreach my $part (@parts) {
55                next unless $part;
56
57                $path .= "/" . $part;
58
59                if (-f $static_dir . "/page-js/$path.js") {
60                    $replace .= "<script src='/static/page-js/$path.js' type='text/javascript'></script>";
61                }
62            }
63
64            $_[0]->replace(HTML::Zoom->from_html($replace));
65          }}
66 }
67
68 1;