#! /usr/bin/perl

=head1 NAME

user_extra - administration of student accounts

=head1 SYNOPSIS

 https://server/schulkonsole/user_extra

=head1 DESCRIPTION

C<user_extra> lets you edit the extra user and course lists.
The HTML template is user_extra.tt.

=head2 Template variables

There are no other template variables but the variables of
Schulkonsole::Session.

=cut

use strict;
use utf8;
use lib '/usr/share/schulkonsole';
use Schulkonsole::Session;
use Schulkonsole::Sophomorix;

my $this_file = 'user_extra';


my $sk_session = new Schulkonsole::Session($this_file);
if (not $sk_session->get_password()) {
	my $q = new CGI;
	my $url = $q->url( -full => 1 );

	# we send cookies over secure connections only
	if ($url =~ s/^http:/https:/g) {
		$sk_session->redirect($url);
	} else {
		$sk_session->exit_with_login_page($this_file);
	}
}

my $q = $sk_session->query();

my $id = $sk_session->userdata('id');
my $password = $sk_session->get_password();


eval {
COMMANDS: {

$q->param('extrauseredit') and do {
	my @lines;
	foreach my $line (split "\n", $q->param('extrauser')) {
		$line =~ s/\r$//;
		push @lines, "$line\n";
	}

	Schulkonsole::Sophomorix::write_extra_user_file($id, $password, \@lines);

	$sk_session->set_status($sk_session->d()->get(
		'Datei wurde geschrieben'), 0);

	last COMMANDS;
};

$q->param('extracourseedit') and do {
	my @lines;
	foreach my $line (split "\n", $q->param('extracourse')) {
		$line =~ s/\r$//;
		push @lines, "$line\n";
	}

	Schulkonsole::Sophomorix::write_extra_course_file($id, $password, \@lines);

	$sk_session->set_status($sk_session->d()->get(
		'Datei wurde geschrieben'), 0);

	last COMMANDS;
};

}
};
if ($@) {
	$sk_session->standard_error_handling($this_file, $@);
}



eval {
my $extra_user_lines
	= Schulkonsole::Sophomorix::read_extra_user_file($id, $password);
$q->param('extrauser', join('', @$extra_user_lines))
	unless $q->param('extrauser');
my $extra_course_lines
	= Schulkonsole::Sophomorix::read_extra_course_file($id, $password);
$q->param('extracourse', join('', @$extra_course_lines))
	unless $q->param('extracourse');
};
if ($@) {
	$sk_session->standard_error_handling($this_file, $@);
}





$sk_session->print_page("$this_file.tt", $this_file);


=head2 Form fields

=over

=item C<extrauseredit>

Write C<extrauser> to user list

=item C<extrauser>

Content of the user list

=item C<extracourseedit>

Write C<extracourse> to course list

=item C<extracourse>

Content of the course list

=back
