\n";
my @mins = (0..59);
my @hours = (0..23);
my @days = (1..31);
my @months = map { $text{"month_$_"}."=".$_ } (1 .. 12);
my @weekdays = map { $text{"day_$_"}."=".$_ } (0 .. 6);
my $arrmap = { 'mins' => \@mins,
'hours' => \@hours,
'days' => \@days,
'months' => \@months,
'weekdays' => \@weekdays };
foreach my $arr ("mins", "hours", "days", "months", "weekdays") {
# Find out which ones are being used
my %inuse;
my $min = ($arr =~ /days|months/ ? 1 : 0);
my $max = $min+scalar(@{$arrmap->{$arr}})-1;
foreach my $w (split(/,/ , $job->{$arr})) {
if ($w eq "*") {
# all values
for(my $j=$min; $j<=$max; $j++) { $inuse{$j}++; }
}
elsif ($w =~ /^\*\/(\d+)$/) {
# only every Nth
for(my $j=$min; $j<=$max; $j+=$1) { $inuse{$j}++; }
}
elsif ($w =~ /^(\d+)-(\d+)\/(\d+)$/) {
# only every Nth of some range
for(my $j=$1; $j<=$2; $j+=$3) { $inuse{int($j)}++; }
}
elsif ($w =~ /^(\d+)-(\d+)$/) {
# all of some range
for(my $j=$1; $j<=$2; $j++) { $inuse{int($j)}++; }
}
else {
# One value
$inuse{int($w)}++;
}
}
if ($job->{$arr} eq "*") { undef(%inuse); }
# Output selection list
$rv .= "\n";
$rv .= sprintf
" %s \n",
$arr eq "mins" && $hourly_only ? "disabled" : "",
$job->{$arr} eq "*" || $job->{$arr} eq "" ? "checked" : "",
"onClick='enable_cron_fields(\"$arr\", form, 0)'",
$text{'edit_all'};
$rv .= sprintf
" %s \n",
$job->{$arr} eq "*" || $job->{$arr} eq "" ? "" : "checked",
"onClick='enable_cron_fields(\"$arr\", form, 1)'",
$text{'edit_selected'};
$rv .= " \n";
my @arrlist = @{$arrmap->{$arr}};
for(my $j=0; $j<@arrlist; $j+=12) {
my $jj = $j + 11;
if ($jj >= @arrlist) { $jj = @arrlist - 1; }
my @sec = @arrlist[$j .. $jj];
$rv .= sprintf
" | \n";
}
$rv .= " | \n";
}
$rv .= "