<link data-cur-page-css />
Errietta Kostala [Thu, 7 Aug 2014 15:31:58 +0000 (16:31 +0100)]
= a <link> loading a css file named after the current page.

lib/App/SCS/Plugin/Core.pm
lib/App/SCS/Plugin/Core/PagePlugin/PageData.pm

index 7d9dfc6..faf49ba 100644 (file)
@@ -41,7 +41,10 @@ sub page_plugins {
     class => 'App::SCS::Plugin::Core::PagePlugin::Include',
     config => sub { includes => $self->includes },
   },
-  PageData => 'App::SCS::Plugin::Core::PagePlugin::PageData',
+  PageData => {
+    class => 'App::SCS::Plugin::Core::PagePlugin::PageData',
+    config => sub { static_dir => $self->app->share_dir->catdir('static') }
+  }
 }
 
 sub default_page_plugins {
index daf529f..a35d2f4 100644 (file)
@@ -4,9 +4,14 @@ use Moo;
 
 with 'App::SCS::Role::PagePlugin';
 
+has static_dir => (is => 'ro', required => 1);
+
 sub filter_content_zoom {
   my ($self, $zoom) = @_;
+
   my $page = $self->page;
+  my $static_dir = $self->static_dir;
+
   $zoom->select('.page.title')->replace_content($page->title)
        ->select('.page.subtitle')->${\sub {
            $page->subtitle
@@ -19,7 +24,14 @@ sub filter_content_zoom {
        ->select('meta[name=keywords]')
          ->set_attribute(content => $page->keywords)
        ->select('meta[name=created]')
-         ->set_attribute(content => $page->created);
+         ->set_attribute(content => $page->created)
+       ->select('link[data-cur-page-css]')->${\sub {
+           if (-f $static_dir . "/page-css/" . $page->path . ".css") {
+               $_[0]->set_attribute(href => "/static/page-css/" . $page->path . ".css");
+           } else {
+               $_[0]->replace('');
+           }
+         }}
 }
 
 1;