aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorgroditi <groditi@03d0b0b2-0e1a-0410-a411-fdb2f4bd65d7>2008-10-11 20:35:20 +0000
committergroditi <groditi@03d0b0b2-0e1a-0410-a411-fdb2f4bd65d7>2008-10-11 20:35:20 +0000
commit36fb39fa70212f2b88ea25cc24946b916b465987 (patch)
tree91af7b2c97f1af5eabca6d7cc21661fac4691fae
parent6c3805b0b5072911989692f2e36c112476479327 (diff)
downloadreaction-36fb39fa70212f2b88ea25cc24946b916b465987.tar.gz
reaction-36fb39fa70212f2b88ea25cc24946b916b465987.zip
uri vp, widget, template
-rw-r--r--lib/Reaction/UI/ViewPort/URI.pm12
-rw-r--r--lib/Reaction/UI/Widget/URI.pm28
-rw-r--r--share/skin/base/layout/uri.tt12
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