version 1.202, 2006/11/13 21:23:19
|
version 1.216, 2007/01/10 21:46:24
|
Line 98 sub check_in {
|
Line 98 sub check_in {
|
&check_in_sequence($user,$domain,$slot_name); |
&check_in_sequence($user,$domain,$slot_name); |
} else { |
} else { |
&create_new_version($type,$user,$domain,$slot_name); |
&create_new_version($type,$user,$domain,$slot_name); |
|
&Apache::structuretags::finalize_storage($res->symb); |
} |
} |
return 1; |
return 1; |
} |
} |
Line 380 sub nest {
|
Line 381 sub nest {
|
} |
} |
} |
} |
|
|
|
sub start_delay { |
|
push(@delay,1); |
|
} |
|
sub end_delay { |
|
pop(@delay); |
|
} |
|
|
sub nested_parse { |
sub nested_parse { |
my ($str,$env,$args) = @_; |
my ($str,$env,$args) = @_; |
my @old_env = @Apache::scripttag::parser_env; |
my @old_env = @Apache::scripttag::parser_env; |
Line 791 sub start_Task {
|
Line 799 sub start_Task {
|
if ($target eq 'webgrade') { |
if ($target eq 'webgrade') { |
$result.="\n".'<div id="LC_GRADING_criterialist">'; |
$result.="\n".'<div id="LC_GRADING_criterialist">'; |
&Apache::lonxml::startredirection(); |
&Apache::lonxml::startredirection(); |
|
&start_delay(); |
|
$dimension{$top}{'result'}=$result; |
|
undef($result); |
} |
} |
} elsif ($target eq 'edit') { |
} elsif ($target eq 'edit') { |
$result.=$form_tag_start. |
$result.=$form_tag_start. |
Line 1051 DONEBUTTON
|
Line 1062 DONEBUTTON
|
$start_time=&Apache::lonlocal::locallocaltime($start_time); |
$start_time=&Apache::lonlocal::locallocaltime($start_time); |
|
|
my $status = |
my $status = |
"\n<div class='LC_$bt_status LC_criteria'>\n\t"; |
"\n<div class='LC_$bt_status LC_criteria LC_task_overall_status'>\n\t"; |
|
|
|
my $dim = $top; |
|
my %counts = &get_counts($dim,undef,$parstack, |
|
$safeeval); |
|
my $question_status ="\n\t<p>". |
|
&question_status_message(\%counts,-1). |
|
"</p>\n"; |
|
|
if ($bt_status eq 'pass') { |
if ($bt_status eq 'pass') { |
$status.='<h2>You passed the '.$title.' given on '. |
$status.='<h2>You passed the '.$title.' given on '. |
$start_time.'</h2>'; |
$start_time.'</h2>'; |
|
$status.=$question_status; |
} |
} |
if ($bt_status eq 'fail') { |
if ($bt_status eq 'fail') { |
$status.='<h2>You did not pass the '.$title.' given on '. |
$status.='<h2>You did not pass the '.$title.' given on '. |
$start_time.'</h2>'; |
$start_time.'</h2>'; |
|
$status.=$question_status; |
if (!$previous) { |
if (!$previous) { |
$status.=&add_request_another_attempt_button(); |
$status.=&add_request_another_attempt_button(); |
} |
} |
} |
} |
$status.="\n".'</div>'."\n"; |
|
my $dim = $top; |
|
my %counts = &get_counts($dim,undef,$parstack, |
|
$safeeval); |
|
$status.="\n<div class='LC_$bt_status LC_criteria LC_task_overall_status'>\n\t<p>". |
|
&question_status_message(\%counts,-1). |
|
"</p>\n</div>\n"; |
|
|
|
|
$status.="\n".'</div>'."\n"; |
|
|
foreach my $id (@{$dimension{$dim}{'criterias'}}) { |
foreach my $id (@{$dimension{$dim}{'criterias'}}) { |
my $type = $dimension{$dim}{'criteria.'.$id.'.type'}; |
my $type = $dimension{$dim}{'criteria.'.$id.'.type'}; |
Line 1103 DONEBUTTON
|
Line 1117 DONEBUTTON
|
} |
} |
|
|
|
|
if ($target eq 'grade' && !$env{'form.webgrade'} && !$previous) { |
if ($target eq 'grade' && !$env{'form.webgrade'} && !$previous |
|
&& $status eq 'CAN_ANSWER') { |
my $award='SUBMITTED'; |
my $award='SUBMITTED'; |
&Apache::essayresponse::file_submission("$version.0",'bridgetask', |
&Apache::essayresponse::file_submission("$version.0",'bridgetask', |
'portfiles',\$award); |
'portfiles',\$award); |
Line 1257 DONEBUTTON
|
Line 1272 DONEBUTTON
|
&Apache::structuretags::finalize_storage(); |
&Apache::structuretags::finalize_storage(); |
} |
} |
} elsif ($target eq 'webgrade') { |
} elsif ($target eq 'webgrade') { |
$result.=&Apache::lonxml::endredirection(); |
if (&nest()) { |
|
&Apache::lonxml::endredirection(); |
|
&end_delay(); |
|
$result.=$dimension{$top}{'result'}; |
|
} else { |
|
$result.=&Apache::lonxml::endredirection(); |
|
} |
my $dim = $top; |
my $dim = $top; |
foreach my $id (@{$dimension{$dim}{'criterias'}} ) { |
foreach my $id (@{$dimension{$dim}{'criterias'}} ) { |
my $type = $dimension{$dim}{'criteria.'.$id.'.type'}; |
my $type = $dimension{$dim}{'criteria.'.$id.'.type'}; |
Line 1269 DONEBUTTON
|
Line 1290 DONEBUTTON
|
[@_]); |
[@_]); |
$criteria = &layout_webgrade_Criteria($dim,$id,$criteria); |
$criteria = &layout_webgrade_Criteria($dim,$id,$criteria); |
my $internal_location=&internal_location($id); |
my $internal_location=&internal_location($id); |
$result=~s/\Q$internal_location\E/$criteria/; |
if ($result =~ m/\Q$internal_location\E/) { |
|
$result=~s/\Q$internal_location\E/$criteria/; |
|
} else { |
|
$result.=$criteria; |
|
} |
|
|
} |
} |
} |
} |
$result.="</div>"; |
$result.="</div>"; |
Line 1553 sub show_queue {
|
Line 1579 sub show_queue {
|
my $ekey=&escape($key); |
my $ekey=&escape($key); |
my ($action,$description,$status)=('select',&mt('Select')); |
my ($action,$description,$status)=('select',&mt('Select')); |
if (exists($queue{"$key\0locked"})) { |
if (exists($queue{"$key\0locked"})) { |
|
my $locker = $queue{"$key\0locked"}; |
|
my $time; |
|
if (ref($queue{"$key\0locked"}) eq 'ARRAY') { |
|
($locker, $time) = @{$queue{"$key\0locked"}}; |
|
$time = |
|
&Apache::lonnavmaps::timeToHumanString($time, |
|
'start'); |
|
} |
my $me=$env{'user.name'}.':'.$env{'user.domain'}; |
my $me=$env{'user.name'}.':'.$env{'user.domain'}; |
$status=&mt('Locked by <tt>[_1]</tt>',$queue{"$key\0locked"}); |
$status=&mt('Locked by <tt>[_1]</tt> [_2]',$locker,$time); |
if ($me eq $queue{"$key\0locked"}) { |
if ($me eq $queue{"$key\0locked"}) { |
($action,$description)=('resume',&mt('Resume')); |
($action,$description)=('resume',&mt('Resume')); |
} else { |
} else { |
Line 1773 sub lock_key {
|
Line 1807 sub lock_key {
|
my (undef,$cid)=&Apache::lonnet::whichuser(); |
my (undef,$cid)=&Apache::lonnet::whichuser(); |
my $cnum=$env{'course.'.$cid.'.num'}; |
my $cnum=$env{'course.'.$cid.'.num'}; |
my $cdom=$env{'course.'.$cid.'.domain'}; |
my $cdom=$env{'course.'.$cid.'.domain'}; |
my $success=&Apache::lonnet::newput($queue,{"$todo\0locked"=> $me}, |
my $success=&Apache::lonnet::newput($queue,{"$todo\0locked"=> [$me,time]}, |
$cdom,$cnum); |
$cdom,$cnum); |
&Apache::lonxml::debug("success $success $todo"); |
&Apache::lonxml::debug("success $success $todo"); |
if ($success eq 'ok') { |
if ($success eq 'ok') { |
Line 2049 sub start_Setup {
|
Line 2083 sub start_Setup {
|
my $dim = &get_id($parstack,$safeeval); |
my $dim = &get_id($parstack,$safeeval); |
push(@Apache::bridgetask::dimension,$dim); |
push(@Apache::bridgetask::dimension,$dim); |
&Apache::lonxml::startredirection(); |
&Apache::lonxml::startredirection(); |
return &internal_location($dim); |
return;# &internal_location($dim); |
} |
} |
|
|
{ |
{ |
Line 2101 sub start_Dimension {
|
Line 2135 sub start_Dimension {
|
$dimension{$top}{'criteria.'.$dim.'.mandatory'}= |
$dimension{$top}{'criteria.'.$dim.'.mandatory'}= |
&Apache::lonxml::get_param('Mandatory',$parstack,$safeeval); |
&Apache::lonxml::get_param('Mandatory',$parstack,$safeeval); |
push(@{$dimension{$top}{'criterias'}},$dim); |
push(@{$dimension{$top}{'criterias'}},$dim); |
|
$dimension{$dim}{'nested'}=$top; |
} |
} |
push(@Apache::bridgetask::dimension,$dim); |
push(@Apache::bridgetask::dimension,$dim); |
&Apache::lonxml::startredirection(); |
&Apache::lonxml::startredirection(); |
&enable_dimension_parsing($dim); |
if (!&skip_dimension_parsing($dim)) { |
return &internal_location($dim); |
&enable_dimension_parsing($dim); |
|
} |
|
return;# &internal_location($dim); |
} |
} |
|
|
sub start_QuestionText { |
sub start_QuestionText { |
Line 2193 sub end_Dimension {
|
Line 2230 sub end_Dimension {
|
my $instance=&get_instance($dim); |
my $instance=&get_instance($dim); |
my $version=&get_version(); |
my $version=&get_version(); |
if ($target eq 'web') { |
if ($target eq 'web') { |
$result .= "\n".'<div class="LC_question">'."\n"; |
|
$result .= &nested_parse(\$dimension{$dim}{'intro'},[@_]); |
$result .= &nested_parse(\$dimension{$dim}{'intro'},[@_]); |
my @instances = $instance; |
my @instances = $instance; |
if (&Apache::response::showallfoils()) { |
if (&Apache::response::showallfoils()) { |
Line 2227 sub end_Dimension {
|
Line 2263 sub end_Dimension {
|
} |
} |
my $dim_info= |
my $dim_info= |
"\n<div class='LC_$dim_status LC_question_grade'>\n\t"; |
"\n<div class='LC_$dim_status LC_question_grade'>\n\t"; |
my $question = ('sub' x $dimension{$dim}{'depth'}).'question'; |
my $ucquestion = |
$question =~ s/^(.)/uc($1)/e; |
my $question = |
|
('sub' x $dimension{$dim}{'depth'}).'question'; |
|
$ucquestion =~ s/^(.)/uc($1)/e; |
if ($dim_status eq 'pass') { |
if ($dim_status eq 'pass') { |
$dim_info.='<h3>'.$question.' : you passed the above'.$mandatory.' question</h3>'; |
$dim_info.='<h3>'.$ucquestion.' : you passed the above '.$mandatory.' '.$question.'</h3>'; |
} |
} |
if ($dim_status eq 'fail') { |
if ($dim_status eq 'fail') { |
$dim_info.='<h3>'.$question.' : you did not pass the above '.$mandatory.' question</h3>'; |
$dim_info.='<h3>'.$ucquestion.' : you did not pass the above '.$mandatory.' '.$question.'</h3>'; |
} |
} |
my %counts = &get_counts($dim,$instance,$parstack, |
my %counts = &get_counts($dim,$instance,$parstack, |
$safeeval); |
$safeeval); |
Line 2247 sub end_Dimension {
|
Line 2285 sub end_Dimension {
|
@{$dimension{$dim}{'criterias'}}) { |
@{$dimension{$dim}{'criterias'}}) { |
my $type = $dimension{$dim}{'criteria.'.$id.'.type'}; |
my $type = $dimension{$dim}{'criteria.'.$id.'.type'}; |
if ($type eq 'dimension') { |
if ($type eq 'dimension') { |
$result.=$dimension{$id}{'result'}; |
if (defined($dimension{$id}{'result'})) { |
next; |
$result.=$dimension{$id}{'result'}; |
|
next; |
|
} else { |
|
$dim_info .= |
|
&nested_parse(\$dimension{$dim}{'criteria.'.$id}, |
|
[@_],{'set_dim_id' => $id}); |
|
} |
|
} else { |
|
my $criteria = |
|
&nested_parse(\$dimension{$dim}{'criteria.'.$id}, |
|
[@_]); |
|
$dim_info .= &layout_web_Criteria($dim,$id,$criteria); |
} |
} |
my $criteria = |
|
&nested_parse(\$dimension{$dim}{'criteria.'.$id}, |
|
[@_]); |
|
$dim_info .= &layout_web_Criteria($dim,$id,$criteria); |
|
} |
} |
# puts the results at the end of the dimension |
# puts the results at the end of the dimension |
$result .= $dim_info; |
$result .= $dim_info; |
Line 2263 sub end_Dimension {
|
Line 2308 sub end_Dimension {
|
# $result=~s/\Q$internal_location\E/$dim_info/; |
# $result=~s/\Q$internal_location\E/$dim_info/; |
} |
} |
} |
} |
$result .= "\n</div>\n"; |
if ($result !~ /^\s*$/s) { |
|
# FIXME? this maybe unneccssary in the future, (CSE101 BT |
|
# from Fall 2006 geenrate a div that attempts to hide some |
|
# of the output in an odd way, this is a workaround so |
|
# those old ones will continue to work. # It puts the |
|
# LC_question div to come after any starting closie div |
|
# that the dimension produces |
|
if ($result =~ m{^\s*</div>}) { |
|
$result =~ s{^(\s*</div>)} |
|
{$1\n<div id="$dim" class="LC_question">}; |
|
} else { |
|
$result = "\n".'<div id="'.$dim.'" class="LC_question">'. |
|
"\n".$result; |
|
} |
|
$result .= "\n</div>\n"; |
|
} |
} elsif ($target eq 'webgrade') { |
} elsif ($target eq 'webgrade') { |
# in case of any side effects that we need |
# in case of any side effects that we need |
&nested_parse(\$dimension{$dim}{'intro'},[@_]); |
&nested_parse(\$dimension{$dim}{'intro'},[@_]); |
Line 2286 sub end_Dimension {
|
Line 2346 sub end_Dimension {
|
[@_]); |
[@_]); |
$criteria = &layout_webgrade_Criteria($dim,$id,$criteria); |
$criteria = &layout_webgrade_Criteria($dim,$id,$criteria); |
my $internal_location=&internal_location($id); |
my $internal_location=&internal_location($id); |
$result=~s/\Q$internal_location\E/$criteria/; |
if ($result =~ m/\Q$internal_location\E/) { |
|
$result =~ s/\Q$internal_location\E/$criteria/; |
|
} else { |
|
$result.=$criteria ; |
|
} |
} |
} |
} |
} |
if (&nest()) { |
if (&nest()) { |
Line 2380 sub question_status_message {
|
Line 2444 sub question_status_message {
|
foreach my $type ('cri','dim') { |
foreach my $type ('cri','dim') { |
if ($counts->{$req.'_'.$type}) { |
if ($counts->{$req.'_'.$type}) { |
push(@sections, |
push(@sections, |
$counts->{$req.'_'.$type.'_passed'}.' of '. |
$counts->{$req.'_'.$type.'_passed'}.' of the '. |
$counts->{$req.'_'.$type}.' '. |
$counts->{$req.'_'.$type}.' '. |
$req{$req}.' '.$type{$type}); |
$req{$req}.' '.$type{$type}); |
} |
} |
Line 2595 sub start_Criteria {
|
Line 2659 sub start_Criteria {
|
my $dim = &get_dim_id(); |
my $dim = &get_dim_id(); |
my $id=&get_id($parstack,$safeeval); |
my $id=&get_id($parstack,$safeeval); |
if ($target eq 'web' || $target eq 'webgrade') { |
if ($target eq 'web' || $target eq 'webgrade') { |
if ($target eq 'webgrade' && $dim ne 'top') { |
if ($target eq 'webgrade') { |
&Apache::lonxml::debug(" for $dim $id stashing results into $dim "); |
&Apache::lonxml::debug(" for $dim $id stashing results into $dim "); |
$dimension{$dim}{'result'} .= &internal_location($id); |
$dimension{$dim}{'result'} .= &internal_location($id); |
} else { |
} else { |
&Apache::lonxml::debug(" not stashing $dim $id"); |
&Apache::lonxml::debug(" not stashing $dim $id"); |
$result .= &internal_location($id); |
#$result .= &internal_location($id); |
} |
} |
} |
} |
&Apache::lonxml::debug("Criteria $id with $dim"); |
&Apache::lonxml::debug("Criteria $id with $dim"); |
Line 2638 sub layout_web_Criteria {
|
Line 2702 sub layout_web_Criteria {
|
$status_display=~s/^([a-z])/uc($1)/e; |
$status_display=~s/^([a-z])/uc($1)/e; |
my $criteria_info.= |
my $criteria_info.= |
'<div class="LC_'.$status.' LC_criteria">'."\n\t".'<h4>' |
'<div class="LC_'.$status.' LC_criteria">'."\n\t".'<h4>' |
.$mandatory.' Criteria</h4>'."\n\t".'<p class="LC_criteria_text>'."\n"; |
.$mandatory.' Criteria</h4>'."\n\t".'<p class="LC_criteria_text">' |
|
."\n"; |
$criteria =~ s/^\s*//s; |
$criteria =~ s/^\s*//s; |
$criteria =~ s/\s*$//s; |
$criteria =~ s/\s*$//s; |
$criteria_info.= $criteria; |
$criteria_info.= $criteria; |