diff options
author | groditi <groditi@03d0b0b2-0e1a-0410-a411-fdb2f4bd65d7> | 2008-10-11 20:35:20 +0000 |
---|---|---|
committer | groditi <groditi@03d0b0b2-0e1a-0410-a411-fdb2f4bd65d7> | 2008-10-11 20:35:20 +0000 |
commit | 36fb39fa70212f2b88ea25cc24946b916b465987 (patch) | |
tree | 91af7b2c97f1af5eabca6d7cc21661fac4691fae | |
parent | 6c3805b0b5072911989692f2e36c112476479327 (diff) | |
download | reaction-36fb39fa70212f2b88ea25cc24946b916b465987.tar.gz reaction-36fb39fa70212f2b88ea25cc24946b916b465987.zip |
uri vp, widget, template
-rw-r--r-- | lib/Reaction/UI/ViewPort/URI.pm | 12 | ||||
-rw-r--r-- | lib/Reaction/UI/Widget/URI.pm | 28 | ||||
-rw-r--r-- | share/skin/base/layout/uri.tt | 12 |
3 files changed, 52 insertions, 0 deletions
diff --git a/lib/Reaction/UI/ViewPort/URI.pm b/lib/Reaction/UI/ViewPort/URI.pm new file mode 100644 index 0000000..d07adf2 --- /dev/null +++ b/lib/Reaction/UI/ViewPort/URI.pm @@ -0,0 +1,12 @@ +package Reaction::UI::ViewPort::URI; + +use Reaction::Class; +use namespace::clean -except => [ qw(meta) ]; +extends 'Reaction::UI::ViewPort'; + +has uri => ( is => 'rw', isa => 'URI', required => 1); +has display => ( is => 'rw' ); + +__PACKAGE__->meta->make_immutable; + +1; diff --git a/lib/Reaction/UI/Widget/URI.pm b/lib/Reaction/UI/Widget/URI.pm new file mode 100644 index 0000000..db35a08 --- /dev/null +++ b/lib/Reaction/UI/Widget/URI.pm @@ -0,0 +1,28 @@ +package Reaction::UI::Widget::URI; + +use Reaction::UI::WidgetClass; +use namespace::clean -except => [ qw(meta) ]; + +before fragment widget { + arg uri => $_{viewport}->uri; +}; + +implements fragment display_fragment { + my $vp = $_{viewport}; + return unless $vp->has_display; + my $display = $vp->display; + if( blessed($display) && $display->isa('Reaction::UI::ViewPort')){ + arg '_' => $display; + render 'viewport'; + } else { + arg string_value => $display; + render 'display_string'; + } +}; + +__PACKAGE__->meta->make_immutable; + + +1; + +__END__; diff --git a/share/skin/base/layout/uri.tt b/share/skin/base/layout/uri.tt new file mode 100644 index 0000000..b1c9831 --- /dev/null +++ b/share/skin/base/layout/uri.tt @@ -0,0 +1,12 @@ + +=widget URI + +=for layout widget + +<a href="[% uri %]">[% display_fragment %]</a> + +=for layout display_string + +[% string_value %] + +=cut |