sub filterMenu { my ($client, $callback, $args) = @_; my $baseDir = getFilterDir(); my $currentDir = getCurrentFilterDir($client); $currentDir =~ s/$baseDir//; my @dirs = File::Spec->splitdir($currentDir); $currentDir = $baseDir; my $folder = $currentDir; my @filters; my %filters = getFiltersList($folder); my @choices = sort keys %filters; my @choicev = map $filters{$_}, @choices; my $filter = $filters{getCurrentFilter($client)} eq getCurrentFilterPath($client) ? getCurrentFilter($client) : ''; opendir DIR, $currentDir or die "cannot open dir $currentDir: $!"; my @file= readdir DIR; closedir DIR; my $items; $items = [{ { name => 'Select a Filter', url => \&filterMenu, },{ name => $filter, url => \&filterMenu, } }]; for my $file (@file) { push @$items, { name => $file, url => sub { my ($client, $cb, $params) = @_; }, nextWindow => 'refresh', }; } $callback->({ items => $items }); }