summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--UI/form-dynatable.html6
-rw-r--r--bin/ct.pl297
2 files changed, 133 insertions, 170 deletions
diff --git a/UI/form-dynatable.html b/UI/form-dynatable.html
index 66d35e15..22e2b0c1 100644
--- a/UI/form-dynatable.html
+++ b/UI/form-dynatable.html
@@ -43,10 +43,14 @@
<tr class="<?lsmb c ?>">
<?lsmb FOREACH column IN columns ?>
<<?lsmb s ?> class="<?lsmb c ?>" <?lsmb IF (!row.class.defined || row.class != 'heading') && row_alignment.$column ?>align="<?lsmb row_alignment.$column ?>"<?lsmb END ?>>
- <?lsmb IF row.$column.href ?>
+ <?lsmb IF row.$column.href.defined ?>
<a href="<?lsmb row.$column.href?>"><?lsmb row.$column.text ?></a>
<?lsmb ELSIF row.$column.delimiter;
FOREACH l IN row.$column.text.split(row.$column.delimiter); l ?><br /><?lsmb END ?>
+ <?lsmb ELSIF row.$column.input.defined;
+ PROCESS input element_data=row.$column.input ?>
+ <?lsmb ELSIF row.$column.select.defined;
+ PROCESS select element_data=row.$column.select ?>
<?lsmb ELSE; row.$column; END ?>
</<?lsmb s ?>>
<?lsmb END ?>
diff --git a/bin/ct.pl b/bin/ct.pl
index 8244738b..91f13eb4 100644
--- a/bin/ct.pl
+++ b/bin/ct.pl
@@ -1524,9 +1524,10 @@ sub pricelist {
# currencies
@curr = split /:/, $form->{currencies};
- for (@curr) { $form->{selectcurrency} .= "<option>$_\n" }
+ $form->{selectcurrency} = [];
+ for (@curr) {push @{$form->{selectcurrency}}, {text => $_, value => $_}}
- if ( @{ $form->{all_partsgroup} } ) {
+ if (ref $form->{all_partsgroup} eq 'ARRAY') {
$form->{selectpartsgroup} = "";
foreach $ref ( @{ $form->{all_partsgroup} } ) {
$form->{selectpartsgroup} .= qq|$ref->{partsgroup}--$ref->{id}\n|;
@@ -1567,7 +1568,7 @@ sub pricelist {
sub customer_pricelist {
- @flds =
+ my @flds =
qw(runningnumber id partnumber description sellprice unit partsgroup pricebreak curr validfrom validto);
$form->{rowcount}--;
@@ -1635,7 +1636,7 @@ sub customer_pricelist {
sub vendor_pricelist {
- @flds =
+ my @flds =
qw(runningnumber id sku partnumber description lastcost unit partsgroup curr leadtime);
$form->{rowcount}--;
@@ -1686,49 +1687,30 @@ sub vendor_pricelist {
sub display_pricelist {
my %hiddens;
- &pricelist_header(\%hiddens);
+ my $buttons = &pricelist_footer;
delete $form->{action};
- $form->hide_form;
$hiddens{$_} = $form->{$_} foreach sort keys %$form;
- &pricelist_footer(\%hiddens);
-
+ &pricelist_header(\%hiddens, $buttons);
}
sub pricelist_header {
+ my $hiddens = shift;
+ my $buttons = shift;
$form->{title} = $form->{name};
- $form->header;
-
- print qq|
-<body>
-
-<form method=post action="$form->{script}">
-
-<table width=100%>
- <tr>
- <th class=listtop>$form->{title}</th>
- </tr>
- <tr height="5"></tr>
-|;
+ my @column_index;
+ my %column_header;
if ( $form->{db} eq 'customer' ) {
@column_index = qw(partnumber description);
push @column_index, "partsgroup" if $form->{selectpartsgroup};
push @column_index, qw(pricebreak sellprice curr validfrom validto);
- $column_header{pricebreak} =
- qq|<th class=listheading nowrap>|
- . $locale->text('Break')
- . qq|</th>|;
- $column_header{sellprice} =
- qq|<th class=listheading nowrap>|
- . $locale->text('Sell Price')
- . qq|</th>|;
- $column_header{validfrom} =
- qq|<th class=listheading nowrap>| . $locale->text('From') . qq|</th>|;
- $column_header{validto} =
- qq|<th class=listheading nowrap>| . $locale->text('To') . qq|</th>|;
+ $column_header{pricebreak} = $locale->text('Break');
+ $column_header{sellprice} = $locale->text('Sell Price');
+ $column_header{validfrom} = $locale->text('From');
+ $column_header{validto} = $locale->text('To');
}
if ( $form->{db} eq 'vendor' ) {
@@ -1736,172 +1718,152 @@ sub pricelist_header {
push @column_index, "partsgroup" if $form->{selectpartsgroup};
push @column_index, qw(lastcost curr leadtime);
- $column_header{sku} =
- qq|<th class=listheading nowrap>| . $locale->text('SKU') . qq|</th>|;
- $column_header{leadtime} =
- qq|<th class=listheading nowrap>|
- . $locale->text('Leadtime')
- . qq|</th>|;
- $column_header{lastcost} =
- qq|<th class=listheading nowrap>| . $locale->text('Cost') . qq|</th>|;
+ $column_header{sku} = $locale->text('SKU');
+ $column_header{leadtime} = $locale->text('Leadtime');
+ $column_header{lastcost} = $locale->text('Cost');
}
- $column_header{partnumber} =
- qq|<th class=listheading nowrap>| . $locale->text('Number') . qq|</th>|;
- $column_header{description} =
- qq|<th class=listheading nowrap width=80%>|
- . $locale->text('Description')
- . qq|</th>|;
- $column_header{partsgroup} =
- qq|<th class=listheading nowrap>| . $locale->text('Group') . qq|</th>|;
- $column_header{curr} =
- qq|<th class=listheading nowrap>| . $locale->text('Curr') . qq|</th>|;
-
- print qq|
- <tr>
- <td>
- <table width=100%>
- <tr class=listheading>
-|;
-
- for (@column_index) { print "\n$column_header{$_}" }
-
- print qq|
- </tr>
-|;
+ $column_header{partnumber} = $locale->text('Number');
+ $column_header{description} = $locale->text('Description'); #80% width
+ $column_header{partsgroup} = $locale->text('Group');
+ $column_header{curr} = $locale->text('Curr');
$sameid = "";
- foreach $i ( 1 .. $form->{rowcount} ) {
-
- $selectcurrency = $form->{selectcurrency};
- $selectcurrency =~
- s/option>\Q$form->{"curr_$i"}\E/option selected>$form->{"curr_$i"}/;
+ my @rows;
+ foreach my $i ( 1 .. $form->{rowcount} ) {
+ my %column_data;
if ( $form->{selectpartsgroup} ) {
if ( $i < $form->{rowcount} ) {
($partsgroup) = split /--/, $form->{"partsgroup_$i"};
- $column_data{partsgroup} = qq|<td>$partsgroup</td>
- <input type=hidden name="partsgroup_$i" value="|
- . $form->quote( $form->{"partsgroup_$i"} ) . qq|">|;
+ $hiddens->{"partsgroup_$i"} = $form->{"partsgroup_$i"};
+ $column_data{partsgroup} = $partsgroup;
}
}
if ( $i < $form->{rowcount} ) {
-
if ( $form->{"id_$i"} eq $sameid ) {
for (qw(partnumber description partsgroup)) {
- $column_data{$_} = qq|<td>&nbsp;</td>
- <input type=hidden name="${_}_$i" value="|
- . $form->quote( $form->{"${_}_$i"} ) . qq|">|;
+ $hiddens->{"${_}_$i"} = $form->{"${_}_$i"};
+ $column_data{$_} = ' ';
}
+ } else {
+ $column_data{sku} = {input => {
+ name => "sku_$i",
+ value => $form->{"sku_$i"}
+ }};
+ $column_data{partnumber} = {input => {
+ name => "partnumber_$i",
+ value => $form->{"partnumber_$i"}
+ }};
+ $column_data{description} =$form->{"description_$i"};
+ $hiddens->{"description_$i"} = $form->{"description_$i"};
}
- else {
-
- $column_data{sku} =
- qq|<td><input name="sku_$i" value="$form->{"sku_$i"}"></td>|;
- $column_data{partnumber} =
-qq|<td><input name="partnumber_$i" value="$form->{"partnumber_$i"}"></td>|;
-
- $column_data{description} =
- qq|<td>$form->{"description_$i"}&nbsp;</td>
- <input type=hidden name="description_$i" value="|
- . $form->quote( $form->{"description_$i"} ) . qq|">|;
-
- }
-
- $column_data{partnumber} .= qq|
- <input type=hidden name="id_$i" value="$form->{"id_$i"}">|;
-
- }
- else {
-
+ $hiddens->{"id_$i"} = $form->{"id_$i"};
+ } else {
if ( $form->{db} eq 'customer' ) {
- $column_data{partnumber} =
-qq|<td><input name="partnumber_$i" value="$form->{"partnumber_$i"}"></td>|;
- }
- else {
- $column_data{partnumber} = qq|<td>&nbsp;</td>|;
+ $column_data{partnumber} = {input => {
+ name => "partnumber_$i",
+ value => $form->{"partnumber_$i"}
+ }};
+ } else {
+ $column_data{partnumber} = ' ';
}
- $column_data{partnumber} .= qq|
- <input type=hidden name="id_$i" value="$form->{"id_$i"}">|;
+ $hiddens->{"id_$i"} = $form->{"id_$i"};
- $column_data{sku} =
- qq|<td><input name="sku_$i" value="$form->{"sku_$i"}"></td>|;
- $column_data{description} =
-qq|<td><input name="description_$i" value="$form->{"description_$i"}"></td>|;
+ $column_data{sku} = {input => {
+ name => "sku_$i",
+ value => $form->{"sku_$i"}
+ }};
+ $column_data{partnumber} = {input => {
+ name => "partnumber_$i",
+ value => $form->{"partnumber_$i"}
+ }};
if ( $form->{selectpartsgroup} ) {
- $selectpartsgroup = "<option>";
+ @selectpartsgroup = ({text => '', value => ''});
foreach $line ( split /\n/, $form->{selectpartsgroup} ) {
- $selectpartsgroup .=
- qq|\n<option value="|
- . $form->quote($line) . qq|">|
- . ( split /--/, $line )[0];
+ push @selectpartsgroup, {
+ text => (split /--/, $line)[0],
+ value => $line,
+ };
}
- $column_data{partsgroup} =
-qq|<td><select name="partsgroup_$i">$selectpartsgroup</select></td>|;
+ $column_data{partsgroup} = {'select' => {
+ name => "partnumber_$i",
+ options => \@selectpartsgroup,
+ }};
}
-
}
if ( $form->{db} eq 'customer' ) {
- $column_data{pricebreak} =
- qq|<td align=right><input name="pricebreak_$i" size=5 value=|
- . $form->format_amount( \%myconfig, $form->{"pricebreak_$i"} )
- . qq|></td>|;
- $column_data{sellprice} =
- qq|<td align=right><input name="sellprice_$i" size=10 value=|
- . $form->format_amount( \%myconfig, $form->{"sellprice_$i"}, 2 )
- . qq|></td>|;
-
- $column_data{validfrom} =
-qq|<td><input name="validfrom_$i" size=11 value=$form->{"validfrom_$i"}></td>|;
- $column_data{validto} =
-qq|<td><input name="validto_$i" size=11 value=$form->{"validto_$i"}></td>|;
+ $column_data{pricebreak} = {input => {
+ name => "pricebreak_$i",
+ size => 5,
+ value => $form->format_amount(\%myconfig, $form->{"pricebreak_$i"})
+ }};
+ $column_data{sellprice} = {input => {
+ name => "sellprice_$i",
+ size => 10,
+ value => $form->format_amount(\%myconfig, $form->{"sellprice_$i"}, 2)
+ }};
+ $column_data{validfrom} = {input => {
+ name => "validfrom_$i",
+ size => 11,
+ value => $form->{"validfrom_$i"},
+ }};
+ $column_data{validto} = {input => {
+ name => "validto_$i",
+ size => 11,
+ value => $form->{"validto_$i"},
+ }};
}
if ( $form->{db} eq 'vendor' ) {
- $column_data{leadtime} =
- qq|<td align=right><input name="leadtime_$i" size=5 value=|
- . $form->format_amount( \%myconfig, $form->{"leadtime_$i"} )
- . qq|></td>|;
- $column_data{lastcost} =
- qq|<td align=right><input name="lastcost_$i" size=10 value=|
- . $form->format_amount( \%myconfig, $form->{"lastcost_$i"}, 2 )
- . qq|></td>|;
+ $column_data{leadtime} = {input => {
+ name => "leadtime_$i",
+ size => 5,
+ value => $form->format_amount(\%myconfig, $form->{"leadtime_$i"})
+ }};
+ $column_data{lastcost} = {input => {
+ name => "lastcost_$i",
+ size => 10,
+ value => $form->format_amount( \%myconfig, $form->{"lastcost_$i"}, 2 )
+ }};
}
- $column_data{curr} =
- qq|<td><select name="curr_$i">$selectcurrency</select></td>|;
-
- print qq|<tr valign=top>|;
-
- for (@column_index) { print "\n$column_data{$_}" }
-
- print qq|</tr>|;
-
+ $column_data{curr} = {'select' => {
+ name => "curr_$i",
+ options => $form->{selectcurrency},
+ default_values => $form->{"curr_$i"},
+ }};
$sameid = $form->{"id_$i"};
+ push @rows, \%column_data;
}
- print qq|
- </table>
- </td>
- </tr>
- <tr>
- <td><hr size=3 noshade></td>
- </tr>
-</table>
-|;
-
# delete variables
foreach $i ( 1 .. $form->{rowcount} ) {
for ( @column_index, "id" ) { delete $form->{"${_}_$i"} }
}
for (qw(title titlebar script none)) { delete $form->{$_} }
+ my $template = LedgerSMB::Template->new_UI(
+ user => \%myconfig,
+ locale => $locale,
+ template => 'form-dynatable',
+ );
+ $template->render({
+ form => $form,
+ user => \%myconfig,
+ hiddens => $hiddens,
+ buttons => $buttons,
+ options => \@options,
+ rows => \@rows,
+ columns => \@column_index,
+ heading => \%column_header,
+ });
}
sub pricelist_footer {
@@ -1915,17 +1877,18 @@ sub pricelist_footer {
{ ndx => 3, key => 'S', value => $locale->text('Save Pricelist') },
);
+ my @buttons;
for ( sort { $button{$a}->{ndx} <=> $button{$b}->{ndx} } keys %button ) {
- $form->print_button( \%button, $_ );
+ push @buttons, {
+ name => 'action',
+ value => $_,
+ accesskey => $button{$_}{key},
+ title => "$button{$name}{value} [Alt-$button{$_}{key}]",
+ text => $button{$_}{value},
+ };
}
- print qq|
-</form>
-
-</body>
-</html>
-|;
-
+ \@buttons;
}
sub update {
@@ -1992,8 +1955,7 @@ sub update {
$form->{"pricebreak_$i"} = $pricebreak;
- }
- else {
+ } else {
foreach $j ( 1 .. $form->{rowcount} - 1 ) {
if ( $form->{"sku_$j"} eq $form->{"partnumber_$i"} ) {
@@ -2020,11 +1982,8 @@ sub update {
}
- }
- else {
-
+ } else {
$form->error( $locale->text('Item not on file!') );
-
}
}