Author: richter
Date: Sun Jul 22 12:10:14 2007
New Revision: 558530
URL: http://svn.apache.org/viewvc?view=rev&rev=558530
Log:
- New grid implementation
- sub form bug fixes
- radio button with ignore case option
Modified:
perl/embperl/trunk/Embperl/Form.pm
perl/embperl/trunk/Embperl/Form/Control.pm
perl/embperl/trunk/Embperl/Form/Control/grid.pm
perl/embperl/trunk/Embperl/Form/Control/radio.pm
perl/embperl/trunk/Embperl/Form/Control/selectdyn.pm
perl/embperl/trunk/Embperl/Form/Control/tabs.pm
perl/embperl/trunk/Embperl/Form/ControlMultValue.pm
Modified: perl/embperl/trunk/Embperl/Form.pm
URL:
http://svn.apache.org/viewvc/perl/embperl/trunk/Embperl/Form.pm?view=diff&rev=558530&r1=558529&r2=558530
==============================================================================
--- perl/embperl/trunk/Embperl/Form.pm (original)
+++ perl/embperl/trunk/Embperl/Form.pm Sun Jul 22 12:10:14 2007
@@ -51,6 +51,7 @@
my $self = ref $class?$class:{} ;
$self -> {controls} = $controls ;
+ $self -> {options} = $options ;
$self -> {id} = $id ;
$self -> {parentptr} = $parentptr ;
$self -> {formname} = $options -> {formname} || 'topform' ;
@@ -69,6 +70,19 @@
$validate_rules = $self -> {validate_rules} = [] ;
}
+ if ($toplevel)
+ {
+ $self -> {fields2empty} = [] ;
+ $self -> {init_data} = [] ;
+ $self -> {prepare_fdat} = [] ;
+ }
+ else
+ {
+ $self -> {fields2empty} = $self -> parent_form -> {fields2empty} ;
+ $self -> {init_data} = $self -> parent_form -> {init_data} ;
+ $self -> {prepare_fdat} = $self -> parent_form -> {prepare_fdat} ;
+ }
+
$self -> new_controls ($controls, $options, undef, $id, $validate_rules,
$options -> {masks}, $options -> {defaults}) ;
$self -> {noframe} = 1 if ($controls && @$controls > 0 &&
@@ -79,11 +93,6 @@
{
my $epf = $self -> {validate} = Embperl::Form::Validate -> new
($validate_rules, $self -> {formname}) if ($self -> {validate_rules}) ;
$self -> add_code_at_bottom ($epf -> get_script_code) ;
- $self -> {fields2empty} = [] ;
- }
- else
- {
- $self -> {fields2empty} = $self -> parent_form -> {fields2empty} ;
}
return $self ;
@@ -243,6 +252,9 @@
{
my $type = $control -> {type} || ($control ->
{name}?'input':'blank') ;
$control = $self -> new_object ($packages, $type, $control) ;
+ push @{$self -> {init_data}}, $control if ($control -> can
('init_data')) ;
+ push @{$self -> {prepare_fdat}}, $control if ($control -> can
('prepare_fdat')) ;
+
}
next if ($control -> is_disabled) ;
@@ -316,9 +328,10 @@
sub layout
{
- my ($self, $controls) = @_ ;
+ my ($self, $controls, $level) = @_ ;
$controls ||= $self -> {controls} ;
+ $level ||= 1 ;
my $x = 0 ;
my $max_x = 100 ;
@@ -335,7 +348,7 @@
if ($x < $max_x)
{
push @$line, Embperl::Form::Control::blank -> new (
- {width_percent => $max_x - $x }) ;
+ {width_percent => $max_x - $x, level => $level }) ;
}
push @lines, $line ;
$line = [] ;
@@ -345,6 +358,7 @@
push @$line, $control ;
$control -> {width_percent} = $width ;
$control -> {x_percent} = $x ;
+ $control -> {level} = $level ;
$x += $width ;
$num++ ;
$max_num = $num if ($num > $max_num) ;
@@ -367,7 +381,7 @@
foreach my $subcontrols (@{$control -> {sublines}})
{
next if (!$subcontrols) ;
- my $sublines = $self -> layout ($subcontrols) ;
+ my $sublines = $self -> layout ($subcontrols, $level + 1) ;
push @lines, @$sublines ;
}
}
@@ -401,20 +415,22 @@
my $lines = $self -> {layout} ;
my %n ;
my $activesubid ;
+ my @activesubid ;
$self -> show_controls_begin ($req, $activeid) ;
my $lineno = 0 ;
foreach my $line (@$lines)
{
- my $lineid = @$line &&
$line->[0]{parentid}?"$line->[0]{parentid}":'id' ;
+ my $linelevel = @$line?$line->[0]{level}:0 ;
+ my $lineid = @$line &&
$line->[0]{parentid}?"$line->[0]{parentid}":'id' ;
$n{$lineid} ||= 10 ;
- $self -> show_line_begin ($req, $lineno, "$lineid-$n{$lineid}",
$activesubid);
+ my $visible = $self -> show_line_begin ($req, $lineno,
"$lineid-$n{$lineid}", $activesubid[$linelevel-1] || $activeid);
foreach my $control (@$line)
{
- my $newactivesubid = $control -> get_active_id ($req) ;
+ my $newactivesubid = $visible?$control -> get_active_id ($req):'-'
;
$control -> show ($req);
- $activesubid = $newactivesubid if ($newactivesubid) ;
+ $activesubid[$control -> {level}] = $newactivesubid if
($newactivesubid) ;
if ($control -> {subobjects})
{
my @obj ;
@@ -422,7 +438,7 @@
foreach my $subobj (@{$control -> {subobjects}})
{
next if (!$subobj || !$subobj -> {controls} || [EMAIL
PROTECTED] -> {controls}}) ;
- $subobj -> show ($req, $activesubid) ;
+ $subobj -> show ($req, $activesubid[$control -> {level}]) ;
}
$control -> show_sub_end ($req) ;
}
@@ -457,13 +473,34 @@
# ---------------------------------------------------------------------------
#
-# init_data -
+# init_data - init fdat before showing
#
sub init_data
{
+ my ($self, $req) = @_ ;
+
+ foreach my $control (@{$self -> {init_data}})
+ {
+ $control -> init_data ($req) ;
+ }
+ }
+
+# ---------------------------------------------------------------------------
+#
+# prepare_fdat - change fdat after submit
+#
+sub prepare_fdat
+
+ {
+ my ($self, $req) = @_ ;
+
+ foreach my $control (@{$self -> {prepare_fdat}})
+ {
+ $control -> prepare_fdat ($req) ;
+ }
}
# ---------------------------------------------------------------------------
@@ -741,9 +778,10 @@
my $class = $lineno == 0?'cTableRow1':'cTableRow' ;
$]
<tr class="[+ $class +]" valign="[+ $self->{valign} +]"
- [$if $id $] id="[+ $id +]"[$endif$]
- [$if ($baseid eq $baseaid && $baseidn != $baseaidn) $] style="display:
none"[$endif$]
+ [$if $id $] id="[+ $id +]" [$endif$]
+ [$if ($activeid eq '-' || ($baseid eq $baseaid && $baseidn != $baseaidn))
$] style="display: none" [$endif$]
>
+[* return !($activeid eq '-' || ($baseid eq $baseaid && $baseidn !=
$baseaidn)) *]
[$endsub$]
[# ---------------------------------------------------------------------------
Modified: perl/embperl/trunk/Embperl/Form/Control.pm
URL:
http://svn.apache.org/viewvc/perl/embperl/trunk/Embperl/Form/Control.pm?view=diff&rev=558530&r1=558529&r2=558530
==============================================================================
--- perl/embperl/trunk/Embperl/Form/Control.pm (original)
+++ perl/embperl/trunk/Embperl/Form/Control.pm Sun Jul 22 12:10:14 2007
@@ -205,8 +205,8 @@
#]
[$sub show_label_icon ($self, $req) $]
-[$if $self -> {sublines} $] <img src="plus.png" style="vertical-align:
middle;">[$endif$]
-[$if $self -> {parentid} $] <img src="vline.png" style="vertical-align:
middle;">[$endif$]
+[$if $self -> {sublines} $] <img src="/images/plus.png"
style="vertical-align: middle;">[$endif$]
+[$if $self -> {parentid} $] <img src="/images/vline.png"
style="vertical-align: middle;">[$endif$]
[$endsub$]
[# ---------------------------------------------------------------------------
Modified: perl/embperl/trunk/Embperl/Form/Control/grid.pm
URL:
http://svn.apache.org/viewvc/perl/embperl/trunk/Embperl/Form/Control/grid.pm?view=diff&rev=558530&r1=558529&r2=558530
==============================================================================
--- perl/embperl/trunk/Embperl/Form/Control/grid.pm (original)
+++ perl/embperl/trunk/Embperl/Form/Control/grid.pm Sun Jul 22 12:10:14 2007
@@ -36,183 +36,98 @@
my $self = Embperl::Form::ControlMultValue -> new($args) ;
bless $self, $class ;
-
- $self -> {width} = 1 ;
+
+ $self -> init ;
+
return $self ;
}
-
# ---------------------------------------------------------------------------
#
-# get_on_show_code
-#
-# retuns js code that should be excuted when form becomes visible
+# init - init the new control
#
-sub get_on_show_code
- {
- my ($self) = @_ ;
- return "switch_grid('$self->{id}')";
- }
-
-# ---------------------------------------------------------------------------
+sub init
-sub get_object
{
- my $self = shift;
- return 'grid-entry';
- }
+ 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}) ;
-sub gridname
- {
- return 'cGridSimple';
+ return $self ;
}
#
------------------------------------------------------------------------------------------
+#
+# init_data - daten aufteilen
+#
-sub prepare_fdat
+sub init_data
{
- my $self = shift;
-
- my %list;
- my $gridname = $self->gridname;
- my $ldap = $epreq->{ldap};
+ my ($self, $req) = @_ ;
+
+ my $ldap = $req->{ldap};
+ my $name = $self->{name} ;
+ my @entries = split("\t",$fdat{$name});
+ my $fields = $self -> {fields} ;
-
- foreach my $entry (keys %fdat)
+ my @data;
+ my $i = 0 ;
+ my $j ;
+ foreach my $entry (@entries)
{
-
- next if ($entry !~ /_($gridname)_/);
-
- if( $entry =~ /^_grid_[^_]+_([^_]+)_(\d+)/ )
+ @data = ecos::LdapBase -> splitAttrValue($entry);
+ my $rowno = shift @data ;
+ $j = 0 ;
+ foreach my $field (@$fields)
{
-
- my $name = $1;
- my $index = $2;
- my $value = $fdat{$entry};
- $list{$index}->{$name} = $value;
- delete $fdat{$entry};
+ $fdat{"$name-$field->{name}-$i"} = $data[$j++] ;
}
+ $i++ ;
}
-
- my @entries;
-
- foreach my $index (keys %list)
- {
- my $entry = $list{$index};
- $entry->{address} =~ s/^--(.*)--$//;
- $entry->{param} =~ s/^--(.*)--$//;
- my $attr =
$ldap->joinAttrValue([$index,$entry->{active},$entry->{param}]);
- push @entries,$attr;
- }
-
- $fdat{$self->get_object} = join ("\t",@entries);
+ $fdat{"$name-max"} = $i?$i:1;
}
-
-
#
------------------------------------------------------------------------------------------
+#
+# prepare_fdat - daten zusammenfuehren
+#
-sub get_data
- {
- my $self = shift;
- my $ldap = $epreq->{ldap};
- my @data;
- my @create =
- (
- {
- param => '-- Bitte Daten eintragen --',
- active => 0,
- }
- ) ;
-
- my @entries = split("\t",$fdat{$self->get_object});
-
- foreach my $entry (@entries)
- {
- my ($index,$active,$param) = $ldap->splitAttrValue($entry);
- my $field = {};
- $param ||= $self->empty_line;
- $field->{active} = $active;
- $field->{param} = $param;
-
- push @data,$field;
- }
-
- @data = @create if (! @data);
-
- return ([EMAIL PROTECTED], [EMAIL PROTECTED]) ;
- }
-
-sub init
- {
- my ($self) = @_;
- $self -> {gridname} = $self -> gridname ;
- ($self -> {data}, $self -> {create}) = $self -> get_data ;
- }
-
-sub trclass { 'cGridData' }
-sub hiddentrclass { '' }
-sub gridname { 'default' }
-sub onSubmit {'post_grid_data();return 1;'};
-sub prepare_fdat {}
-#sub empty_line {' '}
-sub empty_line {' '}
-sub passmask {'****'}
-sub passmask {'****'}
-sub compare_pw_list
+sub prepare_fdat
{
- my ($self,$dn,$attrname,$attr2write,$attrindex,$savedindex) = @_;
- my $ldap = $epreq->{ldap};
- my $attrs = [$attrname];
- my $ldap_obj = $ldap->search($dn,'objectclass=*','base',$attrs);
- my $attrsaved = $ldap_obj->{$dn}->{$attrname};
- my %attrsaved;
- my %attr2write;
- my $passmask = $self->passmask;
-
-#print STDERR 'START';
-#print STDERR Data::Dumper::Dumper($attr2write);
-#print STDERR Data::Dumper::Dumper($attrsaved);
-
- foreach my $entry (@$attrsaved)
+ 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++)
{
- my @entry = $ldap->splitAttrValue($entry);
- my $index = $entry[$savedindex];
- my $pass = $entry[$attrindex];
- $attrsaved{$index} = $pass;
- }
-
-#print STDERR Data::Dumper::Dumper(\%attrsaved);
-
- my $i = 0;
- foreach my $entry (@$attr2write)
- {
- my @entry = $ldap->splitAttrValue($entry);
- my $index = $entry[$savedindex];
- my $pass = $entry[$attrindex];
- if ($pass eq $passmask)
+ $j = 0 ;
+ my @data = ($i+1) ;
+ foreach my $field (@$fields)
{
- $pass = $attrsaved{$index};
- $entry[$attrindex] = $pass;
+ push @data, $fdat{"$name-$field->{name}-$i"} ;
}
- my $entry2write = $ldap->joinAttrValue([EMAIL PROTECTED]);
- $attr2write->[$i] = $entry2write;
- $i++;
+ $val = ecos::LdapBase -> joinAttrValue([EMAIL PROTECTED]) ;
+ push @rows, $val if ($val ne '') ;
}
-#print STDERR Data::Dumper::Dumper($attr2write);
- return $attr2write;
+ $fdat{$name} = [EMAIL PROTECTED] ;
}
-
-
-
1 ;
__EMBPERL__
+
[# ---------------------------------------------------------------------------
#
# show - output the control
@@ -220,213 +135,114 @@
[$ sub show ($self)
-my $span = ($self->{width_percent}) ;
+ 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"} ;
$]
<td class="cBase cLabelBox" colspan="[+ $span +]">
- [- shift -> showgrid (@_) -]
- </td>
-[$endsub$]
-
-
-
-[#
################################################################################################
- draw_additional_div
-
################################################################################################
#]
-[$ sub draw_additional_div $]
-<div id="additional[- $self->draw_table_id; -]" class="cGridHidden">
-</div>
-[$ endsub $]
-[# #--- draw_additional_div ----# #]
-
-[#
################################################################################################
- draw_auto_table
-
################################################################################################
#]
-[$ sub draw_auto_table $]
-<table id="auto_table" class="cGridHidden"></table>
-[$ endsub $]
-[# #--- draw_auto_table ----# #]
-
-[#
################################################################################################
- draw_grid_table Erzeugt eine Grid-Tabelle
- in hidden wenn gestetzt wird eine dynamische Tabelle
erzeugt
-
################################################################################################
#]
-[$ sub draw_grid_table $]
- [-
- my ($self,$hidden) = @_;
-
- if($hidden)
- {
- $grid_data = $self -> {create};
- $trclass = $self -> hiddentrclass ;
- }
- else
- {
- $grid_data = $self -> {data};
- $trclass = $self -> trclass ;
- }
- $fields = $self -> {fields} ;
- $id = $self->{currentid};
- $id ||= 1 ;
- -]
- [$foreach $entry (@$grid_data)$]
-
- <TR [$if( $trclass )$]class="[+ $trclass +]"[$endif$]>
-
- [$foreach $field (@$fields)$]
- [-
- $val = $entry->{$field->{'name'}};
- $domid = '_grid_'.$self->{gridname}.'_'.$field->{name}."_$id" ;
- if($field->{type} && $epreq -> can ($field->{type}))
- {
- my $method = $field -> {type} ;
- $epreq -> $method ($field);
- }
-
- -]
-
- [$if($field->{'type'} eq 'checkbox')$]
- <TD id="[+$domid+]" class="cGrid[+
ucfirst(lc($field->{'type'}))+]"><input name="[+$domid+]" type="checkbox"
value="1" [$if($val)$]checked[$endif$]></TD>
- [$elsif($field->{'type'} eq 'select')$]
-[-
-#use Data::Dumper;
-#print STDERR Dumper($field);
--]
- <TD id="[+$domid+]" class="cGrid[+
ucfirst(lc($field->{'type'}))+]">
- <select name="[+$domid+]" size="[+ $field->{size} | 1 +]">
- [-$i=0-]
- [$foreach my $option (@{$field->{options}}) $][-$value =
$field->{values}->[$i] -]
- <option value="[+$value+]" [$ if( $val eq
$value)$]selected[$endif$]>[+$option+]</option>
- [-$i++-]
- [$endforeach$]
- </select></TD>
- [$elsif($field->{'type'} eq 'blank')$]
- <TD id="[+$domid+]" class="cGrid[+
ucfirst(lc($field->{'type'}))+]" width="[+$field->{'width'}+]"></TD>
- [$elsif($field->{'type'} eq 'hidden')$]
- <TD style="display:none;"> <input type="hidden" name="[+$domid+]"
value="[+$val+]"></TD>
- [$else$]
- <TD id="[+$domid+]" class="cGrid[+
ucfirst(lc($field->{'type'}))+]" width="[+$field->{'width'}+]">[+$val+]</TD>
- [$endif$]
- [$endforeach$]
-
- </TR>
- [- $id++;-]
- [$endforeach$]
- [-$self->{currentid} = $id;-]
-[$ endsub $]
-[# #--- draw_grid_table ----# #]
-
-[#
################################################################################################
- draw_grid_control Erzeugt die Buttons zur Grid Steuerung
-
################################################################################################
#]
-[$ sub draw_grid_control $]
[-
- ($self) = @_;
+ $fdat{$name} = $self -> {default} if ($fdat{$name} eq '' && exists ($self
-> {default})) ;
+ my $span = 0 ;
+ $self -> show_grid_title ($jsname);
-]
- <table class="control" align="center" cellpadding=0 cellspacing=0 border=0
rules="none" >
- <TR class="control">
- <TD colspan="[+self->{'control_colspan'}+]" align="center">
- <input class="cStandardButton" type="button" id="cmdAdd" name="-add"
value="Hinzufügen" onclick="[+ $nsprefix
+]appendRow('[+$self->{'appendline_for_js'}+]')" title="Hinzufügen">
- <input class="cStandardButton" type="button" id="cmdDelete"
name="-delete" value="Löschen" onclick="[+ $nsprefix
+]delete_from_form('[+$self->{'appendline_for_js'}+]')" title="Löschen">
- </TD>
- </TR>
- </table>
-[$ endsub $]
-[# #--- draw_grid_control ----# #]
-
-[#
################################################################################################
- draw_grid_header Erzeugt den Tabellenkopf
-
################################################################################################
#]
-[$ sub draw_grid_header $]
- [-
- ($self) = @_;
- $gridfields = $self->{'fields'};
- -]
- <TR class="cGridHeader">[-$i=0-]
- [* for (my $i = 0; $i < @$gridfields ; $i++) { *]
- [$if ($gridfields->[$i]->{text} )$]<TD class="cGridHeader" [$ if
($gridfields->[$i]->{sorted})$]axis="sorted"[$endif$] [$if($width =
$gridfields->[$i]->{width})$]width="[+$width+]"[$endif$]>[+$gridfields->[$i]->{text}+]</TD>[$endif$]
- [* } *]
- </TR>
-[$ endsub $]
-[# #--- draw_grid_header ----# #]
+ <input type="hidden" name="[+ $self -> {name} +]-max" id="[+ $self -> {id}
+]-max">
+ <table class="cGridTable cBase" id="[+ $self -> {id} +]">
+ [- $self -> show_grid_header (); -]
+ [- $self -> show_grid_table () ; -]
+ </table>
+ [- $self -> show_grid_title ($jsname)
+ if ($max > $self -> {header_bottom}) -]
+ <table id="[+ $self -> {id} +]-newrow" style="display: none">
+ [- $self -> show_grid_table_row ('%row%') ; -]
+ </table>
+ <script>
+ [+ $jsname +] = new [+ $nsprefix +]Grid (document.getElementById('[+
$self -> {id} +]'),
+ document.getElementById('[+
$self -> {id} +]-newrow'),
+ document.getElementById('[+
$self -> {id} +]-max')) ;
+ </script>
+ </td>
+[$endsub$]
+
[#
-----------------------------------------------------------------------------
#
# show_grid_title - Zeigt den Titel der Tabelle an
#]
-[$ sub show_grid_title $]
-[-
-($self) = @_;
--]
+[$ sub show_grid_title ($self, $jsname)
+$]
<table class="cBase cGridTitle">
<tr class="cTableRow">
<td class="cBase cGridLabelBox">[+ $self->{text} +]</td>
<td class="cBase cGridControlBox">
- <img src="button_neu.gif" id="cmdAdd" name="-add" title="Zeile
Hinzufügen" onclick="[+ $nsprefix
+]appendRow('[+$self->{'appendline_for_js'}+]')">
- <img src="button_loeschen.gif" id="cmdDelete" name="-delete"
title="Markierte Zeile Löschen" onclick="[+ $nsprefix
+]delete_from_form('[+$self->{'appendline_for_js'}+]')">
+ <img src="/images/button_neu.gif" id="cmdAdd" name="-add" title="Zeile
Hinzufügen" onclick="[+ $jsname +].addRow()">
+ <img src="/images/button_loeschen.gif" id="cmdDelete" name="-delete"
title="Markierte Zeile Löschen" onclick="[+ $jsname +].delRow()">
</td>
</tr>
</table>
[$ endsub $]
+
+[# ---------------------------------------------------------------------------
+#
+# show_grid_header Erzeugt den Tabellenkopf
+#]
-[#
################################################################################################
- draw_table_id Zeigt die DOM Id der Tabelle an
-
################################################################################################
#]
-
-[$ sub draw_table_id $][- ($self) = @_;-][+$self -> {id} +][$ endsub $]
-[# #--- draw_title ----# #]
-
-
-
-[#
################################################################################################
- show Erzeugt eine dynamische Tabelle
-
- in objektspezifische Grid-Daten Struktur :
-
- gridfields = Felder der Grid-Tabelle (angelehnt an das
fields Format)
- griddata = Datensatz mit den Werten der Tabelle
- initdata = Datensatz mit den initialen Werten der Tabelle
- names2display = (optional) Arrayref mit den Titeln des
Tabellenkopfes
- title = Titel der Grid-Tabelle
- trclass = css Klasse der Tabellenzeilen
- hiddentrclass = (optional) css Klasse für versteckte
Tabellenfelder
-
################################################################################################
#]
-
-[$ sub showgrid $]
-[-
-($self) = @_;
-
-$self -> init() ;
-$epreq -> {'onSubmitLdapData'} = $self -> onSubmit ;
-$nsprefix = $self -> form -> {jsnamespace} ;
-
--]
+[$ sub show_grid_header ($self)
-[- $self->show_grid_title; -]
-<table class="cBase cGridTable" id="[- $self->draw_table_id; -]" name="[-
$self->draw_table_id; -]">
-[- $self->draw_grid_header; -]
-[- $self-> draw_grid_table; -]
-</table>
+ my $fields = $self->{'fields'};
+ $]
+ <tr class="cGridHeader">
+ [$ foreach my $field (@$fields) $]
+ <td class="cGridHeader" [$if($width =
$field->{width})$]width="[+$width+]"[$endif$]>[+$field->{text}+]</td>
+ [$ endforeach $]
+ </tr>
+[$ endsub $]
-[- $self->draw_auto_table;-]
-[- $self->draw_additional_div; -]
+[# ---------------------------------------------------------------------------
+#
+# show_grid_table_row Erzeugt eine Grid-Tabelle-Zeile
+#]
-<div id="hidden_table_container[- $self->draw_table_id; -]"
class="cGridHidden">
+[$ sub show_grid_table_row ($self, $i)
-<table id="hidden[- $self->draw_table_id; -]" class="cGridHidden">
-[- $self-> draw_grid_table(1); -]
-</table>
-</div>
+ $fields = $self -> {fields} ;
+ $id = $self -> {id};
+ $name = $self -> {name} ;
+ $]
-<div id="temp[- $self->draw_table_id; -]">
-</div>
+ <tr class="cGridRow" id="[+ "$id-row-$i" +]">
-<SCRIPT language="javascript">
-[+ $nsprefix +]init('[- $self->draw_table_id; -]');
-</SCRIPT>
+ [$foreach $field (@$fields)$]
+ <td class="cGridCell">[-
+ local $field -> {name} = "$name-$field->{name}-$i" ;
+ $field -> show_control ($req)
+ -]</td>
+ [$endforeach$]
+ </tr>
+[$ endsub $]
+
+[# ---------------------------------------------------------------------------
+#
+# show_grid_table Erzeugt eine Grid-Tabelle
+#]
+[$ sub show_grid_table ($self)
+ my $name = $self->{name} ;
+ my $fields = $self -> {fields} ;
+ my $id = $self -> {id};
+ my $i = 0 ;
+ my $max = $fdat{"$name-max"} || 1 ;
+ $]
+
+ [* for ($i = 0; $i < $max ; $i++ ) { *]
+ [- $self -> show_grid_table_row ($i) ; -]
+ [* } *]
+
[$endsub$]
-[# #--- show ----# #]
@@ -453,6 +269,29 @@
Needs to be 'grid'
+=head3 fields
+
+Array ref with field definitions
+
+=head3 header_bottom
+
+If grid has more rows as given in this parameter,
+a header line is also displayed at the bottom of the
+grid. Default is 10. Set to -1 to always get a
+header at the bottom.
+
+=head2 Example
+
+ {
+ name => 'provider-path',
+ text => 'Suchpfad',
+ type => 'grid',
+ fields =>
+ [
+ { name => 'active', text => 'Aktiv', type => 'checkbox', width => '30'
},
+ { name => 'path', text => 'Pfad' },
+ ],
+ },
=head1 Author
Modified: perl/embperl/trunk/Embperl/Form/Control/radio.pm
URL:
http://svn.apache.org/viewvc/perl/embperl/trunk/Embperl/Form/Control/radio.pm?view=diff&rev=558530&r1=558529&r2=558530
==============================================================================
--- perl/embperl/trunk/Embperl/Form/Control/radio.pm (original)
+++ perl/embperl/trunk/Embperl/Form/Control/radio.pm Sun Jul 22 12:10:14 2007
@@ -72,6 +72,7 @@
$filter ||= $self -> {filter} ;
my $addtop = $self -> {addtop} || [] ;
my $addbottom= $self -> {addbottom} || [] ;
+ my $ignorecase= $self -> {ignorecase} ;
my $max = @$values ;
my $set = !defined ($fdat{$name})?1:0 ;
my $nsprefix = $self -> form -> {jsnamespace} ;
@@ -105,7 +106,8 @@
[$endforeach$]
[$ foreach $val (@$values) $]
[$if !defined ($filter) || ($val =~ /$filter/i) $]
- [- $fdat{$name} = $val, $set = 0 if ($set) ; -]
+ [- $fdat{$name} = $val, $set = 0 if ($set) ;
+ $fdat{$name} = $val if ($ignorecase && lc($fdat{$name}) eq lc($val)) ;
-]
[+ do { local $escmode = 0 ; $tr }+]<td><input type="radio" name="[+ $name
+]" value="[+ $val +]"
[$if ($self -> {sublines} || $self -> {subobjects}) $] OnClick="[+
$nsprefix +]show_radio_checked(document, this,[+ $i +],[+ $max +])" [$endif$]
></td><td>[+ $options ->[$i] || $val +]</td>[+ do { local $escmode = 0 ;
$trend }+]
@@ -175,6 +177,11 @@
If specified arranges the radio button vertically. The number given specifies
the number of <br>'s used the separate the radio buttons.
+
+=head3 ignorecase
+
+If given, ignore the case of the posted values in %fdat, when selecting
+a radio button.
=head3 addtop
Modified: perl/embperl/trunk/Embperl/Form/Control/selectdyn.pm
URL:
http://svn.apache.org/viewvc/perl/embperl/trunk/Embperl/Form/Control/selectdyn.pm?view=diff&rev=558530&r1=558529&r2=558530
==============================================================================
--- perl/embperl/trunk/Embperl/Form/Control/selectdyn.pm (original)
+++ perl/embperl/trunk/Embperl/Form/Control/selectdyn.pm Sun Jul 22 12:10:14
2007
@@ -123,7 +123,7 @@
document.getElementById('_inp_[+
$jsname +]')) ;
[+ $jsname +]AutoComp = new [+ $nsprefix
+]Ajax.Autocompleter(document.getElementById('_inp_[+ $jsname
+]'),document.getElementById('_cont_[+ $jsname +]'),
- '/ebos/datasrc.exml', {paramName: "query", parameters: "datasrc=[+
$self -> {datasrc} +]", frequency: 0.3, afterUpdateElement: [+ $jsname
+]savevalue}) ;
+ '/epfctrl/datasrc.exml', {paramName: "query", parameters:
"datasrc=[+ $self -> {datasrc} +]", frequency: 0.3, afterUpdateElement: [+
$jsname +]savevalue}) ;
[+ $jsname +]AutoComp.updateChoices ;
</script>
Modified: perl/embperl/trunk/Embperl/Form/Control/tabs.pm
URL:
http://svn.apache.org/viewvc/perl/embperl/trunk/Embperl/Form/Control/tabs.pm?view=diff&rev=558530&r1=558529&r2=558530
==============================================================================
--- perl/embperl/trunk/Embperl/Form/Control/tabs.pm (original)
+++ perl/embperl/trunk/Embperl/Form/Control/tabs.pm Sun Jul 22 12:10:14 2007
@@ -124,7 +124,9 @@
}
my $js = join (';', @switch_code) ;
*]
- <td class="cBase [+ $cellclass +]"><div class="cBase [+ $divclass +]"
id="__tabs_[+ $id +]">
+ <td class="cBase [+ $cellclass +]"><div class="cBase [+ $divclass +]"
+ [$ if $i == 0 $]style="border-left: black 1px solid" [$endif$]
+ id="__tabs_[+ $id +]">
<a href="#" onClick="[+ $nsprefix +]tab_selected(document, '[+ $id
+]','[+ $name +]'); [+ do { local $escmode = 0 ; $js } +]" style="color:black;
text-decoration: none;">[+ $options ->[$i] || $val +]</a></div></td>
[* $i++ *]
[$endforeach $]
Modified: perl/embperl/trunk/Embperl/Form/ControlMultValue.pm
URL:
http://svn.apache.org/viewvc/perl/embperl/trunk/Embperl/Form/ControlMultValue.pm?view=diff&rev=558530&r1=558529&r2=558530
==============================================================================
--- perl/embperl/trunk/Embperl/Form/ControlMultValue.pm (original)
+++ perl/embperl/trunk/Embperl/Form/ControlMultValue.pm Sun Jul 22 12:10:14 2007
@@ -21,6 +21,8 @@
use base 'Embperl::Form::Control' ;
+use Embperl::Inline ;
+
# ---------------------------------------------------------------------------
#
# init - Init the new control
@@ -89,6 +91,9 @@
1 ;
+
+# damit %fdat etc definiert ist
+__EMBPERL__
__END__
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]