KGRKJGETMRETU895U-589TY5MIGM5JGB5SDFESFREWTGR54TY
Server : Apache/2.4.62
System : FreeBSD fbsdweb2.web.rcn.net 14.1-RELEASE FreeBSD 14.1-RELEASE releng/14.1-n267679-10e31f0946d8 GENERIC amd64
User : www ( 80)
PHP Version : 8.3.8
Disable Function : NONE
Directory :  /domains/compasssysweb/calendar/CalciumDir39/Operation/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /domains/compasssysweb/calendar/CalciumDir39/Operation/AdminDisplay.pm
# Copyright 1999-2003, Fred Steinberg, Brown Bear Software

# Calendar Display Options/Settings
package AdminDisplay;
use strict;

use CGI (':standard');

use Calendar::GetHTML;
use Calendar::Date;
use Operation::MultiCal;

use vars ('@ISA');
@ISA = ('Operation::MultiCal');

# This Operation can be performed on a Calendar OR the Master DB

sub perform {
    my $self = shift;

    my ($save, $done) = $self->getParams (qw (Save Cancel Group));

    my $i18n = $self->I18N;
    my $cgi  = new CGI;

    if ($done) {
        my $op = $self->isSystemOp ? 'SysAdminPage' : 'AdminPage';
        print $self->redir ($self->makeURL ({Op    => $op}));
        return;
    }

    my @names = qw (day time display navbar weekend weeknum popup
                    listviewpop dayview daytimes menus menuItems
                    editForm repeatedit
                    defPeriod plannerself fiscal);

    my %captions = (day         => $i18n->get ('First day of Week'),
                    time        => $i18n->get ('Time Format'),
                    display     => $i18n->get ('Default Display'),
                    navbar      => $i18n->get ('Navigation Bars'),
                    weekend     => $i18n->get ('Weekend Days'),
                    weeknum     => $i18n->get ('Week Numbers'),
                    listviewpop => $i18n->get ('List View Popup'),
                    popup       => $i18n->get ('Event Popup Window'),
                    dayview     => $i18n->get ('Time Plan Hours'),
                    daytimes    => $i18n->get ('Time Plan - Event Times'),
                    menus       => $i18n->get ('Menu Bars to Display'),
                    menuItems   => $i18n->get ('Menu Bar Items to Display'),
                    editForm    => $i18n->get ('Event Edit Form'),
                    emailSelect => $i18n->get ('Email Address Popup'),
                    repeatedit  => $i18n->get ('Repeating Events'),
                    defPeriod   => $i18n->get ('Default Period'),
                    plannerself => $i18n->get ('Planner View'),
                    fiscal      => $i18n->get ('Fiscal Year'));

    my ($calendars, $preferences) = $self->getCalsAndPrefs;

    my $override = 1;

    my $message = $self->adminChecks;
    if (!$message and $save) {
        $override = 0;
        my @thePrefs = qw (StartWeekOn MilitaryTime BlockOrList DisplayAmount
                           YearViewColor NavigationBar NavBarSite
                           ShowWeekend DayViewHours DayViewStart
                           DayViewControls ListViewPopup MenuItemPlanner
                           MenuItemHome MenuItemFiscal FiscalType
                           PopupWidth PopupHeight PopupExportOn
                           RepeatEditWhich TimeEditWhich EmailSelector
                           DefaultPeriod ShowWeekNums WhichWeekNums
                           PlannerHideSelf TimePlanShowTimes);
        my %newPrefs;
        foreach (@thePrefs) {
            my $value = $self->{params}->{$_};
            $newPrefs{$_} = $value if (defined $value);
        }

        # BottomBar menus are a bit special
        my $menus;
        foreach (qw (DisplayMenu NavBarMenu CalMenu SysMenu)) {
            $menus .= $self->{params}->{$_} || '';
        }
        $newPrefs{BottomBars} = $menus;

        # And so is the Edit Form stuff
        my $hideThem;
        foreach (qw (HideRepeat HideMail)) {
            $hideThem .= $self->{params}->{$_} || '';
        }
        $newPrefs{EditFormHide} = $hideThem;

        # And so is the Popup Export
        $newPrefs{PopupExportOn} = $self->{params}->{PopupExportOn} || 0;

        # And so is the Fiscal Epoch
        $newPrefs{FiscalEpoch} = $self->{params}->{FiscalEpochYear} . '/' .
                                 $self->{params}->{FiscalEpochMonth} . '/' .
                                 $self->{params}->{FiscalEpochDay};

        # If multi-cal, remove prefs set to Ignore
        if ($self->isMultiCal) {
            my %prefMap = (day         => [qw /StartWeekOn/],
                           time        => [qw /MilitaryTime/],
                           display     => [qw /BlockOrList DisplayAmount
                                               YearViewColor/],
                           navbar      => [qw /NavigationBar NavBarSite/],
                           weekend     => [qw /ShowWeekend/],
                           weeknum     => [qw /ShowWeekNums WhichWeekNums/],
                           popup       => [qw /PopupWidth PopupHeight
                                               PopupExportOn/],
                           listviewpop => [qw /ListViewPopup/],
                           dayview     => [qw /DayViewHours DayViewStart
                                               DayViewControls/],
                           daytimes    => [qw /TimePlanShowTimes/],
                           menus       => [qw /BottomBars/],
                           menuItems   => [qw /MenuItemHome MenuItemPlanner
                                               MenuItemFiscal/],
                           editForm    => [qw /EditFormHide TimeEditWhich/],
                           emailSelect => [qw /EmailSelector/],
                           repeatedit  => [qw /RepeatEditWhich/],
                           defPeriod   => [qw /DefaultPeriod/],
                           plannerself => [qw /PlannerHideSelf/],
                           fiscal      => [qw /FiscalType FiscalEpoch/],
                          );

            my @modified = $self->removeIgnoredPrefs (map   => \%prefMap,
                                                      prefs => \%newPrefs);
            $message = $self->getModifyMessage (cals   => $calendars,
                                                mods   => \@modified,
                                                labels => \%captions);
        }

        foreach (@$calendars) {
            $self->saveForAuditing ($_, \%newPrefs);
            $self->dbByName ($_)->setPreferences (\%newPrefs);
        }
        $self->{audit_formsaved}++;

        $preferences = $self->prefs ('force');
    }

    print $cgi->header;
    print $cgi->start_html (-title   => $i18n->get ('Display Settings'),
                            -bgcolor => 'white');

    print '<center>';
    if (!$self->isSystemOp) {
        print GetHTML->AdminHeader (I18N    => $i18n,
                                    cal     => $self->calendarName || '',
                                    goob    => $self->goobLabel    || '',
                                    group   => $self->groupName    || '',
                                    section => 'Display Settings');
    } else {
        print GetHTML->SysAdminHeader ($i18n, 'Display Settings');
    }
    print "<h3>$message</h3>" if $message;
    print '</center>';

    # Get the prefs we've already got
    my $startWeekOn    = $preferences->StartWeekOn   || 7;
    my $militaryTime   = $preferences->MilitaryTime  || 0;     # true or false
    my $blockOrList    = $preferences->BlockOrList   || 'Block';
    my $displayAmount  = $preferences->DisplayAmount || 'Month';
    my $yearColor      = $preferences->YearViewColor || 'Count';
    my $showWeekend    = $preferences->ShowWeekend   || 0;     # true/false
    my $navigationBar  = $preferences->NavigationBar || 'Both';
    my $navBarSite     = $preferences->NavBarSite    || 'top';
    my $bottomBars     = $preferences->BottomBars    || '';
    my $hideThem       = $preferences->EditFormHide  || '';
    my $showWeekNums   = $preferences->ShowWeekNums  || 0;
    my $whichWeekNums  = $preferences->WhichWeekNums || 4;
    my $dayViewHours   = $preferences->DayViewHours  || 8;
    my $dayViewStart   = $preferences->DayViewStart  || 9;
    my $dayViewControls = $preferences->DayViewControls || 'show';
    my $tpShowTimes    = $preferences->TimePlanShowTimes || 'always';
    my $listViewPopup  = $preferences->ListViewPopup || 0;
    my $plannerItem    = $preferences->MenuItemPlanner || 'Always';
    my $homeItem       = $preferences->MenuItemHome    || 'Always';
    my $fiscalItem     = $preferences->MenuItemFiscal  || 'Always';
    my $fiscalType     = $preferences->FiscalType      || 'fixed';
    my $fiscalEpoch    = $preferences->FiscalEpoch     || '2000/01/01';
    my $popupWidth     = $preferences->PopupWidth      || 250;
    my $popupHeight    = $preferences->PopupHeight     || 350;
    my $popupExport    = $preferences->PopupExportOn   || 0; #true/false
    my $repeatEdit     = $preferences->RepeatEditWhich || 'All';
    my $emailSelect    = $preferences->EmailSelector   || 'all';
    my $timeEditWhich  = $preferences->TimeEditWhich   || 'startend';
    my $defPeriod      = $preferences->DefaultPeriod   || 'day';
    my $plannerSelf    = $preferences->PlannerHideSelf || 0;

    $fiscalEpoch = Date->new ($fiscalEpoch);
    my %fiscalEpoch = (year  => $fiscalEpoch->year,
                       month => $fiscalEpoch->month,
                       day   => $fiscalEpoch->day);

    print startform;

    # If group, allow selecting any calendar we have Admin permission for
    my $calSelector;
    my %onChange = ();
    if ($self->isMultiCal) {
        my $mess;
        ($calSelector, $mess) = $self->calendarSelector;
        print $mess if $mess;

        foreach (@names) {
            $onChange{$_} = $self->getOnChange ($_);
        }
    }

    my %rows;
    $rows{day} = table (Tr (td (_weekdayPopup ('i18n'     => $i18n,
                                               'name'     => 'StartWeekOn',
                                               'onChange' => $onChange{day},
                                               'override' => $override,
                                               'default'  => $startWeekOn))));

    $rows{time} = table (Tr (td (popup_menu ('-name'    => 'MilitaryTime',
                                             '-default' => $militaryTime,
                                             -onChange  => $onChange{time},
                                               override => $override,
                                             '-values'  => [0, 1],
                                             '-labels'  => {'0' => '12 ' .
                                                            $i18n->get ('Hour')
                                                            . ' (AM/PM)',
                                                            '1' => '24 ' .
                                                            $i18n->get
                                                                 ('Hour')}))));

    $rows{display} = table ({width => '95%'},
                 Tr (td ({-align => 'right'},
                         $i18n->get ('Style:')),
                     td (popup_menu ('-name'    =>'BlockOrList',
                                     '-default' => $blockOrList,
                                     -onChange  => $onChange{display},
                                       override => $override,
                                     '-values'  => ['Block',     'List',
                                                    'Condensed', 'TimePlan',
                                                    'Planner'],
                          '-labels' => {Block     => $i18n->get ('Block'),
                                        List      => $i18n->get ('List'),
                                        Condensed => $i18n->get ('Condensed'),
                                        TimePlan  => $i18n->get ('Time Plan'),
                                        Planner   => $i18n->get ('Planner')})),
                     td ({-align => 'right'},
                         $i18n->get ('Amount:')),
                     td (popup_menu ('-name'    => 'DisplayAmount',
                                     '-default' => $displayAmount,
                                     -onChange  => $onChange{display},
                                       override => $override,
                                     '-values'  => ['Day', 'Week',
                                                    'Month', 'Quarter', 'Year',
                                                    'FPeriod', 'FQuarter',
                                                    'FYear'],
                      '-labels'  => {Day      => $i18n->get ('Day'),
                                     Week     => $i18n->get ('Week'),
                                     Month    => $i18n->get ('Month'),
                                     Quarter    => $i18n->get ('Quarter'),
                                     Year     => $i18n->get ('Year'),
                                     FPeriod  => $i18n->get ('Fiscal Period'),
                                     FQuarter => $i18n->get ('Fiscal Quarter'),
                                     FYear    => $i18n->get ('Fiscal Year')})),
                     td ({-align => 'right'}, $i18n->get ('Year View:')),
                     td (popup_menu (-name    => 'YearViewColor',
                                     -default => $yearColor,
                                     -onChange => $onChange{display},
                                      override => $override,
                                     -values  => ['Count', 'Categories',
                                                  'None'],
                -labels  => {Count      => $i18n->get ('Color by Event Count'),
                             Categories => $i18n->get ('Color by Categories'),
                             None       => $i18n->get ('No day coloring')})),
                    ));

    $rows{navbar} = table (Tr (td {-align => 'right'}, $i18n->get ('Type:'),
                               td (popup_menu ('-name'    => 'NavigationBar',
                                               '-default' => $navigationBar,
                                               -onChange  => $onChange{navbar},
                                                 override => $override,
                                               '-values'  => ['Absolute',
                                                              'Relative',
                                                              'Both'],
                             '-labels' => {Absolute => $i18n->get ('Absolute'),
                                           Relative => $i18n->get ('Relative'),
                                           Both     => $i18n->get ('Both')})),
                               td {-align => 'right'}, $i18n->get('Location:'),
                               td (popup_menu ('-name'    => 'NavBarSite',
                                               '-default' => $navBarSite,
                                               -onChange  => $onChange{navbar},
                                                 override => $override,
                                               '-values'  => ['top',
                                                              'bottom',
                                                              'both',
                                                              'neither'],
                             '-labels' => {top     => $i18n->get ('Top'),
                                           bottom  => $i18n->get ('Bottom'),
                                           both    => $i18n->get ('Both'),
                                           neither => $i18n->get
                                                        ("Don't Display")}))));

    my $displayMenu = ($bottomBars =~ /display/i);
    my $navBarMenu  = ($bottomBars =~ /navbar/i);
    my $calMenu     = ($bottomBars =~ /cal/i);
    my $sysMenu     = ($bottomBars =~ /sys/i);
    $rows{menus} = table ({-cellpadding => 4},
                          Tr (td (checkbox (-name => 'DisplayMenu',
                                            -checked => $displayMenu,
                                            -onChange => $onChange{menus},
                                             override => $override,
                                            -value   => 'display',
                                            -label   => ' ' . $i18n->get
                                                           ('Display'))),
                              td (checkbox (-name => 'NavBarMenu',
                                            -checked => $navBarMenu,
                                            -onChange => $onChange{menus},
                                            override => $override,
                                            -value   => 'navbar',
                                            -label   => ' ' . $i18n->get
                                                         ('Navigation Bar'))),
                              td (checkbox (-name => 'CalMenu',
                                            -checked => $calMenu,
                                            -onChange => $onChange{menus},
                                            override => $override,
                                            -value   => 'cal',
                                            -label   => ' ' . $i18n->get
                                                         ('This Calendar'))),
                              td (checkbox (-name => 'SysMenu',
                                            -checked => $sysMenu,
                                            -onChange => $onChange{menus},
                                            override => $override,
                                            -value   => 'sys',
                                            -label   => ' ' . $i18n->get
                                                        ('System Options')))));

    my %itemLabels = (Always => $i18n->get ('Always'),
                      Add    => $i18n->get ('Users w/Add'),
                      Admin  => $i18n->get ('Users w/Admin'),
                      Never  => $i18n->get ('Never'));
    $rows{menuItems} = table (Tr (
                         td ({-align => 'right'},
                             $i18n->get ('<i>Home</i> link:')),
                         td (popup_menu (-name    => 'MenuItemHome',
                                         -default => $homeItem,
                                         -onChange => $onChange{menuItems},
                                         override => $override,
                                         -values  => ['Always', 'Admin',
                                                      'Never'],
                                         -labels  => \%itemLabels)),
                         td ({-align => 'right'},
                             $i18n->get ('<i>Planner</i> link:')),
                         td (popup_menu (-name    => 'MenuItemPlanner',
                                         -default => $plannerItem,
                                         -onChange => $onChange{menuItems},
                                         override => $override,
                                         -values  => ['Always', 'Add',
                                                      'Admin', 'Never'],
                                         -labels  => \%itemLabels)),
                         td ({-align => 'right'},
                             $i18n->get ('<i>Fiscal</i> links:')),
                         td (popup_menu (-name    => 'MenuItemFiscal',
                                         -default => $fiscalItem,
                                         -onChange => $onChange{menuItems},
                                         override => $override,
                                         -values  => ['Always', 'Never'],
                                         -labels  => \%itemLabels))));

    $rows{weekend} = table (Tr (td (popup_menu ('-name'    => 'ShowWeekend',
                                                '-default' => $showWeekend,
                                              -onChange => $onChange{weekend},
                                                override => $override,
                                                '-values'  => [0, 1],
                                                '-labels'  => {'0' => 
                                                       $i18n->get ('Hide'),
                                                               '1' =>
                                                  $i18n->get ('Display')})),
                                td (font ({-size => -1},
                                          $i18n->get ('You can have Block ' .
                      'and List views display only Monday - Friday')))));

    $rows{weeknum} = table (Tr (td (popup_menu ('-name'    => 'ShowWeekNums',
                                                '-default' => $showWeekNums,
                                              -onChange => $onChange{weeknum},
                                                override => $override,
                                                '-values'  => [0, 1],
                                                '-labels'  => {'0' =>
                                                       $i18n->get ('Hide'),
                                                               '1' =>
                                                  $i18n->get ('Display')})),
                                td ($i18n->get('The first week of the year:')),
                                td (popup_menu ('-name'    => 'WhichWeekNums',
                                                '-default' => $whichWeekNums,
                                              -onChange => $onChange{weeknum},
                                                override => $override,
                                                '-values'  => [1, 4, 7],
                                                '-labels'  => {'1' => 
                                    $i18n->get ('has January 1st in it'),
                                                               '4' =>
                                    $i18n->get ('has at least 4 days in it'),
                                                               '7' =>
                                    $i18n->get ('has 7 days in it')}))));

    $rows{listviewpop} = table (Tr (
                          td (popup_menu ('-name'    => 'ListViewPopup',
                                          '-default' => $listViewPopup,
                                          -onChange  => $onChange{listviewpop},
                                          override   => $override,
                                          '-values'  => [0, 1],
                                          '-labels'  => {'1' =>
                                                        $i18n->get ('Display'),
                                                         '0' =>
                                                        $i18n->get ('Hide')})),
                                    td (font ({-size => -1},
                                              $i18n->get ('Display or hide ' .
                      'the Popup Text column in List and Condensed views')))));


    my @sizes = (100, 150, 200, 250, 300, 350, 400, 450, 500, 550, 600,
                 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70);

    my %labels = map {$_ => $_ < 100 ? "$_ % of screen" : "$_ pixels"} @sizes;

    $rows{popup} = table (Tr (td ($i18n->get ('Width') . ':'),
                              td (popup_menu (-name    => 'PopupWidth',
                                              -default => $popupWidth,
                                              -onChange => $onChange{popup},
                                              override => $override,
                                              -labels  => \%labels,
                                              -values  => \@sizes)),
                              td ('&nbsp;'),
                              td ($i18n->get ('Height') . ':'),
                              td (popup_menu (-name    => 'PopupHeight',
                                              -default => $popupHeight,
                                              -onChange => $onChange{popup},
                                              override => $override,
                                              -labels  => \%labels,
                                              -values  => \@sizes)),
                              td ('&nbsp;'),
                              td (checkbox (-name => 'PopupExportOn',
                                            -checked => $popupExport,
                                            -onChange => $onChange{popup},
                                            override => $override,
                                            -value   => 1,
                                            -label   => ' ' . $i18n->get
                                            ('Display iCalendar Export link')))
                              ));

    my %startHourLabels = map {$_ => _timeLabel ($_, $militaryTime)} (0..23);
    sub _timeLabel {
        my ($hour, $milTime) = @_;
        my $amPm = '';
        if (!$milTime) {
            $amPm = $hour < 12 ? 'am ' : 'pm ';
            $hour = 12 if $hour == 0;
            $hour -= 12 if ($hour > 12);
        }
        return "$hour:00" . $amPm;
    }
    $rows{dayview} = table (Tr (td ({-align => 'right'},
                                   $i18n->get ('Number of hours to display:')),
                                td (popup_menu (-name    => 'DayViewHours',
                                                -default => $dayViewHours,
                                              -onChange => $onChange{dayview},
                                                override => $override,
                                                -values  => [1..12, 14,16, 18,
                                                             20, 22, 24])),
                                td ({-align => 'right'},
                                    $i18n->get ('Start Hour:')),
                                td (popup_menu (
                                        -name    => 'DayViewStart',
                                        -default => $dayViewStart,
                                        -onChange => $onChange{dayview},
                                                override => $override,
                                        -values  => [0..23],
                                        -labels  => \%startHourLabels)),
                                td ({-align => 'right'},
                                    $i18n->get ('Controls Menu:')),
                                td (popup_menu (
                                         -name    => 'DayViewControls',
                                         -default => $dayViewControls,
                                         -onChange => $onChange{dayview},
                                          override => $override,
                                         -values  => ['show', 'hide'],
                                         -labels  => {show =>
                                                        $i18n->get ('Display'),
                                                      hide =>
                                                        $i18n->get ('Hide')}))
                               ));

    $rows{daytimes} = table (Tr (
                          td (popup_menu (-name     => 'TimePlanShowTimes',
                                          -default  => $tpShowTimes,
                                          -onChange => $onChange{daytimes},
                                          -override => $override,
                                          -values   => [qw/always never
                                                           unaligned/],
                                          -labels   => {'always' =>
                                        $i18n->get ('Always display'),
                                                        'never' =>
                                        $i18n->get ('Never display'),
                                                        'unaligned' =>
                                        $i18n->get ('Display if unaligned')})),
                                 td (font ({-size => -1},
                                     $i18n->get ('In the Time Plan view, ' .
                                                 'show event times above ' .
                                                 'event text?')))));

    my $hideRepeat = ($hideThem =~ /repeat/i);
    my $hideMail   = ($hideThem =~ /mail/i);

    my $mailBox = td (checkbox (-name => 'HideMail',
                                -checked => $hideMail,
                                -onChange => $onChange{editForm},
                                override => $override,
                                -value   => 'mail',
                                -label   => ' ' . $i18n->get
                                                     ('Hide Email Controls')));

    %labels = (startend => $i18n->get ('Start time, end time'),
               period   => $i18n->get ('Defined time periods'),
               both     => $i18n->get ('Both times and periods'),
               none     => $i18n->get ('None - no time entry'));
    my $timeEdit = td ({align => 'center'},
                       $i18n->get ('Display which "Time" Controls: ') .
                       popup_menu (-name    => 'TimeEditWhich',
                                   -default => $timeEditWhich,
                                   -onChange => $onChange{editForm},
                                   override => $override,
                                   -values  => [qw/startend period both none/],
                                   -labels  => \%labels));

    $rows{editForm} = table ({-cellpadding => 4},
                             Tr (td (checkbox (-name => 'HideRepeat',
                                               -checked => $hideRepeat,
                                              -onChange => $onChange{editForm},
                                               override => $override,
                                               -value   => 'repeat',
                                               -label   => ' ' . $i18n->get
                                                 ('Hide Repeat Controls'))),
                                 $mailBox, $timeEdit));

    %labels = (none    => $i18n->get ("Don't display"),
               aliases => $i18n->get ('Email aliases only'),
               users   => $i18n->get ('User names only'),
               all     => $i18n->get ('Aliases and User names'));
    $rows{emailSelect} = table ({-cellpadding => 4},
                             Tr (td (popup_menu (-name    => 'EmailSelector',
                                                 -default => $emailSelect,
                                                 -onChange =>
                                                     $onChange{emailSelect},
                                                 -override => $override,
                                                 -values  => [qw /none all
                                                                  aliases
                                                                  users/],
                                                 -labels  => \%labels)),
                                 td ($i18n->get ('Email Address Selector ' .
                                                 'on Event Edit Form'))));

    %labels = (All  => '"' . $i18n->get ('All') . '"',
               Only => '"' . $i18n->get ('Only This Instance') . '"',
               Past   => '"' . $i18n->get ('This date, and all before') . '"',
               Future => '"' . $i18n->get ('This date, and all after') . '"',
              );
    $rows{repeatedit} = table ({-cellpadding => 4},
                               Tr (td (popup_menu (-name => 'RepeatEditWhich',
                                                   -default => $repeatEdit,
                                            -onChange => $onChange{repeatedit},
                                                   override => $override,
                                                   -values  => [qw/All
                                                                   Only
                                                                   Past
                                                                   Future/],
                                                   -labels   => \%labels)),
                                   td ($i18n->get ('Default for editing or ' .
                                                   'deleting repeating ' .
                                                   'events'))));

    # Epoch and Fixed/Floating and Epoch
    my $Fiscal_Help = $i18n->get ('AdminDisplay_FiscalHelp');
    if ($Fiscal_Help eq 'AdminDisplay_FiscalHelp') {
        ($Fiscal_Help =<<'        ENDFISCALHELP') =~ s/^ +//gm;
        Fixed fiscal years always start and end on the same month\n
        and day, e.g. 'Aug. 1 to July. 31'. So, the year part of\n
        the 'Start of Year' setting is ignored.\n\n
        Floating fiscal years are always 364 days long, i.e. 52 weeks.\n
        This means the start of the year changes every year, so the\n
        year in 'Start of Year' is important.\n\n
        If you are not using fiscal years, you can ignore this; you can\n
        also turn off the choice for Fiscal views by selecting 'Never'\n
        for 'Fiscal Links' in the 'Menu Bar Items to Display' choice above.
        ENDFISCALHELP
    }
    $Fiscal_Help =~ s/'/\\'/g; #'
    $rows{fiscal} = table ({-width => '90%',
                            -cellpadding => 4},
                           Tr (td ({-align => 'right'},
                                   $i18n->get ('Type:')),
                               td (popup_menu (-name    => 'FiscalType',
                                               -default => $fiscalType,
                                               -onChange => $onChange{fiscal},
                                               override => $override,
                                               -values  => ['fixed',
                                                            'floating'],
                                               -labels  =>
                                       {fixed    => $i18n->get ('Fixed'),
                                        floating => $i18n->get ('Floating')})),
                               td ({-align => 'right'},
                                   $i18n->get ('Start of year:')),
                               td ('<nobr>' .
                                   popup_menu (-name    => 'FiscalEpochYear',
                                               -default => $fiscalEpoch{year},
                                               -onChange => $onChange{fiscal},
                                               override => $override,
                                               -values  => [1990..2010]) .
                                   popup_menu (-name    => 'FiscalEpochMonth',
                                               -default => $fiscalEpoch{month},
                                               -onChange => $onChange{fiscal},
                                               override => $override,
                                               -values  => [1..12],
                                               -labels  => {
                                           map {($_, $i18n->get
                                                       (Date->monthName ($_)))}
                                               (1..12)}),
                                   popup_menu (-name    => 'FiscalEpochDay',
                                               -default => $fiscalEpoch{day},
                                               -onChange => $onChange{fiscal},
                                               override => $override,
                                               -values  => [1..31])
                                   . '</nobr>'),
                               td (a ({href =>
                                       "JavaScript:alert (\'$Fiscal_Help\')"},
                                      $i18n->get ('What does this mean?')))));

    %labels = (day       => $i18n->get ('Day'),
               dayBanner => $i18n->get ('Day (Bannered)'),
               week      => $i18n->get ('Week'),
               month     => $i18n->get ('Month'),
               year      => $i18n->get ('Year'));
    $rows{defPeriod} = table ({-cellpadding => 4},
                             Tr (td (popup_menu (-name    => 'DefaultPeriod',
                                                 -default => $defPeriod,
                                                 -onChange =>
                                                     $onChange{defPeriod},
                                                 -override => $override,
                                                 -values  => [qw /day
                                                                  dayBanner
                                                                  week
                                                                  month
                                                                  year/],
                                                 -labels  => \%labels)),
                                 td ($i18n->get ('Default for repeating ' .
                                                 'events on Edit Form.') .
                                     $i18n->get
                       ('"Bannered" means the event will display spread out ' .
                        'across the days it repeats on.'))));

    %labels = (0 => $i18n->get ('Display the including calendar'),
               1 => $i18n->get ('Do NOT display including calendar'));
    $rows{plannerself} = table ({-cellpadding => 4},
                             Tr (td (popup_menu (-name    => 'PlannerHideSelf',
                                                 -default => $plannerSelf,
                                                 -onChange =>
                                                     $onChange{plannerself},
                                                 -override => $override,
                                                 -values  => [0, 1],
                                                 -labels  => \%labels)),
                                 td ($i18n->get ('Whether or not to display ' .
                                                 'the main including ' .
                                                 'calendar in the Planner ' .
                                                 'views.'))));
    my $bgcolor = '#dddddd';
    my $bg2     = '#eeeeee';

    my @rows;

    # could use @names, but display order might be differmint
    foreach (qw (day time display navbar SPACE
                 weekend weeknum   SPACE
                 popup listviewpop SPACE
                 dayview daytimes  SPACE
                 menus menuItems   SPACE
                 repeatedit editForm defPeriod emailSelect SPACE
                 plannerself fiscal)) {
        if (/SPACE/) {
            push @rows, Tr (td ('&nbsp;'));
            next;
        }

        ($bgcolor, $bg2) = ($bg2, $bgcolor);
        push @rows, Tr ({bgcolor => '#cdcdcd'},
                        $self->groupToggle (name  => $_),
                        td ({align   => 'right',
                             bgcolor => '#cdcdcd',
                             width   => '22%'},
                            b ('<nobr>' . $captions{$_} . ': ' . '</nobr>')),
                        td ({bgcolor => $bgcolor}, $rows{$_}));
    }

    print $calSelector if $calSelector;

    my ($setAlljs, $setAllRow) = $self->setAllJavascript;
    print $setAlljs;
    push @rows, Tr (td ({-align => 'center'}, $setAllRow)) if $setAllRow;

    print '<br>';
    print table ({width => '90%',
                  align => 'center',
                  cellspacing => 0,
                  border => 0},
                 @rows);

    print '<hr>';

    print submit (-name => 'Save',   -value => $i18n->get ('Save'));
    print '&nbsp;';
    print submit (-name => 'Cancel', -value => $i18n->get ('Done'));
    print '&nbsp;';
    print reset  (-value => 'Reset');

    print $self->hiddenParams;
    print endform;
    print $self->helpNotes;
    print $cgi->end_html;
}

# Produce a popup to select a day of the week.
# Pash hash pairs with 'name', 'default' keys. (Default must be int, 1-7)
# Defaults to Sunday.
sub _weekdayPopup {
    my %args = (name    => 'WeekdayPopup',
                default => 7,
                @_);

    $args{default} = 7 if (!$args{default} or
                           $args{default} < 1 or $args{default} > 7);

    popup_menu ('-name'     => $args{name},
                '-default'  => $args{default},
                '-onChange' => $args{onChange},
                '-override' => $args{override},
                '-values'   => [7, 1],
                '-labels'   => {'7' => $args{i18n}->get ('Sunday'),
                                '1' => $args{i18n}->get ('Monday')});
}

1;

Anon7 - 2021