# The LearningOnline Network with CAPA
# definition of tags that give a structure to a document
#
# $Id: bridgetask.pm,v 1.218 2007/01/11 19:01:38 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
# This file is part of the LearningOnline Network with CAPA (LON-CAPA).
#
# LON-CAPA is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# LON-CAPA is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with LON-CAPA; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# /home/httpd/html/adm/gpl.txt
#
# http://www.lon-capa.org/
#
###
package Apache::bridgetask;
use strict;
use Apache::lonnet;
use Apache::File();
use Apache::lonmenu;
use Apache::lonlocal;
use Apache::lonxml;
use Apache::slotrequest();
use Time::HiRes qw( gettimeofday tv_interval );
use lib '/home/httpd/lib/perl/';
use LONCAPA;
BEGIN {
&Apache::lonxml::register('Apache::bridgetask',('Task','IntroParagraph','Dimension','Question','QuestionText','Setup','Instance','InstanceText','Criteria','GraderNote','ClosingParagraph'));
}
my %dimension;
my $top = 'top';
sub initialize_bridgetask {
# id of current Dimension, 0 means that no dimension is current
# (inside '.
"\n\t\t".'';
$result.= "\n\t\t".'';
$result.=&Apache::loncommon::select_dom_form($env{'user.domain'},
'gradingdomain');
$result.=' '.
&Apache::loncommon::selectstudent_link('gradesubmission',
'gradinguser',
'gradingdomain');
$result.=&Apache::loncommon::studentbrowser_javascript();
$result.= '".&mt("Showing previous version [_1]",$version).
"
\n";
}
my @to_show;
foreach my $test_version (1..$Apache::lonhomework::history{'resource.0.version'}) {
if (defined($Apache::lonhomework::history{'resource.'.$test_version.'.0.status'})) {
push(@to_show,$test_version);
}
}
my $list='\n\n";
$list.='';
$result.='";
return $result;
}
sub add_grading_button {
my (undef,$cid)=&Apache::lonnet::whichuser();
my $cnum=$env{'course.'.$cid.'.num'};
my $cdom=$env{'course.'.$cid.'.domain'};
my %sections = &Apache::loncommon::get_sections($cdom,$cnum);
my $size=5;
if (scalar(keys(%sections)) < 3) {
$size=scalar(keys(%sections))+2;
}
my $sec_select = "\n".'\n";
my $result="\n\t".'';
$result.="\n\t".'';
if (&Apache::lonnet::allowed('mgq',$env{'request.course.id'})) {
my ($entries,$ready,$locks)=&get_queue_counts('gradingqueue');
$result.="\n\t".''."\n\t\t".'
'."\n";
$result.="\n\t".'';
$result.="\n\t\t\t".' '."\n";
($entries,$ready,$locks)=&get_queue_counts('reviewqueue');
$result.="\n\t\t".'Specify a section: '.
"\n\t\t\t".''.$sec_select."\n\t\t\t".' ';
$result.="\n\t\t\t".''.' ';
$result.= "\n\t\t\t\t".&mt("[_1] entries, [_2] ready, [_3] being graded",$entries,$ready,$locks).' '."\n\t\t".''.
"\n\t\t\t".' '."\n";
$result.="\n\t\t".''.
"\n\t\t\t\t".' ';
$result.=&mt("[_1] entries, [_2] ready, [_3] being graded",
$entries,$ready,$locks).' '."\n\t\t".''.
"\n\t\t\t".' '
."\n\t".''.
"\n\t\t\t\t".' '
."\n\t\t".'
'. &mt('Student submitted [_1] [_2] the deadline. '. '(Submission was at [_3], end of period was [_4].)', $info,$when, &Apache::lonlocal::locallocaltime($submissiontime), &Apache::lonlocal::locallocaltime($slot{'endtime'})). '
'; } return $result; } sub file_list { my ($files,$uname,$udom) = @_; if (!defined($uname) || !defined($udom)) { (undef,undef,$udom,$uname) = &Apache::lonnet::whichuser(); } my $file_url = '/uploaded/'.$udom.'/'.$uname.'/portfolio/'; my $file_list="Submitted non-existant file $file
\n"; } else { $file = ''.$file.''; $msg .= "Submitted file $file
\n"; } $files .= ''.&mt('Message sent to user: [_1]', $message_status).'
'; } if ($setting eq 'student_and_user_notes_screen') { $comment_status = &Apache::lonmsg::store_instructor_comment($subject.''.&mt('Message sent to instructor: [_1]', $comment_status).'
'; } return <Files submitted: $files
You are now done with this Bridge Task
Found '. &Apache::lonnet::gettitle($symb).' for '.$uname.' at '.$udom.' |
'. &mt('Return to resource').'
'; if ($status_code eq 'stop') { $result.=''.&mt("Stopped grading.").''.$back; } elsif ($status_code eq 'cancel') { $result.=''.&mt("Cancelled grading.").''.$back; } elsif ($status_code eq 'never_versioned') { $result.=''. &mt("Requested user has never accessed the task."). ''.$back; } elsif ($status_code =~ /still_open:(.*)/) { my $date = &Apache::lonlocal::locallocaltime($1); $result.=''. &mt("Task is still open, will close at [_1].",$date). ''.$back; } elsif ($status_code eq 'lock_failed') { $result.=''.&mt("Failed to lock the requested record.") .''.$back; } elsif ($status_code eq 'unlock') { $result.=''.&mt("Unlocked the requested record.") .''.$back; $result.=&show_queue($env{'form.queue'},1); } elsif ($status_code eq 'show_list') { $result.=&show_queue($env{'form.queue'},1); } elsif ($status_code eq 'select_user') { $result.=&select_user(); } elsif ($status_code eq 'unable') { $result.=''.&mt("Unable to aqcuire a user to grade.").''.$back; } elsif ($status_code eq 'not_allowed') { $result.=''.&mt('Not allowed to grade the requested user.').' '.$msg.''.$back; } else { $result.=''.&mt("No user to be graded.").''.$back; } } $webgrade='no'; } if (!$todo || $env{'form.cancel'}) { my $bodytext=&Apache::lonxml::get_all_text("/task",$parser,$style); } if ($target eq 'webgrade' && defined($env{'form.queue'})) { if ($webgrade eq 'yes') { $result.=&submission_time_stamp(); } $result.=$form_tag_start; $result.=''; $result.=''; if ($env{'form.regrade'}) { $result.=''; } if ($env{'form.chosensections'}) { my @chosen_sections= &Apache::loncommon::get_env_multiple('form.chosensections'); foreach my $sec (@chosen_sections) { $result.=''; } } if ($webgrade eq 'yes') { $result.=&webgrade_standard_info(); } } if ($target eq 'webgrade') { $result.="\n".'". &question_status_message(\%counts,-1). "
\n"; if ($bt_status eq 'pass') { $status.='Showing only sections '.join(', ',@chosen_sections). '.
'."\n"; } my ($view,$view_section); my $scope = $env{'request.course.id'}; if (!($view=&Apache::lonnet::allowed('vgr',$scope))) { $scope .= '/'.$env{'request.course.sec'}; if ( $view = &Apache::lonnet::allowed('vgr',$scope)) { $view_section=$env{'request.course.sec'}; } else { undef($view); } } my $regexp="^$symb\0"; my %queue=&Apache::lonnet::dump($queue,$cdom,$cnum,$regexp); my ($tmp)=%queue; if ($tmp=~/^error: 2 /) { return "\n