package MojoMojo::Schema::ResultSet::Content; use strict; use warnings; use parent qw/MojoMojo::Schema::Base::ResultSet/; =head1 NAME MojoMojo::Schema::ResultSet::Content - resultset methods on content =head1 METHODS =head2 format_content $formatted_content = format_content($c, $content, $page); Call all available formatters to format content, according to their format_content_order. =cut sub format_content { # FIXME: This thing should use accept-context and stop fucking around with $c everywhere my ( $self, $c, $content, $page ) = @_; MojoMojo->call_plugins( "format_content", \$content, $c, $page ) if ($content); return $content; } =head2 create_proto Create a content prototype hash, as the basis for a new revision. =cut sub create_proto { my ( $class, $page ) = @_; my %proto_content; my @columns = $class->result_source->columns; eval { $page->isa('MojoMojo::Schema::Page'); $page->content->isa('MojoMojo::Schema::Content'); }; if ($@) { # assume page is a simple "proto page" hashref, # or the page has no content yet %proto_content = map { $_ => undef } @columns; $proto_content{version} = 1; } else { my $content = $page->content; %proto_content = map { $_ => $content->$_ } @columns; @proto_content{qw/ creator created comments /} = (undef) x 3; $proto_content{version}++; } return \%proto_content; } =head1 AUTHOR Marcus Ramberg =head1 LICENSE This library is free software. You can redistribute it and/or modify it under the same terms as Perl itself. =cut 1;