summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfukachan <fukachan>2001-03-21 15:36:43 +0000
committerfukachan <fukachan>2001-03-21 15:36:43 +0000
commit0b1345f83ef4324fbb64aa67bb42fa6727c277db (patch)
tree635d526bb2dc3739e400eb6350522c36c389cae6
parent24043997acfdf72904b49b30a58335d55773bee4 (diff)
downloadfml8-0b1345f83ef4324fbb64aa67bb42fa6727c277db.tar.gz
fml8-0b1345f83ef4324fbb64aa67bb42fa6727c277db.tar.bz2
fml8-0b1345f83ef4324fbb64aa67bb42fa6727c277db.zip
change ticket_model to minimal_states by default
show_summary() wraps show_summary_in_{text,html}() output mode (text or html) is controlled by $self->mode() method.
-rw-r--r--fml/lib/FML/Ticket/Model/index.ja.html10
-rw-r--r--fml/lib/FML/Ticket/Model/minimal_states.ja.txt (renamed from fml/lib/FML/Ticket/Model/minimal_by_db.ja.txt)0
-rw-r--r--fml/lib/FML/Ticket/Model/minimal_states.pm (renamed from fml/lib/FML/Ticket/Model/minimal_by_db.pm)154
3 files changed, 127 insertions, 37 deletions
diff --git a/fml/lib/FML/Ticket/Model/index.ja.html b/fml/lib/FML/Ticket/Model/index.ja.html
index fff40484..8d1f3ce2 100644
--- a/fml/lib/FML/Ticket/Model/index.ja.html
+++ b/fml/lib/FML/Ticket/Model/index.ja.html
@@ -11,17 +11,17 @@ FML/Ticket/Model::* classes
<BODY BGCOLOR="#E6E6FA">
<CENTER><EM>FML::Ticket::Model class modules</EM></CENTER>
<HR>
-<A HREF="minimal_by_db.ja.txt">minimal_by_db(Japanese)</A>
+<A HREF="minimal_states.ja.txt">minimal_states(Japanese)</A>
<HR>
<TABLE>
<TR>
<TD>
- minimal_by_db.pm <TD>
-<A HREF="minimal_by_db.pm">[source]</A>
+ minimal_states.pm <TD>
+<A HREF="minimal_states.pm">[source]</A>
<TD>
-<A HREF="@@doc/minimal_by_db.txt">[manual]</A>
+<A HREF="@@doc/minimal_states.txt">[manual]</A>
<TD>
-<A HREF="@@doc/minimal_by_db.ja.html">[Japanese MEMO]</A>
+<A HREF="@@doc/minimal_states.ja.html">[Japanese MEMO]</A>
</TABLE>
</BODY>
</HTML>
diff --git a/fml/lib/FML/Ticket/Model/minimal_by_db.ja.txt b/fml/lib/FML/Ticket/Model/minimal_states.ja.txt
index 20e5f973..20e5f973 100644
--- a/fml/lib/FML/Ticket/Model/minimal_by_db.ja.txt
+++ b/fml/lib/FML/Ticket/Model/minimal_states.ja.txt
diff --git a/fml/lib/FML/Ticket/Model/minimal_by_db.pm b/fml/lib/FML/Ticket/Model/minimal_states.pm
index 66fbd20c..be5ce669 100644
--- a/fml/lib/FML/Ticket/Model/minimal_by_db.pm
+++ b/fml/lib/FML/Ticket/Model/minimal_states.pm
@@ -8,25 +8,25 @@
# $FML$
#
-package FML::Ticket::Model::minimal_by_db;
+package FML::Ticket::Model::minimal_states;
use strict;
use vars qw(@ISA @EXPORT @EXPORT_OK);
use Carp;
use FML::Log qw(Log LogWarn LogError);
+
use FML::Ticket::System;
+@ISA = qw(FML::Ticket::System);
-require Exporter;
-@ISA = qw(FML::Ticket::System Exporter);
=head1 NAME
-FML::Ticket::Model::minimal_by_db - a ticket system minimal_by_db
+FML::Ticket::Model::minimal_states - a ticket system minimal_states
=head1 SYNOPSIS
- use FML::Ticket::Model::minimal_by_db;
- my $ticket = FML::Ticket::Model::minimal_by_db->new($curproc, $args);
+ use FML::Ticket::Model::minimal_states;
+ my $ticket = FML::Ticket::Model::minimal_states->new($curproc, $args);
if (defined $ticket) {
$ticket->assign($curproc, $args);
$ticket->update_status($curproc, $args);
@@ -48,8 +48,8 @@ status.
|
A
-----------------
- | | |
- minimal_by_db model2 ....
+ | |
+ minimal_states model2 ....
=head1 METHODS
@@ -91,6 +91,13 @@ sub new
sub DESTROY {}
+sub mode
+{
+ my ($self, $args) = @_;
+ $self->{ _mode } = $args->{ mode } || 'text';
+}
+
+
=head2 C<assign($curproc, $args)>
assign a new ticket or extract the existing ticket-id from the subject.
@@ -319,7 +326,7 @@ sub _update_index_db
open DB.
It uses tie() to bind a hash to a DB file.
-Our minimal_by_db uses several DB files for
+Our minimal_states uses several DB files for
C<%ticket_id>,
C<%date>,
C<%status>,
@@ -484,27 +491,31 @@ It is also larger if $status is C<open>.
sub show_summary
{
+ my ($self, $curproc, $args, $optargs) = @_;
+ my $method = 'show_summary_in_'. $self->{ _mode };
+ $self->$method($curproc, $args, $optargs);
+}
+
+
+sub show_summary_in_text
+{
my ($self, $curproc, $args) = @_;
my ($tid, $status, $ticket_id);
- # rh: Reference to Hash table, which is tied to db_dir/*db's
+ # rh: ticket id list, which is ARRAY REFERENCE tied to db_dir/*db's
$ticket_id = $self->get_id_list($curproc, $args);
# self->{ _hash_table } is tied to DB's.
$self->open_db($curproc, $args);
if (@$ticket_id) {
- # age HASH TABLE
- my ($rh_age, $rh_cost) =
- $self->_calculate_age($curproc, $args, $ticket_id);
-
- # sort the ticket output order and print it out
- $self->_sort_ticket_id($curproc, $ticket_id, $rh_cost);
- $self->_print_ticket_summary($curproc, $args, $ticket_id, $rh_age);
+ # sort the ticket output order it out by cost
+ # and print the ticket summary in that order.
+ $self->sort($curproc, $args, $ticket_id);
+ $self->_print_ticket_summary($curproc, $args, $ticket_id);
# show short summary for each article
- $self->_print_article_summary($curproc, $args, $ticket_id,
- $rh_age, $rh_cost);
+ $self->_print_article_summary($curproc, $args, $ticket_id);
}
# self->{ _hash_table } is untied from DB's.
@@ -512,6 +523,28 @@ sub show_summary
}
+sub show_summary_in_html
+{
+ my ($self, $curproc, $args, $optargs) = @_;
+ my $rfd = $optargs->{ rfd };
+ my $wfd = $optargs->{ wfd };
+
+ my $ml_name = $curproc->{ config }->{ ml_name };
+ print "<HR>\n";
+ print "<P> $ml_name ML brief summary <BR>\n";
+ print "<PRE>\n";
+
+ my $argv = $args->{ ARGV };
+ $argv->[ 0 ] = 'list';
+ $self->show_summary_in_text($curproc, $args);
+
+ close($wfd);
+ while (<$rfd>) { print STDOUT " $_";}
+
+ print "</PRE>\n\n";
+}
+
+
# return @ticket_id ARRAY
sub get_id_list
{
@@ -539,9 +572,22 @@ sub get_id_list
}
+sub sort
+{
+ my ($self, $curproc, $args, $ticket_id) = @_;
+
+ # get age HASH TABLE
+ my ($age, $cost) = $self->_calculate_age($curproc, $args, $ticket_id);
+ $self->{ _age } = $age;
+ $self->{ _cost } = $cost;
+
+ $self->_sort_ticket_id($curproc, $args, $ticket_id, $cost);
+}
+
+
sub _sort_ticket_id
{
- my ($self, $curproc, $ticket_id, $cost) = @_;
+ my ($self, $curproc, $args, $ticket_id, $cost) = @_;
@$ticket_id = sort {
$cost->{$b} cmp $cost->{$a};
@@ -554,15 +600,15 @@ sub _calculate_age
my ($self, $curproc, $args, $ticket_id) = @_;
my (%age, %cost) = ();
my $now = time; # save the current UTC for convenience
- my $rh = $self->{ _hash_table };
+ my $rh = $self->{ _hash_table } || {};
my $day = 24*3600;
# $age hash referehence = { $ticket_id => $age };
- my (@aid, $last, $age, $date, $status);
- for my $tid (sort @$ticket_id) {
+ my (@aid, $last, $age, $date, $status, $tid) = ();
+ for $tid (sort @$ticket_id) {
# $last: get the latest one of article_id's
(@aid) = split(/\s+/, $rh->{ _articles }->{ $tid });
- $last = $aid[ $#aid ];
+ $last = $aid[ $#aid ] || 0;
# how long this ticket is not concerned ?
$age = sprintf("%2.1f%s", ($now - $rh->{ _date }->{ $last })/$day);
@@ -578,8 +624,8 @@ sub _calculate_age
sub _print_ticket_summary
{
- my ($self, $curproc, $args, $ticket_id, $rh_age) = @_;
-
+ my ($self, $curproc, $args, $ticket_id) = @_;
+ my $rh_age = $self->{ _age } || {};
my $fd = $self->{ _fd } || \*STDOUT;
my $rh = $self->{ _hash_table };
my $format = "%10s %5s %6s %-20s %s\n";
@@ -622,14 +668,16 @@ sub _cost_to_indicator
sub _print_article_summary
{
- my ($self, $curproc, $args, $ticket_id, $age, $cost) = @_;
- my $fd = $self->{ _fd } || \*STDOUT;
- my $rh = $self->{ _hash_table };
- my ($aid, @aid);
- my $spool_dir = $curproc->{ config }->{ spool_dir };
+ my ($self, $curproc, $args, $ticket_id) = @_;
+ my $age = $self->{ _age } || {};
+ my $cost = $self->{ _cost } || {};
+ my $fd = $self->{ _fd } || \*STDOUT;
+ my $rh = $self->{ _hash_table };
print $fd "\n\"!\" mark: stalled? please check and reply it.\n";
+ my ($aid, @aid);
+ my $spool_dir = $curproc->{ config }->{ spool_dir };
for my $tid (@$ticket_id) {
my $how_bad = _cost_to_indicator( $cost->{ $tid } );
printf $fd "\n%6s %-10s %s\n", $how_bad, $tid;
@@ -709,6 +757,48 @@ sub _header_summary
}
+
+sub cgi_top_menu
+{
+ my ($self, $curproc, $args) = @_;
+ my $config = $curproc->{ config };
+ my $action = '/cgi-bin/fmlticket.cgi';
+
+ use CGI qw/:standard/;
+ print start_form(-action=>$action,
+ -target=>'ResultsWindow'),
+ "mailing list: ", textfield('ml_name'),p,
+ "action: ", checkbox_group(-name=>'action',
+ -values=>['list', 'close'],
+ -defaults=>['list']),
+ p,
+ submit,
+ end_form;
+}
+
+
+=head2 C<html_show($ticket_id)>
+
+This shows summary on C<$ticket_id> in HTML language.
+It is used in C<FML::CGI::TicketSystem>.
+
+=cut
+
+
+sub html_show
+{
+ my ($self, $curproc, $args, $id) = @_;
+ my $config = $curproc->{ config };
+ my $ml_name = $config->{ ml_name };
+ my $action = $config->{ ticket_cgi_base_url } || "/cgi-bin/fmlticket.cgi";
+ $action = "${action}?ml_name=${ml_name}&action=close";
+
+ printf "%s", $id;
+ print "<A HREF=\"$action\" TARGET=\"$id\">close</A>\n";
+ print "<BR>\n";
+}
+
+
=head1 AUTHOR
Ken'ichi Fukamachi
@@ -722,7 +812,7 @@ redistribute it and/or modify it under the same terms as Perl itself.
=head1 HISTORY
-FML::Ticket::Model::minimal_by_db appeared in fml5 mailing list driver package.
+FML::Ticket::Model::minimal_states appeared in fml5 mailing list driver package.
See C<http://www.fml.org/> for more details.
=cut