#!/usr/bin/perl
package HTML::Mason;

#
# Sample Mason handler.
#
use HTML::Mason;
use strict;

# Uncomment the next line if you plan to use the Mason previewer.
#use HTML::Mason::Preview;

# List of modules that you want to use from components (see Admin
# manual for details)
#{  package HTML::Mason::Commands;
#   use CGI;
#   use Apache::Session::File;
#}

# Create Mason objects
#
my $parser = new HTML::Mason::Parser;
my $interp = new HTML::Mason::Interp (parser=>$parser,
                                      comp_root=>'<component root>',
                                      data_dir=>'<data directory>');
my $ah = new HTML::Mason::ApacheHandler (interp=>$interp);

# Activate the following if running httpd as root (the normal case).
# Resets ownership of all files created by Mason at startup. Change
# these to match your server's 'User' and 'Group'.
#
#chown ( [getpwnam('nobody')]->[2], [getgrnam('nobody')]->[2],
#        $interp->files_written );

sub handler
{
    my ($r) = @_;

    # If you plan to intermix images in the same directory as
    # components, activate the following to prevent Mason from
    # evaluating image files as components.
    #
    #return -1 if $r->content_type && $r->content_type !~ m|^text/|io;
    
    # This block of code can be enabled to create a session-hash that every
    # component can access.  This is useful for maintaining state across
    # multiple requests.  The Apache::Session module is required.
    #
    #my %session;
    #my $cookie = $r->header_in('Cookie');
    #$cookie =~ s/SESSION_ID=(\w*)/$1/;
    #tie %session, 'Apache::Session::File', $cookie, {'Directory' => '/tmp/session'};
    #$r->header_out("Set-Cookie" => "SESSION_ID=$session{_session_id};") if ( !$cookie );
    
    # This creates a global called %session that is accessible in all components.
    # Feel free to rename this as needed.
    #
    #local *HTML::Mason::Commands::session = \%session;
    
    $ah->handle_request($r);
    
    #untie %HTML::Mason::Commands::session;
}

1;
