[Jifty-commit] jifty branch, jquery_with_ui, updated. 3df4adc62988c3b8c40dee215d0fcf8654a72db1

Jifty commits jifty-commit at lists.jifty.org
Wed Jan 27 06:46:28 EST 2010


The branch, jquery_with_ui has been updated
       via  3df4adc62988c3b8c40dee215d0fcf8654a72db1 (commit)
      from  031a40025a71f3c3969929d3570ee3d9e54827f6 (commit)

Summary of changes:
 lib/Jifty/Web/Form/Field/OrderedList.pm |  102 +++++++++++++++++++++++++++++++
 1 files changed, 102 insertions(+), 0 deletions(-)
 create mode 100644 lib/Jifty/Web/Form/Field/OrderedList.pm

- Log -----------------------------------------------------------------
commit 3df4adc62988c3b8c40dee215d0fcf8654a72db1
Author: sunnavy <sunnavy at bestpractical.com>
Date:   Wed Jan 27 19:46:12 2010 +0800

    OrderedList field

diff --git a/lib/Jifty/Web/Form/Field/OrderedList.pm b/lib/Jifty/Web/Form/Field/OrderedList.pm
new file mode 100644
index 0000000..2eb134b
--- /dev/null
+++ b/lib/Jifty/Web/Form/Field/OrderedList.pm
@@ -0,0 +1,102 @@
+use warnings;
+use strict;
+
+package Jifty::Web::Form::Field::OrderedList;
+
+use base qw/Jifty::Web::Form::Field/;
+__PACKAGE__->mk_accessors('with_select');
+sub accessors {
+    shift->SUPER::accessors(),'with_select', 
+}
+
+=head1 NAME
+
+Jifty::Web::Form::Field::OrderedList - Ordered list field
+
+=head1 DESCRIPTION
+
+Ordered list field, if with_select => 1, then select functionality will be
+added to.
+
+=head1 METHODS
+
+=head2 render_widget
+
+Renders the select widget.
+
+=cut
+
+sub render_widget {
+    my $self = shift;
+
+    my $current_value = $self->current_value;
+    $current_value = [ $current_value ] unless ref $current_value eq 'ARRAY';
+
+    my $unselected    = [];
+    my %selected;
+
+    for my $opt ( $self->available_values ) {
+        my $display = ref($opt) ? $opt->{'display'} : $opt;
+        my $value   = ref($opt) ? $opt->{'value'}   : $opt;
+        if ( grep { $value eq $_ } @$current_value ) {
+            $selected{$value} = $display;
+        }
+        else {
+            push @$unselected, { display => $display, value => $value };
+        }
+    }
+
+    my $field = qq!<div class="ordered-list-container">!;
+
+    if ($self->with_select) {
+        $field .= qq!<div class="unselected">!;
+        $field .= qq!<ul class="unselected">!;
+        $field .= qq!<li class="head">!;
+        $field .= _('Unselected');
+        $field .= qq!</li>!;
+
+        for my $opt (@$unselected) {
+            $field .= qq!<li>!;
+            $field .= Jifty->web->escape( _( $opt->{display} ) );
+            $field .=
+qq!<input disabled="disabled" class="hidden value" value="@{[ Jifty->web->escape($opt->{value}) ]}"!;
+            $field .= qq!</li>!;
+        }
+        $field .= qq!</ul></div>!;
+    }
+
+    $field .= qq!<div class="selected">!;
+    $field .= qq!<ul class="selected">!;
+    if ( $self->with_select ) {
+        $field .= qq!<li class="head">!;
+        $field .= _('Selected');
+        $field .= qq!</li>!;
+    }
+    for my $value (@$current_value) {
+        $field .= qq!<li>!;
+        $field .= Jifty->web->escape( _( $selected{$value} ) );
+        $field .= qq!<input disabled="disabled" class="hidden value" value="@{[ Jifty->web->escape($value) ]}"!;
+        $field .= qq!</li>!;
+    }
+    $field .= qq!</ul></div>!;
+
+    # the real submit one
+    $field .= qq!<div class="hidden">!;
+    $field .= qq!<select class="submit hidden" multiple="multiple"!;
+    $field .= qq! name="@{[ $self->input_name ]}"!;
+    $field .= qq! id="@{[ $self->element_id ]}"!;
+    $field .= qq! >!;
+    for my $value (@$current_value) {
+        $field .= qq!<option value="@{[ Jifty->web->escape($value) ]}"!;
+        $field .= qq!selected="selected" >!;
+        $field .= Jifty->web->escape( _( $selected{$value} ) );
+        $field .= qq!</option>\n!;
+    }
+    $field .= qq!</select></div>!;
+
+    $field .= qq!</div>!;
+    Jifty->web->out($field);
+    '';
+}
+
+1;

-----------------------------------------------------------------------


More information about the Jifty-commit mailing list