depth: 1 adding: (( 1. Accomplishments in the past week * Solved the sample bugfix test question posed by Jeb. * Installed Visio from floppies. * Created a flow diagram of the Obsolete Bugfix Checkin use case * Hand-wrote proposed addition to initial pull-down so that it was completely manifest to the user how to edit the text of a bugfix checkin * Developed a "final common pathway" flow for re-submitting bugfix checkins that would be hooked into at two places in the original program flow --- the beginning from the new menu choice and when the entered bug # was already obsoleted * Presented this design and upon reflection decided that the man-hours for implementation could not justify such an elaborate implementation * Opted to simply move the entry of obsolescence to a new screen and parameterize it based on whether or not the bug was already obsoleted. * Successfully went end-to-end after removing the "Reason for Obsolescence" text from PreDeleteForm.dhtml and added it to my new ObsoleteText.pm/.dhtml files. )) depth: 2 adding: (( 1. General * Allow the editing of the text of already-obsoleted bug reports. * Automate generation of this report * Convert/print timesheet * Develop a deeper understanding of how the Web application framework actually works. Such an understanding is necessary if I want to write good error-checking and handling routines. Concomitant with the understanding, I am developing a tree of pod documentation for referral by me and other developers. * Implement error-checking in the newly developed ObsoleteText.pm. )) depth: 2 adding: (( 2. Vacations * None )) depth: 2 adding: (( 3. Classes * None )) depth: 1 adding: (( 2. Plans for the next week 1. General * Allow the editing of the text of already-obsoleted bug reports. * Automate generation of this report * Convert/print timesheet * Develop a deeper understanding of how the Web application framework actually works. Such an understanding is necessary if I want to write good error-checking and handling routines. Concomitant with the understanding, I am developing a tree of pod documentation for referral by me and other developers. * Implement error-checking in the newly developed ObsoleteText.pm. 2. Vacations * None 3. Classes * None )) depth: 1 adding: (( 3. Outstanding issues * Bcc'ed mail ends up in my INBOX. Would rather it be automatically filed somewhere * Netscape doesn't remember email addresses that it should. * AruchkinForm.pm: how does the decode() function work? $driver_path_map = ARUDB::cache( "select decode(release_id, 999, '107', 1250, '107', release_major_version || release_minor_version), release_id from aru_releases where obsolete <> 'Y' or obsolete is null"); * Not sure how updates are done to the database. )) #### Status report for the week ending 02-09-2001 1. Accomplishments in the past week * Solved the sample bugfix test question posed by Jeb. * Installed Visio from floppies. * Created a flow diagram of the Obsolete Bugfix Checkin use case * Hand-wrote proposed addition to initial pull-down so that it was completely manifest to the user how to edit the text of a bugfix checkin * Developed a "final common pathway" flow for re-submitting bugfix checkins that would be hooked into at two places in the original program flow --- the beginning from the new menu choice and when the entered bug # was already obsoleted * Presented this design and upon reflection decided that the man-hours for implementation could not justify such an elaborate implementation * Opted to simply move the entry of obsolescence to a new screen and parameterize it based on whether or not the bug was already obsoleted. * Successfully went end-to-end after removing the "Reason for Obsolescence" text from PreDeleteForm.dhtml and added it to my new ObsoleteText.pm/.dhtml files. 2. Plans for the next week 3. General * Allow the editing of the text of already-obsoleted bug reports. * Automate generation of this report * Convert/print timesheet * Develop a deeper understanding of how the Web application framework actually works. Such an understanding is necessary if I want to write good error-checking and handling routines. Concomitant with the understanding, I am developing a tree of pod documentation for referral by me and other developers. * Implement error-checking in the newly developed ObsoleteText.pm. 2. Vacations * None 3. Classes * None 3. Outstanding issues * Bcc'ed mail ends up in my INBOX. Would rather it be automatically filed somewhere * Netscape doesn't remember email addresses that it should. * AruchkinForm.pm: how does the decode() function work? $driver_path_map = ARUDB::cache( "select decode(release_id, 999, '107', 1250, '107', release_major_version || release_minor_version), release_id from aru_releases where obsolete <> 'Y' or obsolete is null"); * Not sure how updates are done to the database. #### package Text::Autoformat::Agenda; require 5.005_62; use strict; use warnings; require Exporter; our @ISA = qw(Exporter); # Items to export into callers namespace by default. Note: do not export # names by default without a very good reason. Use EXPORT_OK instead. # Do not simply export all your public functions/methods/constants. # This allows declaration use Text::Autoformat::Agenda ':all'; # If you do not need this, moving things directly into @EXPORT or @EXPORT_OK # will save memory. our %EXPORT_TAGS = ( 'all' => [ qw( ) ] ); our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } ); our @EXPORT = qw( ); our $VERSION = '0.01'; our $incr; our $depth; # Preloaded methods go here. sub new { my $class = shift; my %config = @_; my $self = bless \%config, $class; } sub tab { " " x (@_ ? $depth+$_[0] : $depth) } sub verbose_add_content { printf "depth: %d adding: ((%s))\n", $depth, $_[1]; $_[0] .= $_[1] } sub proc_array { my $self = shift; my $content; ++$depth; local $incr; while (@_) { my ($key,$val) = splice @_, 0, 2; if (!ref($val)) { ++$incr; my $F="$self->{Dir}/$val"; open F, $F or die "Couldnt open $F: $!"; my $_content; while () { $_content .= sprintf "%s%s", tab(1), $_; } my $bullet = sprintf "%s%s. %s\n%s", tab, $incr, $key, $_content; verbose_add_content($content,$bullet); # $content .= $bullet; } else { my $bullet = sprintf "%s%s. %s\n%s", tab, ++$incr, $key, $self->proc_array(@$val); verbose_add_content($content,$bullet); # $content .= $bullet ; } } --$depth; $content; } sub content { my $self = shift; my $body = $self->proc_array(@{$self->{Agenda}}); "$self->{Title}\n\n$body"; } 1; __END__ # Below is stub documentation for your module. You better edit it! =head1 NAME Text::Autoformat::Agenda - Automated agenda creation from flat files =head1 SYNOPSIS use Text::Autoformat::Agenda; # requires Text::Autoformat use Date::Business # not required. just useful for my agendas my $d = new Date::Business(FORCE => 'next'); my ($year,$month,$day) = ($d->image =~ /(.{4})(.{2})(.{2})/); my $pretty_date = "$month-$day-$year"; my $agenda = Text::Autoformat::Agenda->new ( Dir => '/home/tmbranno/status', Title => "Status report for the week ending $pretty_date", Agenda => [ "Accomplishments in the past week" => 'accomplishments.txt', "Plans for the next week" => [ General => 'plans.txt', Vacations => 'vacations.txt', Classes => 'classes.txt' ], "Outstanding issues" => 'issues.txt' ] ); print $agenda->content; =head1 DESCRIPTION Stub documentation for Text::Autoformat::Agenda, created by h2xs. It looks like the author of the extension was negligent enough to leave the stub unedited. Blah blah blah. =head2 EXPORT None by default. =head1 AUTHOR A. U. Thor, a.u.thor@a.galaxy.far.far.away =head1 SEE ALSO perl(1). =cut #### # Before `make install' is performed this script should be runnable with # `make test'. After `make install' it should work as `perl test.pl' ######################### We start with some black magic to print on failure. # Change 1..1 below to 1..last_test_to_print . # (It may become useful if the test is moved to ./t subdirectory.) BEGIN { $| = 1; print "1..1\n"; } END {print "not ok 1\n" unless $loaded;} use Text::Autoformat::Agenda; $loaded = 1; print "ok 1\n"; ######################### End of black magic. # Insert your test code below (better if it prints "ok 13" # (correspondingly "not ok 13") depending on the success of chunk 13 # of the test code): use Text::Autoformat; use Text::Autoformat::Agenda; # requires Text::Autoformat use Date::Business; # not required. just useful for my agendas my $d = new Date::Business(FORCE => 'next'); my ($year,$month,$day) = ($d->image =~ /(.{4})(.{2})(.{2})/); my $pretty_date = "$month-$day-$year"; my $agenda = Text::Autoformat::Agenda->new ( Dir => '/home/tmbranno/status', Title => "Status report for the week ending $pretty_date", Agenda => [ "Accomplishments in the past week" => 'accomplishments.txt', "Plans for the next week" => [ General => 'plans.txt', Vacations => 'vacations.txt', Classes => 'classes.txt' ], "Outstanding issues" => 'issues.txt' ] ); print autoformat $agenda->content, { all=>1 }; #### PERL_DL_NONLAZY=1 /arudev/bin/perl -Iblib/arch -Iblib/lib -I/arudev/lib/perl5/5.6.0/sun4-solaris -I/arudev/lib/perl5/5.6.0 test.pl