CGI-Builder

 view release on metacpan or  search on metacpan

lib/CGI/Builder.pm  view on Meta::CPAN

   ; defined $p && length $p || croak 'No page_name name passed, died'
   ; $s->page_name($p)
   ; $s->PHASE(SWITCH_HANDLER)
   ; my $shm = $s->switch_handler_map
   ; my $SH  = $$shm{$p} || $s->can("SH_$p")
   ; $s->$SH(@_) if $SH
   ; if ($s->PHASE < PRE_PAGE)
      { $s->PHASE(PRE_PAGE)
      ; $s->$exec('pre_page')
      }
   ; if ($s->PHASE < PAGE_HANDLER)
      { $s->PHASE(PAGE_HANDLER)
      ; my $phm = $s->page_handler_map
      ; my $PH  =  $$phm{$p}        || $s->can("PH_$p")
                || ! $s->page_content_check
                && ($$phm{AUTOLOAD} || $s->can('PH_AUTOLOAD'))
      ; $s->$PH(@_) if $PH
      }
   }

; sub get_page_name
   { my $s = shift
   ; my $p = $s->cgi->param($s->cgi_page_param)
   ; $s->page_name($p) if defined($p) && length($p)
   }

; sub page_content_check
   { length $_[0]->page_content
   }
   
; sub send_header
   { print $_[0]->cgi->header( %{$_[0]->header} )
   }

; sub send_content
   { my $pc = $_[0]->page_content
   ; if ( ref $pc eq 'CODE' )
      { $_[0]->$pc
      }
     elsif ( ref $pc eq 'SCALAR' )
      { print $$pc
      }
     elsif ( not ref $pc )
      { print $pc
      }
   }

; sub redirect
   { my ($s, $url) = @_
   ; $s->PHASE < GET_PAGE        && croak 'Too early to call redirect(), died'
   ; $s->PHASE > RESPONSE        && croak 'Too late to call redirect(), died'
   ; defined $url && length $url || croak 'No URL passed, died'
   ; $s->PHASE(REDIR)
   ; $s->header(-url => $url)
   ; print $s->cgi->redirect( %{$s->header} )
   }

; sub die_handler
   { my ( $s, $msg ) = @_
   ; for ( my $i = 1
         ; my $sub = (caller($i))[3]
         ; $i++
         )
      { die $msg if $sub eq '(eval)' && (caller($i+1))[3]
      }
   ; die sprintf 'Fatal error in phase %s for page "%s": %s'
               , $s->phase
               , $s->page_name
               , $msg
   }
   
; 1

__END__

=pod

=head1 NAME

CGI::Builder - Framework to build simple or complex web-apps

=head1 VERSION 1.36

Included in CGI-Builder 1.36 distribution.

The latest versions changes are reported in the F<Changes> file in this distribution.

=head1 INSTALLATION

=over

=item Prerequisites

    Perl version >= 5.6.1
    OOTools      >= 2.1
    IO::Util     >= 1.46

=item CPAN

    perl -MCPAN -e 'install CGI::Builder'

You have also the possibility to use the Bundle to install all the extensions and prerequisites of the CBF in just one step. Please, notice that the Bundle will install A LOT of modules that you might not need, so use it specially if you want to exte...

    perl -MCPAN -e 'install Bundle::CGI::Builder::Complete'

=item Standard installation

From the directory where this file is located, type:

    perl Makefile.PL
    make
    make test
    make install

=back

=head1 SYNOPSIS

    # define your build
    use CGI::Builder
    qw| CGI::Builder::AnyExtension
        AnySuperClass
      |;



( run in 1.400 second using v1.01-cache-2.11-cpan-97f6503c9c8 )