summaryrefslogtreecommitdiff
path: root/fml/lib/Mail/ThreadTrack/Print
diff options
context:
space:
mode:
authorfukachan <fukachan>2001-11-02 09:07:39 +0000
committerfukachan <fukachan>2001-11-02 09:07:39 +0000
commitda5317c302d19a42f78da485f867417a06295ed1 (patch)
tree840100bd040be6eb4b1ab2330f35bb87dbc2da6d /fml/lib/Mail/ThreadTrack/Print
parenta258d59ae064cd2f696b5a9038a90fa8e6ad0fd3 (diff)
downloadfml8-snap-20011102.tar.gz
fml8-snap-20011102.tar.bz2
fml8-snap-20011102.zip
Mail::ThreadTracksnap-20011102
Diffstat (limited to 'fml/lib/Mail/ThreadTrack/Print')
-rw-r--r--fml/lib/Mail/ThreadTrack/Print/CGI.pm192
-rw-r--r--fml/lib/Mail/ThreadTrack/Print/Text.pm0
2 files changed, 192 insertions, 0 deletions
diff --git a/fml/lib/Mail/ThreadTrack/Print/CGI.pm b/fml/lib/Mail/ThreadTrack/Print/CGI.pm
new file mode 100644
index 00000000..6fe0e844
--- /dev/null
+++ b/fml/lib/Mail/ThreadTrack/Print/CGI.pm
@@ -0,0 +1,192 @@
+sub STR2EUC
+{
+ my ($str) = @_;
+
+ use Jcode;
+ &Jcode::convert(\$str, 'euc');
+ return $str;
+}
+
+
+sub show_articles_for_ticket
+{
+ my ($self, $ticket_id) = @_;
+ my $mode = $self->get_mode || 'text';
+ my $config = $self->{ _config };
+ my $spool_dir = $config->{ spool_dir };
+
+ $self->db_open();
+
+ my $articles = $self->{ _hash_table }->{ _articles }->{ $ticket_id };
+
+ print "<B>";
+ print "show contents related with ticket_id=$ticket_id\n";
+ print "</B>";
+ print "<HR>";
+ print "<PRE>\n";
+
+ if (defined($articles) && defined($spool_dir) && -d $spool_dir) {
+ use FileHandle;
+
+ my $s = '';
+ for (split(/\s+/, $articles)) {
+ my $file = File::Spec->catfile($spool_dir, $_);
+ my $fh = new FileHandle $file;
+ while (defined($_ = $fh->getline())) {
+ next if 1 .. /^$/;
+
+ $s = STR2EUC($_);
+ $s =~ s/&/&amp;/g;
+ $s =~ s/</&lt;/g;
+ $s =~ s/>/&gt;/g;
+ $s =~ s/\"/&quot;/g;
+ print $s;
+ }
+ $fh->close;
+ }
+ }
+
+ print "</PRE>";
+
+ $self->db_close();
+}
+
+
+sub cgi_top_menu
+{
+ my ($self) = @_;
+ my $config = $self->{ _config };
+ my $action = 'fmlticket.cgi';
+ my $target = $config->{ ticket_cgi_target_window } || 'TicketCGIWindow';
+
+ use DirHandle;
+ my $dh = new DirHandle $config->{ ml_home_prefix };
+ my @dirlist;
+ my $prefix = $config->{ ml_home_prefix };
+ while ($_ = $dh->read()) {
+ next if /^\./;
+ next if /^\@/;
+ push(@dirlist, $_) if -f "$prefix/$_/config.cf";
+ }
+ $dh->close;
+
+ if ($self->get_mode eq 'html') {
+ require 'ctime.pl';
+ my $time = ctime(time);
+ my $ml_name = $config->{ ml_name };
+ print "[$time] the brief summary for \"$ml_name\" ML<BR>";
+ }
+
+ use CGI qw/:standard/;
+ print start_form(-action=>$action, -target=>$target);
+ print "mailing list: ",
+ popup_menu(-name => 'ml_name', -values => \@dirlist),
+ submit(-name => 'go'),
+ end_form;
+}
+
+
+
+# This shows summary on C<$ticket_id> in HTML language.
+# It is used in C<FML::CGI::TicketSystem>.
+sub _show_ticket_by_html_table
+{
+ my ($self, $optargs) = @_;
+ my $config = $self->{ _config };
+ my $ml_name = $config->{ ml_name };
+ my $spool_dir = $config->{ spool_dir };
+ my $action = 'fmlticket.cgi';
+ my $target = $config->{ ticket_cgi_target_window } || 'TicketCGIWindow';
+
+ # printf($fd $format,
+ # $date, $age, $status, $tid, $rh->{ _articles }->{ $tid });
+ my $format = $optargs->{ format };
+ my $date = $optargs->{ date };
+ my $age = $optargs->{ age };
+ my $status = $optargs->{ status };
+ my $tid = $optargs->{ tid };
+ my $articles = $optargs->{ articles };
+ my $aid = (split(/\s+/, $articles))[0];
+
+ # do nothing if the $ticket_id is unknown.
+ return unless $tid;
+
+ # <FORM ACTION=> ..>
+ my $xtid = CGI::escape($tid);
+ $action = "${action}?ml_name=${ml_name}";
+ $action .= "&ticket_id=$xtid&article_id=$aid";
+
+ print "<TR>\n";
+ print "<TD>";
+ print "<A HREF=\"$action&action=close\" TARGET=\"$target.close\">";
+ print "[close]</A>\n";
+ print "<BR>\n";
+ print "<A HREF=\"$action&action=show\" TARGET=\"$target.show\">";
+ print "[see articles]</A>\n";
+ print "<TD>$date\n";
+ print "<TD>$age\n";
+ print "<TD>$status\n";
+ print "<TD>$tid\n";
+ print "<TD>";
+
+ $aid = (split(/\s+/, $articles))[0];
+ my $buf = $self->_article_summary(File::Spec->catfile($spool_dir, $aid));
+ print STR2EUC($buf);
+}
+
+
+=head2 C<run_cgi()>
+
+execute CGI.
+
+=cut
+
+sub run_cgi
+{
+ my ($self) = @_;
+ my $config = $self->{ _config };
+ my $title = $config->{ ticket_cgi_title } || 'ticket system interface';
+ my $color = $config->{ ticket_cgi_bgcolor } || '#E6E6FA';
+
+ # XXX $ml_name may change by HTTP request
+ $config->{ ml_name } = param('ml_name') if param('ml_name');
+
+ # ensure the current mode
+ $self->mode('html');
+
+ # load standard CGI routines
+ use CGI qw/:standard/;
+
+ # get action parameter via HTTP
+ my $action = param('action') || 'list';
+ my $ticket_id = param('ticket_id');
+
+ # o.k start html
+ print start_html(-title=>$title,-BGCOLOR=>$color), "\n";
+
+ if ($action eq 'close') {
+ $self->set_status({
+ ticket_id => $ticket_id,
+ status => 'closed',
+ });
+ }
+
+ if ($action eq 'show') {
+ Log("run.cgi.show_articles for $ticket_id");
+ $self->show_articles_for_ticket($ticket_id);
+ }
+ else {
+ # menu at the top of scrren
+ $self->cgi_top_menu();
+
+ # show summary
+ $self->show_summary();
+ }
+
+ # o.k. end of html
+ print end_html;
+ print "\n";
+}
+
+
+1;
diff --git a/fml/lib/Mail/ThreadTrack/Print/Text.pm b/fml/lib/Mail/ThreadTrack/Print/Text.pm
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/fml/lib/Mail/ThreadTrack/Print/Text.pm