[Jifty-commit] r7507 - jifty/trunk/lib/Jifty/Web/Form/Field

Jifty commits jifty-commit at lists.jifty.org
Tue Oct 6 00:09:21 EDT 2009


Author: sartak
Date: Tue Oct  6 00:09:19 2009
New Revision: 7507

Modified:
   jifty/trunk/lib/Jifty/Web/Form/Field/Select.pm

Log:
Refactor Select's render_widget so it can be extended

Modified: jifty/trunk/lib/Jifty/Web/Form/Field/Select.pm
==============================================================================
--- jifty/trunk/lib/Jifty/Web/Form/Field/Select.pm	(original)
+++ jifty/trunk/lib/Jifty/Web/Form/Field/Select.pm	Tue Oct  6 00:09:19 2009
@@ -17,38 +17,59 @@
 
 =cut
 
-sub render_widget {
+sub _render_select_begin {
     my $self  = shift;
-    my $field = qq! <select !;
-    $field .= qq! name="@{[ $self->input_name ]}"!;
-    $field .= qq! id="@{[ $self->element_id ]}"!;
-    $field .= qq! title="@{[ $self->title ]}"! if ($self->title);
-    $field .= $self->_widget_class;
-    $field .= $self->javascript;
-    $field .= q! multiple="multiple"! if $self->multiple;
-    $field .= qq!      >\n!;
+    my $rendered = qq! <select !;
+    $rendered .= qq! name="@{[ $self->input_name ]}"!;
+    $rendered .= qq! id="@{[ $self->element_id ]}"!;
+    $rendered .= qq! title="@{[ $self->title ]}"! if ($self->title);
+    $rendered .= $self->_widget_class;
+    $rendered .= $self->javascript;
+    $rendered .= q! multiple="multiple"! if $self->multiple;
+    $rendered .= qq!      >\n!;
+    return $rendered;
+}
+
+sub _render_select_values {
+    my $self = shift;
+    my $rendered = '';
+
     my $current_value = $self->current_value;
     for my $opt ($self->available_values) {
         my $display = ref($opt) ? $opt->{'display'} : $opt;
         my $value   = ref($opt) ? $opt->{'value'} : $opt;
         $value = "" unless defined $value;
-        $field .= qq!<option value="@{[ Jifty->web->escape($value) ]}"!;
-        $field .= qq! selected="selected"!
+        $rendered .= qq!<option value="@{[ Jifty->web->escape($value) ]}"!;
+        $rendered .= qq! selected="selected"!
           if defined $current_value
               && (
                   ref $current_value eq 'ARRAY'
                   ? ( grep { $value eq $_ } @$current_value )
                   : $current_value eq $value );
-        $field .= qq!>!;
-        $field .= Jifty->web->escape(_($display)) if defined $display;
-        $field .= qq!</option>\n!;
-    } 
-    $field .= qq!</select>\n!;
+        $rendered .= qq!>!;
+        $rendered .= Jifty->web->escape(_($display)) if defined $display;
+        $rendered .= qq!</option>\n!;
+    }
+
+    return $rendered;
+}
+
+sub _render_select_end {
+    my $self  = shift;
+    return qq!</select>\n!;
+}
+
+sub render_widget {
+    my $self = shift;
+
+    my $field = $self->_render_select_begin;
+    $field .= $self->_render_select_values;
+    $field .= $self->_render_select_end;
+
     Jifty->web->out($field);
     '';
 }
 
-
 =head2 render_value
 
 Rather than rendering the "key" side of our value for this field, render


More information about the Jifty-commit mailing list