#$Id: Component.pm 303 2008-08-24 16:09:48Z zag $

package HTML::WebDAO::Component;
use HTML::WebDAO::Base;
use base qw(HTML::WebDAO::Element);
use strict 'vars';
use Data::Dumper;

sub _url_method {
    my $self   = shift;
    my $method = shift;
    my $ref;
    $ref->{path} = join '/' => $self->__path2me, $method;
    my %args = @_;
    $ref->{pars} = \%args if @_;
    my $res;
    $self->SendEvent(
        "_sess_servise",
        {
            funct  => 'geturl',
            par    => $ref,
            result => \$res
        }
    );
    return $res;

}

sub url_method {
    my $self   = shift;
    my $method = shift;
    my @upath  = ();
    push @upath, $self->__path2me if $self->__path2me;
    if ( defined $self->__extra_path ) {
        my $extr = $self->__extra_path;
        $extr = [$extr] unless ( ref($extr) eq 'ARRAY' );
        push @upath, @$extr;
    }
    push @upath, $method if defined $method;
    my $sess = $self->getEngine->_session;
    if ( $sess->set_absolute_url() ) {
        unshift @upath, $sess->Cgi_env->{base_url};
    }

    my $path = join '/' => @upath;
    my $str = '';
    if (@_) {
        my %args = @_;
        my @pars;
        while ( my ( $key, $val ) = each %args ) {
            push @pars, "$key=$val";
        }
        $str .= "?" . join "&" => @pars;
    }
    return $path . $str;
}

sub response {
    my $self = shift;
    return $self->getEngine->response;
}
1;