ObjectView converted
matthewt [Mon, 26 Nov 2007 20:44:56 +0000 (20:44 +0000)]
17 files changed:
lib/Reaction/UI/RenderingContext/TT.pm
lib/Reaction/UI/ViewPort/DisplayField.pm
lib/Reaction/UI/Widget/DisplayField.pm
lib/Reaction/UI/Widget/DisplayField/Boolean.pm
lib/Reaction/UI/Widget/DisplayField/Collection.pm
lib/Reaction/UI/Widget/DisplayField/DateTime.pm
lib/Reaction/UI/Widget/DisplayField/RelatedObject.pm
lib/Reaction/UI/Widget/ObjectView.pm
lib/Reaction/UI/WidgetClass.pm
share/skin/default/layout/display_field/boolean.tt
share/skin/default/layout/display_field/collection.tt
share/skin/default/layout/display_field/date_time.tt
share/skin/default/layout/display_field/number.tt
share/skin/default/layout/display_field/related_object.tt
share/skin/default/layout/display_field/string.tt
share/skin/default/layout/display_field/text.tt
share/skin/default/layout/object_view.tt

index e925ff6..8308c0c 100644 (file)
@@ -62,21 +62,6 @@ class TT is RenderingContext, which {
       } grep { !/^_/ } keys %$args
     };
   
-    # if there's an _ key that's our current topic (decalarative syntax
-    # sees $_ as $_{_}) so build an iterator around it.
-  
-    # There's possibly a case for making everything an iterator but I think
-    # any fragment should only have a single multiple arg
-  
-    # we also create a 'pos' shortcut to content.pos for brevity
-  
-    if (my $topic = $args->{_}) {
-      my $iter = $self->iter_class->new(
-        $topic, $self
-      );
-      $tt_args->{content} = $iter;
-      $tt_args->{pos} = sub { $iter->pos };
-    }
     $body .= $lset->tt_view->include($fname, $tt_args);
 #warn "rendered ${fname}, body length now ".length($body)."\n";
   };
index b8269dc..3ef48af 100644 (file)
@@ -44,6 +44,8 @@ class DisplayField is 'Reaction::UI::ViewPort', which {
     return '';
   };
 
+  implements 'value_string' => as { shift->value };
+
 };
 
 1;
index a688c28..d881025 100644 (file)
@@ -3,9 +3,12 @@ package Reaction::UI::Widget::DisplayField;
 use Reaction::UI::WidgetClass;
 
 class DisplayField, which {
-  fragment widget [ qw/label value/ ];
-  fragment label  [ string { $_{viewport}->label } ];
-  fragment value  [ string { $_{viewport}->value } ];
+
+  before fragment widget {
+    arg label => $_{viewport}->label;
+    arg value => $_{viewport}->value_string;
+  };
+
 };
 
 1;
index 82f3b22..76ba41f 100644 (file)
@@ -3,7 +3,7 @@ package Reaction::UI::Widget::DisplayField::Boolean;
 use Reaction::UI::WidgetClass;
 
 class Boolean is 'Reaction::UI::Widget::DisplayField', which {
-  fragment value  [ string { $_{viewport}->value_string } ];
+  
 };
 
 1;
index bcac990..40bedd3 100644 (file)
@@ -3,10 +3,19 @@ package Reaction::UI::Widget::DisplayField::Collection;
 use Reaction::UI::WidgetClass;
 
 class Collection, which {
-  fragment widget [ qw/label list/ ];
-  fragment label  [ string { $_{viewport}->label } ];
-  fragment list   [ item => over func('viewport', 'value_names') ];
-  fragment item   [ string { $_ } ];
+
+  before fragment widget {
+    arg 'label' => $_{viewport}->label;
+  };
+
+  implements fragment list {
+    render 'item' => over $_{viewport}->value_names;
+  };
+
+  implements fragment item {
+    arg 'name' => $_;
+  };
+
 };
 
 1;
index 8f44d9e..35b2651 100644 (file)
@@ -3,7 +3,7 @@ package Reaction::UI::Widget::DisplayField::DateTime;
 use Reaction::UI::WidgetClass;
 
 class DateTime is 'Reaction::UI::Widget::DisplayField', which {
-  fragment value [ string { $_{viewport}->value_string } ];
+
 };
 
 1;
index a477ef7..f6aef23 100644 (file)
@@ -3,7 +3,7 @@ package Reaction::UI::Widget::DisplayField::RelatedObject;
 use Reaction::UI::WidgetClass;
 
 class RelatedObject is 'Reaction::UI::Widget::DisplayField', which {
-  fragment value  [ string { $_{viewport}->value_string } ];
+
 };
 
 1;
index 6da4c34..a3455ba 100644 (file)
@@ -3,9 +3,15 @@ package Reaction::UI::Widget::ObjectView;
 use Reaction::UI::WidgetClass;
 
 class ObjectView, which {
-  fragment widget [ 'field_list' ];
-  fragment field_list [ field => over func('viewport', 'ordered_fields')   ];
-  fragment field  [ 'viewport' ];
+
+  implements fragment field_list {
+    render field => over $_{viewport}->ordered_fields;
+  };
+
+  implements fragment field {
+    render 'viewport';
+  };
+
 };
 
 1;
index beebe41..ac6feaf 100644 (file)
@@ -85,7 +85,7 @@ class WidgetClass, which {
 
   implements handle_fragment => as {
     my ($self, $name, $proto, $code) = @_;
-warn ($self, $name, $code);
+#warn ($self, $name, $code);
     return ("_fragment_${name}" => $self->wrap_as_fragment($code));
   };
 
@@ -102,6 +102,7 @@ warn ($self, $name, $code);
       local $current_widget = $_[0];
       local $do_render = $_[1];
       local *_ = \%{$_[2]};
+      local $_ = $_[2]->{_};
       local $new_args = $_[3];
       $code->(@_);
     };
index 74e02e4..d531087 100644 (file)
@@ -1,13 +1,14 @@
 =for layout widget
 
-[% content %]
+[% label_layout %]
+[% value_layout %]
 
-=for layout label
+=for layout label_layout
 
-<strong > [% content | html %]: </strong>
+<strong > [% label %]: </strong>
 
-=for layout value
+=for layout value_layout
 
-[% content | html %]
+[% value %]
 
-=cut
\ No newline at end of file
+=cut
index 3bc65a9..47244e7 100644 (file)
@@ -1,20 +1,20 @@
 =for layout widget
 
-[% label %]
+[% label_box %]
 [% list  %]
 
-=for layout label
+=for layout label_box
 
-<strong > [% content | html %]: </strong>
+<strong> [% label %]: </strong>
 
 =for layout list
 
 <ul>
-[% content %]
+[% call_next %]
 </ul>
 
 =for layout item
 
-<li>[% content | html %]</li>
+<li>[% name %]</li>
 
 =cut
index 1fcad1a..d531087 100644 (file)
@@ -1,13 +1,14 @@
 =for layout widget
 
-[% content %]
+[% label_layout %]
+[% value_layout %]
 
-=for layout label
+=for layout label_layout
 
-<strong> [% content | html %]: </strong>
+<strong > [% label %]: </strong>
 
-=for layout value
+=for layout value_layout
 
-[% content | html %]
+[% value %]
 
 =cut
index 1fcad1a..d531087 100644 (file)
@@ -1,13 +1,14 @@
 =for layout widget
 
-[% content %]
+[% label_layout %]
+[% value_layout %]
 
-=for layout label
+=for layout label_layout
 
-<strong> [% content | html %]: </strong>
+<strong > [% label %]: </strong>
 
-=for layout value
+=for layout value_layout
 
-[% content | html %]
+[% value %]
 
 =cut
index 1fcad1a..d531087 100644 (file)
@@ -1,13 +1,14 @@
 =for layout widget
 
-[% content %]
+[% label_layout %]
+[% value_layout %]
 
-=for layout label
+=for layout label_layout
 
-<strong> [% content | html %]: </strong>
+<strong > [% label %]: </strong>
 
-=for layout value
+=for layout value_layout
 
-[% content | html %]
+[% value %]
 
 =cut
index 831cad4..d531087 100644 (file)
@@ -1,13 +1,14 @@
 =for layout widget
 
-[% content %]
+[% label_layout %]
+[% value_layout %]
 
-=for layout label
+=for layout label_layout
 
-<strong> [% content | html %]: </strong>
+<strong > [% label %]: </strong>
 
-=for layout value
+=for layout value_layout
 
-[% content | html %]
+[% value %]
 
-=cut
\ No newline at end of file
+=cut
index 831cad4..d531087 100644 (file)
@@ -1,13 +1,14 @@
 =for layout widget
 
-[% content %]
+[% label_layout %]
+[% value_layout %]
 
-=for layout label
+=for layout label_layout
 
-<strong> [% content | html %]: </strong>
+<strong > [% label %]: </strong>
 
-=for layout value
+=for layout value_layout
 
-[% content | html %]
+[% value %]
 
-=cut
\ No newline at end of file
+=cut
index 55b15bf..cec7b4d 100644 (file)
@@ -2,14 +2,8 @@
 
   [% field_list %]
 
-=for layout field_list
-
- <p> [% content %] </p>
-
-=cut
-
 =for layout field
 
-  [% content %] <br>
+  [% call_next %] <br>
 
 =cut