use utf8;
use warnings; no warnings "redefine";
use strict;
use Loader qw(line_in strip_kn warn_arbeit list_deskr
	set_deskr_info set_deskr_name set_deskr_gruppe set_deskr_idchar
	log_view log_update);
use Fehler qw(report_fehler);
use Dbase::Globals qw(get_descr);
use Dbase::Help qw(Do DoFn);

sub edit_deskr($$;$) {
	my($desc,$id,$okn) = @_;
	my $dname = DoFn "select name from descr_typ where id=$desc";
	my $dtxt = get_descr($dname,$id);
	my $kn = strip_kn($okn)."Descr_$dname:$id:$dtxt";
	my $work = warn_arbeit("descr","$id,$dtxt","*",$kn);

	while(1) {
		my $act = line_in "$kn >",4; last if $act eq "";
		if($act eq "?") {
			print <<'END';
l   auflisten
i   Infotext setzen            n  Namen setzen
g   Gruppenkennung setzen      k  ID-Zeichen setzen (für die Übersicht)
del löschen
END
			next;
		}
		if($act eq "l") { list_deskr($desc,$id,$kn); next; }
		if($act eq "i") { set_deskr_info($desc,$id,$kn); next; }
		if($act eq "k") { set_deskr_idchar($desc,$id,$kn); next; }
		if($act eq "n") {
			set_deskr_name($desc,$id,$kn);
			$dtxt = get_descr($dname,$id);
			$kn = strip_kn($okn)."Descr_$dname:$id:$dtxt";
			next; }
		if($act eq "g") { set_deskr_gruppe($desc,$id,$kn); next; }
		if($act eq "H") { log_view($kn,"descr","typ",$desc,"descr",$id); next; }
		if($act eq "del") {
			log_update("descr","typ",$desc,"descr",$id,undef,"-");
			Do("delete from descr where typ=$desc and descr=$id");
			return undef;
		}
        print "Aktion '$act' kenne ich nicht. Liste mit '?'.\n";
		next; fehler: report_fehler(4);
	}
	wantarray ? ($desc,$id) : $id;
}
1;
