use utf8;
use warnings; no warnings "redefine";
use strict;

use Loader qw(
	edit_ticket_seq_text
	flip_ticket_seq_intern
	line_in line_printer log_view
	set_ticket_seq_data set_ticket_seq_person set_ticket_seq_typ
	ticket_get_text
	valid_ticket
  );
use Fehler qw(report_fehler);
use Dbase::Globals qw(flatten);

sub edit_ticket_seq($$;$) {
	my($tid,$seq,$kn) = @_;
	return unless valid_ticket($tid);

	if(DoFn("select count(*) from ticketid where ticket = $tid and seq = $seq") == 0) {
		print "Text $seq im Ticket $tid gibt es nicht.\n";
		return;
	}
	$kn .= " Text:$seq";

	tickedit: while(1) {
		my $act = line_in "$kn >",4; last if $act eq "";
		if($act eq '?') {
			print <<'END';
p   Gespeicherten Text ausgeben
l   Daten ausgeben

e   Gespeicherten Text editieren (AHEM!!)
i   intern-Flag toggeln         rt  RT-Typ setzen      rd  RT-Daten setzen
a   Autor/Absender korrigieren  A   Absender als freier Text / Email
END
			next;
		}
		if($act eq "H") { log_view($kn,"ticketid","ticket",$tid,"seq",$seq); next; }
		if($act eq "e") { edit_ticket_seq_text($tid,$seq,$kn); next; }
		if($act eq "a") { set_ticket_seq_person($tid,$seq,$kn); next; }
		if($act eq "rt") { set_ticket_seq_typ($tid,$seq,$kn); next; }
		if($act eq "rd") { set_ticket_seq_data($tid,$seq,$kn); next; }
		if($act eq "i") { flip_ticket_seq_intern($tid,$seq,$kn); next; }
		if($act eq 'p') { line_printer(1);
		                  flatten { print $Db::pr_fh @_ }
						  	  ticket_get_text($tid,$seq,1+16+2+64);
						  next; }
		if($act eq 'l') { line_printer(0);
		                  print $Db::pr_fh(ticket_get_text($tid,$seq,32+1+2));
						  next; }
		print "Aktion '$act' kenne ich nicht. Liste mit '?'.\n";
		next; fehler: report_fehler(4);
	}
	$tid;
}

1;
