outsource ajax processing into private action /ajax_process in Root controller

agranig/1_0_subfix
Gerhard Jungwirth 12 years ago
parent d8f05dc1a3
commit 6b64c732ac

@ -122,51 +122,15 @@ sub ajax :Chained('list') :PathPart('ajax') :Args(0) {
#TODO: when user is not logged in, this gets forwarded to login page
#Process Arguments
my $sEcho = $c->request->params->{sEcho};
my $sSearch = $c->request->params->{sSearch};
my $iDisplayStart = $c->request->params->{iDisplayStart};
my $iDisplayLength = $c->request->params->{iDisplayLength};
my $contacts = $c->stash->{contacts};
if(! $sEcho ) {
$sEcho = "1";
}
if(! $sSearch ) {
$sSearch = "";
}
$c->stash(sEcho => $sEcho);
#Parse contacts into aaData (for datatables)
my $data = $c->stash->{contacts};
my $aaData = [];
for my $row (@$data) {
if (index($row->{firstname}, $sSearch) >= 0 ||
index($row->{lastname}, $sSearch) >= 0 ||
index($row->{email}, $sSearch) >= 0) {
push @$aaData, [$row->{id},
$row->{firstname},
$row->{lastname},
$row->{email}];
}
}
my $totalRecords = scalar(@$aaData);
#Pagination
if($iDisplayStart || $iDisplayLength ) {
my $endIndex = $iDisplayLength+$iDisplayStart-1;
$endIndex = $#$aaData if $endIndex > $#$aaData;
@$aaData = @$aaData[$iDisplayStart .. $endIndex];
}
$c->stash(aaData => $aaData,
iTotalRecords => $totalRecords,
iTotalDisplayRecords => $totalRecords);
$c->forward( "/ajax_process", [$contacts,
["id","firstname","lastname","email"],
[1,2,3]]);
$c->detach( $c->view("JSON") );
}
=head1 AUTHOR
Andreas Granig,,,

@ -133,53 +133,15 @@ sub ajax :Chained('list') :PathPart('ajax') :Args(0) {
#TODO: when user is not logged in, this gets forwarded to login page
#Process Arguments
my $sEcho = $c->request->params->{sEcho};
my $sSearch = $c->request->params->{sSearch};
my $iDisplayStart = $c->request->params->{iDisplayStart};
my $iDisplayLength = $c->request->params->{iDisplayLength};
if(! $sEcho ) {
$sEcho = "1";
}
if(! $sSearch ) {
$sSearch = "";
}
$c->stash(sEcho => $sEcho);
#Parse resellers into aaData (for datatables)
my $resellers = $c->stash->{resellers};
my $aaData = [];
for my $row (@$resellers) {
if (index($row->{name}, $sSearch) >= 0) {
push @$aaData, [$row->{id},
$row->{name},
$row->{"contract.id"},
$row->{status}];
}
}
my $totalRecords = scalar(@$aaData);
#Pagination
if($iDisplayStart || $iDisplayLength ) {
my $endIndex = $iDisplayLength+$iDisplayStart-1;
$endIndex = $#$aaData if $endIndex > $#$aaData;
@$aaData = @$aaData[$iDisplayStart .. $endIndex];
}
$c->stash(aaData => $aaData,
iTotalRecords => $totalRecords,
iTotalDisplayRecords => $totalRecords);
$c->forward( "/ajax_process", [$resellers,
["id","name","contract.id","status"],
[1,3]]);
$c->detach( $c->view("JSON") );
}
sub listdt :Chained('list') :PathPart('listdt') :Args(0) {
my ($self, $c) = @_;
$c->stash(template => 'reseller/listdt.tt');
}
=head1 AUTHOR

@ -91,6 +91,42 @@ Attempt to render a view, if needed.
sub end : ActionClass('RenderView') {}
sub ajax_process :Private {
my ($self,$c,@arguments) = @_;
my ($data,$columns,$searchable) = @arguments;
#Process Arguments
my $sEcho = $c->request->params->{sEcho} // "1"; #/
my $sSearch = $c->request->params->{sSearch} // ""; #/
my $iDisplayStart = $c->request->params->{iDisplayStart};
my $iDisplayLength = $c->request->params->{iDisplayLength};
#parse $data into $aaData
my $aaData = [];
for my $row (@$data) {
my @aaRow = @$row{@$columns};
if (grep /$sSearch/, @aaRow[@$searchable]) {
push @$aaData, \@aaRow;
}
}
my $totalRecords = scalar(@$aaData);
#Pagination
if($iDisplayStart || $iDisplayLength ) {
my $endIndex = $iDisplayLength+$iDisplayStart-1;
$endIndex = $#$aaData if $endIndex > $#$aaData;
@$aaData = @$aaData[$iDisplayStart .. $endIndex];
}
$c->stash(aaData => $aaData,
iTotalRecords => $totalRecords,
iTotalDisplayRecords => $totalRecords);
$c->stash(sEcho => $sEcho);
}
=head1 AUTHOR
Andreas Granig,,,

Loading…
Cancel
Save