--- trunk/lib/Frey/Web/Design.pm 2008/07/14 23:44:18 129 +++ trunk/lib/Frey/Web/Design.pm 2008/07/16 21:23:27 149 @@ -1,7 +1,6 @@ package Frey::Web::Design; use Moose; -extends 'Frey'; -with 'Frey::Web::Item'; +extends 'Frey::Web::Item'; with 'Frey::Web::Button'; =head1 NAME @@ -12,18 +11,72 @@ use Data::Dump qw/dump/; -before 'main' => sub { - my $self = shift; +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_order' => ( + is => 'rw', + isa => 'HashRef[Int]', + default => sub { {} }, +); + +has 'label_editable' => ( + is => 'rw', + isa => 'HashRef[Frey::Web::Editable]', + default => sub { {} }, +); +=cut + +use Frey::Web::Editable; + +our $first_uuid; - $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' ); - }); +around 'field_label' => sub { + my ($next, $self, $name) = @_; + my $orig_label = $self->$next($name); + + my $label = $labels->{ $name } ||= $orig_label; + + 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;