[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