#!/usr/bin/perl ## from a exercise-id --> ## shows the questions from ../MEX/mex.db ## accepts an answer ## validates the answers it according to ../MEX/mex.db --> perguntas e rexpostas ## saves the user inf ../MEX/user.db --> histório de cada user use strict; use utf8::all; use CGI q(:all); use MLDBM qw(DB_File); use DB_File; use Fcntl ; use Data::Dumper; $Data::Dumper::Terse=2; $Data::Dumper::Indent=0; BEGIN{ my $passarola_path = "#PASS_PATH"; # protect system by only allowing select bins to be executed #$ENV{PATH} = "$passarola_path/bin"; $Exercise::Gen::Verify::passarola_dir="$passarola_path/.passarola/db"; #$ENV{PATH} = "/usr/local/bin:/usr/bin:/bin"; } use Exercise::Gen::Verify; print header(-charset=>'utf-8'); print start_html(-title => 'MEX', # -style => { -src => 'styles2.css', # -type => 'text/css' # } ); print_hidescript(); print start_form; if(not param("exid") or not param('user')){ print_table(''); } else{ my $exid = param('exid'); my $user = param('user'); if(not exists_exercise_id($exid)){ print_table('Enunciado não existe!'); } else{ if(param('tipo') eq 'Fazer exercicio'){ my $test = get_exercise_test($exid); if(defined $test){ for (keys %{$test}){ do_exercise($_, $user); } } else{ do_exercise($exid, $user); } } else{ if(not exists_user_exercise($exid, $user)){ print_table('Não existe combinação enunciado/user!'); } else{ print_exercise($exid, $user); } } } } print end_form, end_html; sub print_hidescript{ my $q = q{ }; print $q; } sub print_table{ my $x = shift; print div({-align => 'center'}, table({-id => 'newspaper-b', -width => 500}, Tr([ td({}, ['Enunciado', textfield({-name => 'exid', -autocomplete => 'off'})]), td({}, ['Aluno', textfield({ -name => 'user', -autocomplete => 'off'})]), td({}, [radio_group('tipo',['Fazer exercicio','Consultar exercicio'],'Fazer exercicio')]), td({}, [$x, submit]) ]) ) ); print hidden('no_ex', 'no_ex'); ## no submission done } sub do_exercise{ my ($exid, $user) = @_; print get_exercise_html($exid); my $answer; my @array; my $compar; my %submission; my @res; my $n = get_number_answer($exid); if(not param('no_ex')){ for (1..$n){ $answer = param("p$_"); $submission{"Q_$_"} = $answer; } $submission{"version_id"} = $exid; @res = verify_exercise(\%submission); add_user_exercise($exid, $user, @res); printf ("Cotação total: %.2f\n
", $res[0]{total}); } for (1..$n){ # textfield vai passar a variar conforme o tipo print "Pergunta $_: ", textfield({ -name => "p$_", -autocomplete => 'off'}); print "Pontos: $res[1][$_-1][1]/1"; print "
\n"; } print "Submeter como user $user
\n"; print hidden('exid', $exid), hidden('user', $user), hidden('tipo', 'Fazer exercicio'); print submit; } sub print_exercise{ my ($exid, $user) = @_; print get_exercise_html($exid); my @exs = get_user_exercise($exid, $user); print Dumper(\@exs); # for (@{$USER{$user}{$exid}[0]}){ ## print "Resposta dada à pergunta $n: $_
\n"; # $n++; # } #} }