From 36fb39fa70212f2b88ea25cc24946b916b465987 Mon Sep 17 00:00:00 2001 From: groditi Date: Sat, 11 Oct 2008 20:35:20 +0000 Subject: uri vp, widget, template --- lib/Reaction/UI/ViewPort/URI.pm | 12 ++++++++++++ lib/Reaction/UI/Widget/URI.pm | 28 ++++++++++++++++++++++++++++ share/skin/base/layout/uri.tt | 12 ++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 lib/Reaction/UI/ViewPort/URI.pm create mode 100644 lib/Reaction/UI/Widget/URI.pm create mode 100644 share/skin/base/layout/uri.tt 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 + +[% display_fragment %] + +=for layout display_string + +[% string_value %] + +=cut -- cgit v1.2.3-54-g00ecf