view Lib/IMPL/Web/TT/Control.pm @ 201:0c018a247c8a

Reworked REST resource classes to be more transparent and intuitive
author sergey
date Tue, 24 Apr 2012 19:52:07 +0400
parents 4d0e1962161c
children
line wrap: on
line source

package IMPL::Web::TT::Control;

use parent qw(IMPL::Web::TT::Collection);


use IMPL::Class::Property;
use IMPL::DOM::Property qw(_dom);

__PACKAGE__->PassThroughArgs;

BEGIN {
    public property controlClass => prop_all;
    public property template => prop_all;
    public property id => prop_all;
}

my $nextId = 1;

sub CTOR {
    my ($this,%args) = @_;
    
    if ($this->document) {
        # load a template
        $this->template( $this->document->context->template($args{template})) if ($args{template} and not ref $args{template});
    }
    #$this->template($args{template}) if $args{template};

    $this->id($this->nodeName . '-' . $nextId++);
    $this->controlClass('Control') unless $this->controlClass;
}

sub Render {
    my ($this) = @_;
    
    if ($this->document) {
        if ($this->template) {
            return $this->document->context->include($this->template,{ this => $this }) ;
        } elsif ($this->document->presenter) {
            return $this->document->presenter->print($this);
        } else {
            return $this->toString().": ".$this->controlClass() . ": ".$this->path;
        }
    }
}
1;