The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package Yote::Util::Pages;

########################################################################
# Pages is a utility for editing and versioning the pages on the site. #
# Author : Eric Wolf						       #
########################################################################

use strict;
use warnings;

use parent 'Yote::AppRoot';

use Yote::RootObj;


sub _init {
    my $self = shift;
    $self->set__pages({});
}

sub reload_from_file {
    my( $self, $url, $acct ) = @_;
    my $node = $self->_hash_fetch( { name => '_pages', key => $url } );

    my $file_loc = "$ENV{YOTE_ROOT}/html/$url";
    my $buf = '';
    if( -e $file_loc ) {
	open my $IN, '<', $file_loc;
	while(<$IN>) {
	    $buf .= $_;
	}
	close $IN;
    }
    unless( $node ) {
	$node = new Yote::RootObj( {
	    created_time => time,
	    last_saved   => time,
	    page_text    => $buf,
	    file_loc     => $file_loc,
				   } );
    }
    $node->set_working_text( $buf );
    return $node;
} #reload_from_file

sub load_page_node {
    my( $self, $url, $acct ) = @_;
    my $node = $self->_hash_fetch( { name => '_pages', key => $url } );
    die "load_page_node takes a url string" unless $url && ! ref( $url );
    unless( $node ) {
	my $file_loc = "$ENV{YOTE_ROOT}/html/$url";
	my $buf = '';
	if( -e $file_loc ) {
	    open my $IN, '<', $file_loc;
	    while(<$IN>) {
		$buf .= $_;
	    }
	    close $IN;
	}
	$node = new Yote::RootObj( {
	    created_time => time,
	    last_saved   => time,
	    page_text    => $buf,
	    file_loc     => $file_loc,
				   } );
    }
    $node->set_working_text( $node->get_page_text() );
    return $node;
} #load_page_node

sub save_page_node {
    my( $self, $node, $acct ) = @_;
    die "Argument must be a node obj" unless $node && ref( $node ) eq 'Yote::RootObj';
    $node->set_page_text( $node->get_working_text() );
    open my $OUT, '>', $node->get_file_loc() or die "File Permissions Error";
    print $OUT $node->get_page_text();
    return "Saved";
} #save_page_node

1;

__END__


=head1 NAME

Yote::Util::Pages

=head1 SYNOPSIS

=head1 METHODS

=over 4

=item reload_from_file( page name )

=item load_page_node( url )

=item save_page_node( url )

=back

=head1 AUTHOR

Eric Wolf
coyocanid@gmail.com
http://madyote.com

=head1 LICENSE AND COPYRIGHT

Copyright (C) 2013 Eric Wolf

This module is free software; it can be used under the same terms as perl
itself.

=cut