################################################################################### # # Embperl - Copyright (c) 1997-2005 Gerald Richter / ecos gmbh www.ecos.de # # You may distribute under the terms of either the GNU General Public # License or the Artistic License, as specified in the Perl README file. # # THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. # # $Id$ # ################################################################################### package Embperl::Form::Control::grid ; use strict ; use base 'Embperl::Form::ControlMultValue' ; use vars qw{%fdat $epreq} ; use Embperl::Inline ; # --------------------------------------------------------------------------- # # new - create a new control # sub new { my ($class, $args) = @_ ; my $self = Embperl::Form::ControlMultValue -> new($args) ; bless $self, $class ; $self -> init ; return $self ; } # --------------------------------------------------------------------------- # # init - init the new control # sub init { my ($self) = @_ ; $self -> {header_bottom} = 10 if (!exists ($self -> {header_bottom})) ; $self -> {width} = 1 ; my $form = $self -> form ; $form -> new_controls ($self -> {fields}, $form -> {options}) ; return $self ; } # ------------------------------------------------------------------------------------------ # # init_data - daten aufteilen # sub init_data { my ($self, $req) = @_ ; my $ldap = $req->{ldap}; my $name = $self->{name} ; my @entries = split("\t",$fdat{$name}); my $fields = $self -> {fields} ; my @data; my $i = 0 ; my $j ; foreach my $entry (@entries) { @data = ecos::LdapBase -> splitAttrValue($entry); my $rowno = shift @data ; $j = 0 ; foreach my $field (@$fields) { $fdat{"$name-$field->{name}-$i"} = $data[$j++] ; } $i++ ; } $fdat{"$name-max"} = $i?$i:1; } # ------------------------------------------------------------------------------------------ # # prepare_fdat - daten zusammenfuehren # sub prepare_fdat { my ($self, $req) = @_ ; my $ldap = $req->{ldap}; my $name = $self->{name} ; my $fields = $self -> {fields} ; my $max = $fdat{"$name-max"} ; my @rows; my $j ; my $val ; for (my $i = 0; $i < $max; $i++) { $j = 0 ; my @data = ($i+1) ; foreach my $field (@$fields) { push @data, $fdat{"$name-$field->{name}-$i"} ; } $val = ecos::LdapBase -> joinAttrValue(\@data) ; push @rows, $val if ($val ne '') ; } $fdat{$name} = \@rows ; } 1 ; __EMBPERL__ [# --------------------------------------------------------------------------- # # show - output the control #] [$ sub show ($self, $req) my $name = $self -> {name} ; my $span = ($self->{width_percent}) ; my $nsprefix = $self -> form -> {jsnamespace} ; my $jsname = $name ; $jsname =~ s/[^a-zA-Z0-9]/_/g ; $jsname .= 'Grid' ; my $max = $fdat{"$name-max"} ; $]
| [+ $self->{text} +] |
|