--- 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;