--- trunk/lib/Frey/Web/Design.pm 2008/07/16 21:21:49 148
+++ trunk/lib/Frey/Web/Design.pm 2008/07/16 21:23:27 149
@@ -11,41 +11,72 @@
use Data::Dump qw/dump/;
+our $labels;
+our $label_order;
+our $label_editable;
+our $label_count = 0;
+
+=for removed
+
has 'labels' => (
is => 'rw',
isa => 'HashRef[Str]',
default => sub { {} },
);
-has 'label_count' => (
+has 'label_order' => (
is => 'rw',
- isa => 'Int',
- default => 0,
+ isa => 'HashRef[Int]',
+ default => sub { {} },
);
-around 'field_label' => sub {
- my ($next, $self, $name) = @_;
- my $label = $self->$next($name);
+has 'label_editable' => (
+ is => 'rw',
+ isa => 'HashRef[Frey::Web::Editable]',
+ default => sub { {} },
+);
+=cut
- $self->labels->{ $name } = $label;
- $self->label_count( $self->label_count + 1 );
+use Frey::Web::Editable;
- $label = '[←]' . $label . '[→]';
- return $label;
-};
+our $first_uuid;
+
+around 'field_label' => sub {
+ my ($next, $self, $name) = @_;
+ my $orig_label = $self->$next($name);
-before 'main' => sub {
- my $self = shift;
+ my $label = $labels->{ $name } ||= $orig_label;
- $self->add_button( 'Finish design' => sub {
- my $f = shift;
- my $hash = $self->set_from_hash($f);
- warn "## Add hash ", $self->uuid, " => ",dump( $hash, $f );
-
- $self->render_as( 'view' );
- $self->remove_button( 'Finish design' );
- });
+ if ( ! defined $label_order->{ $name } ) {
+ warn "field_label $label_count $name -> $label\n";
+ $label_order->{ $name } = $label_count++;
+ $label_editable->{ $name } = Frey::Web::Editable->new(
+ name => $name,
+ value => $label,
+ render_as => 'edit',
+ save_callback => sub {
+ my ( $self, $val ) = @_;
+ $labels->{ $name } = $val;
+ # XXX we really need this since we are in continutation and have old value!
+ $self->value( $val );
+ warn "## saved $val new labels = ",dump( $labels, $self->value );
+ }
+ );
+ }
+
+ warn "around field_label ", $self->uuid, ' ', $label_order->{ $name }, ' ', $label_count, dump( $labels ), $/;
+
+ $first_uuid ||= $self->uuid;
+ return $label unless $first_uuid eq $self->uuid;
+
+ my $edit = $label_editable->{ $name };
+
+ my $html;
+ $html .= qq|←| if $label_order->{ $name } > 0 ;
+ $html .= $edit->process( Frey::Request->params );
+ $html .= qq|→|;
+ return $html;
};
1;