#!/usr/bin/perl -w
# group5listSoftwareComponents.pl
use strict;
use lib "/pathToYourWebspace/cgi-bin/gnu";

use CGI;
use CGI::Carp qw( fatalsToBrowser);

use subjectGroup5::SideIndex;
use Comments;
use MostRecentSideIndex;
use PageFormatterTemplate;
use PathInfo;

# techie stuff: clean up environment for taint mode before calling mail
BEGIN {
    $ENV{PATH} = "/bin:/usr/bin";
    delete @ENV{ qw( IFS CDPATH ENV BASH_ENV) };
} # end BEGIN
# end techie stuff

    # we'll be checking the environment for post parameters etc
    my $cgiObj    = new CGI();
    
    # do this bit of printing to allow for early error messages
    print "Content-type: text/html; charset=iso-8859-1\n\n";
    
    # To use this template
    # 1. modify the header content
    # 2. modify the contentAry
    # 3. modify $sideIndexObj
    
    
    # pathInfo determines the side index to use
    # Note that tests for informationType of any given type need only be conducted if 
    # the page features on one of the informationType indexes or has a payPal button
    # Note that $infoString is used to carry info (if any) specific to a given type e.g. 
    # in the case of PayPal where I may be selling different pictures on the same page then
    # $infoString will contain a picture identifier
    # Note: we do not use PayPal on this page
    my $pathInfoObj    = PathInfo->new($cgiObj);
    if ($pathInfoObj->pathInfo()) {
        if ( ($pathInfoObj->printablePage() ) || 
             ($pathInfoObj->mostRecentSideIndex() ) || 
             ($pathInfoObj->workInProgressSideIndex() )  ) {
            # OK
        } else {
            # someone is fooling around
            # send message but keep going - ignore it
            Mailer::sendErrorEmail("unrecognised pathInfo string","subjectGroup5","group5listSoftwareComponents");
        } # end if
    } # end if        

    # determine the side index to use
    my $sideIndexObj     = subjectGroup5::SideIndex->new();    
    if ($pathInfoObj->mostRecentSideIndex()) {
        $sideIndexObj    = MostRecentSideIndex->new();
    } # end if
    if ($pathInfoObj->workInProgressSideIndex()) {
        $sideIndexObj    = WorkInProgressSideIndex->new();
    } # end if
    
    
    # header content
    my $metaKeywords     = "I,hope,you,get,use,from,this,website,generation,program,by,julius,guzy,available,under,gnu,free,software,licence";
    my $metaDescription  = "I hope you get use from this website generation program by julius guzy available under,gnu free software licence";
    my $pageTitle        = "Links to software components";
    my $indexGroup       = "subjectGroup5";
    my $pageFileName     = "group5listSoftwareComponents.pl";
  
    
    # the order of the elements determines the order in which the elements are written in the html
    my @contentAry = (    
    
    {
        contentType    => "heading",
        headingType    => "h2",
        headingText    => "Links to software components for this site",
},    # end anon hash

            {
        contentType            => "unorderedListSequence",
        listSequence        => [
        [
        "<a href='http://yourWebsiteDotCom/gnuCodeInHtml/Comments.html'>Comments.pm</a>",
        ],[
        "<a href='http://yourWebsiteDotCom/gnuCodeInHtml/mainIndex_pl.html'>mainIndex.pl</a>",
        ],[
        "<a href='http://yourWebsiteDotCom/gnuCodeInHtml/MainIndex.html'>MainIndex.pm</a>",
        ],[
        "<a href='http://yourWebsiteDotCom/gnuCodeInHtml/MostRecentSideIndex.html'>MostRecentSideIndex.pm</a>",
        ],[
        "<a href='http://yourWebsiteDotCom/gnuCodeInHtml/PageFormatterTemplate.html'>PageFormatterTemplate.pm</a>",
        ],[
        "<a href='http://yourWebsiteDotCom/gnuCodeInHtml/WorkInProgressSideIndex.html'>WorkInProgressSideIndex.pm</a>",
        ],[
        "<a href='http://yourWebsiteDotCom/gnuCodeInHtml/PathInfo.html'>PathInfo.pm</a>",
        ],[
        "<a href='http://yourWebsiteDotCom/gnuCodeInHtml/group1PlainText.html'>group1PlainText.pl</a>",
        ],[
        "<a href='http://yourWebsiteDotCom/gnuCodeInHtml/group1TitledPictureAndPayPal.html'>group1TitledPictureAndPayPal.pl</a>",
        ],[
        "<a href='http://yourWebsiteDotCom/gnuCodeInHtml/SideIndex.html'>SideIndex.pm</a> for group 1",
        ],[
        "<a href='http://yourWebsiteDotCom/gnuCodeInHtml/group2UnorderedList.html'>group2UnorderedList.pl</a>",
        ],[
        "<a href='http://yourWebsiteDotCom/gnuCodeInHtml/group3PreFormattedText.html'>group3PreFormattedText.pl</a>",
        ],[
        "<a href='http://yourWebsiteDotCom/gnuCodeInHtml/group4ChangeCss.html'>group4ChangeCss.pl</a>",
        ],[
        "<a href='http://yourWebsiteDotCom/gnuCodeInHtml/group5listSoftwareComponents.html'>group5listSoftwareComponents.pl</a>",
        ],
],
},    # end anon hash

    );    # end contentAry
            



    # check for comments data having been sent to us
    # new will get these and validate them
    my $commentsObj    = Comments->new($cgiObj);
    
    # pass the PageFormatter all the information used to create the page other than the content itself
    my $pageObj    = PageFormatterTemplate->new($cgiObj,$indexGroup,$sideIndexObj,$commentsObj,$pageFileName,$pageTitle,$metaKeywords,$metaDescription);
    

    # we are never returning from a PayPal sale so no need to generate a special thank you page
    # create the standard page
    $pageObj->standardContent(\@contentAry);