#!/usr/bin/perl
# This is the index for
.
use strict;
use warnings FATAL => qw( all );
use CGI::Carp qw(fatalsToBrowser);
use CGI::Minimal;
use HTML::Entities qw(encode_entities);
use lib '../files/lib';
use Base::Page qw(page story);
use HTML::Elements qw(list anchor);
use Util::Convert qw(searchify);
use Util::Data qw(file_directory file_list);
use Util::Menu qw(file_menu);
use Util::Sort qw(article_sort);
my $cgi = CGI::Minimal->new;
my $page = $cgi->param('page') ? encode_entities($cgi->param('page'),'/<>"') : undef;
my $pages_dir = file_directory(, 'text');
my @pages_list = file_list($pages_dir);
my @pages = sort { article_sort($a, $b) }
map { $_ =~ s/\.txt//; $_ =~ s/_/ /g; $_ }
grep { -f "$pages_dir/$_" && /^\p{uppercase}/ }
@pages_list;
my $heading = q();
my $page_file = "$pages_dir/index.txt";
if ( $page && grep { $_ eq $page } @pages ) {
$heading = $page;
$page_file = "$pages_dir/$page.txt";
$page_file =~ s/ /_/g;
}
open(my $page_fh, '<', $page_file) || die "Can't open $page_file. $!";
my $magic;
$magic->{'pages'} = sub {
my $file_menu = file_menu('page', \@pages, $page);
list(4, 'u', $file_menu);
};
page(
'heading' => $heading,
'selected' => $page,
'code' => sub {
story($page_fh, { 'doc magic' => $magic, 'line magic' => $magic });
}
);