--- loncom/homework/bridgetask.pm 2006/05/30 12:45:36 1.158 +++ loncom/homework/bridgetask.pm 2006/06/06 21:05:56 1.162 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # definition of tags that give a structure to a document # -# $Id: bridgetask.pm,v 1.158 2006/05/30 12:45:36 www Exp $ +# $Id: bridgetask.pm,v 1.162 2006/06/06 21:05:56 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -43,7 +43,7 @@ use LONCAPA; BEGIN { - &Apache::lonxml::register('Apache::bridgetask',('Task','IntroParagraph','Dimension','Question','Instance','InstanceText','Criteria','ClosingParagraph')); + &Apache::lonxml::register('Apache::bridgetask',('Task','IntroParagraph','Dimension','Question','QuestionText','Setup','Instance','InstanceText','Criteria','ClosingParagraph')); } sub initialize_bridgetask { @@ -365,9 +365,9 @@ sub file_list { my $file=$file_url.$partial_file; $file=~s|/+|/|g; &Apache::lonnet::allowuploaded('/adm/bridgetask',$file); - $file_list.='
  • '.$file. - '
  • '."\n"; + $file_list.='
  • file icon '.$file. + '
  • '."\n"; } $file_list.="\n"; return $file_list; @@ -1257,12 +1257,20 @@ sub show_queue { my %queue=&Apache::lonnet::dump($queue,$cdom,$cnum,$regexp); my ($tmp)=%queue; if ($tmp=~/^error: 2 /) { - return "\n

    Current Queue - $queue

    Empty
    "; + return "\n

    Current Queue - $queue

    ". + &Apache::loncommon::start_data_table(). + &Apache::loncommon::start_data_table_row(). + ''.&mt('Empty').''. + &Apache::loncommon::end_data_table_row(). + &Apache::loncommon::end_data_table(); } my $title=&Apache::lonnet::gettitle($symb); - $result.="\n

    Current Queue - $title $queue

    "; + $result.="\n

    Current Queue - $title $queue

    ". + &Apache::loncommon::start_data_table(). + &Apache::loncommon::start_data_table_header_row(); if ($with_selects) { $result.=""; } - $result.=""; + $result.="". + &Apache::loncommon::end_data_table_header_row(); foreach my $key (sort(keys(%queue))) { my ($symb,$uname,$udom) = &decode_queue_key($key); if (!defined($classlist->{$uname.':'.$udom})) { next; } @@ -1277,14 +1285,15 @@ sub show_queue { } if ($key=~/locked$/ && !$with_selects) { - $result.=""; + $result.= &Apache::loncommon::start_data_table_row(). + ""; $result.=''; } elsif ($key=~/timestamp$/ && !$with_selects) { - $result.=""; + $result.=&Apache::loncommon::start_data_table_row().""; $result.='"; } elsif ($key!~/(timestamp|locked)$/) { - $result.=""; + $result.= &Apache::loncommon::start_data_table_row(); my ($end_time,$slot_text); if (my $slot=&slotted_access($queue{$key})) { my %slot_data=&Apache::lonnet::get_slot($slot); @@ -1336,10 +1345,10 @@ FORM " ($uname:$udom)"; $result.='"; + "".&Apache::loncommon::end_data_table_row(); } } - $result.="
    Statususerdata
    userdata
    $uname$uname'.$queue{$key}.'
    '. &Apache::lonlocal::locallocaltime($queue{$key})."
    '.$slot_text.' End time: '. &Apache::lonlocal::locallocaltime($end_time). - "

    \n"; + $result.= &Apache::loncommon::end_data_table()."
    \n"; return $result; } @@ -1643,7 +1652,7 @@ sub select_user { $result.='

    Showing only sections '.join(', ',@chosen_sections). '.

    '."\n"; } - $result.=''; + $result.=&Apache::loncommon::start_data_table(); foreach my $student (sort {lc($classlist->{$a}[&Apache::loncoursedata::CL_FULLNAME()]) cmp lc($classlist->{$b}[&Apache::loncoursedata::CL_FULLNAME()]) } (keys(%$classlist))) { my ($uname,$udom) = split(/:/,$student); @@ -1668,7 +1677,8 @@ sub select_user { my $todo = &escape(&encode_queue_key($symb,$udom,$uname)); if ($cannot_grade) { - $result.=''; + $result.= ''.&Apache::loncommon::end_data_table_row(); } - $result.='
     '.$classlist->{$student}[&Apache::loncoursedata::CL_FULLNAME()]. + $result.=&Apache::loncommon::start_data_table_row(). + ' '.$classlist->{$student}[&Apache::loncoursedata::CL_FULLNAME()]. ''; } else { my $seclist; @@ -1676,8 +1686,8 @@ sub select_user { $seclist.=''; } + $result.=&Apache::loncommon::start_data_table_row(); $result.=<
    @@ -1726,9 +1736,9 @@ RESULT } else { $result.=" "; } - $result.= '
    '; + $result.=&Apache::loncommon::end_data_table(); return $result; } @@ -1781,6 +1791,15 @@ sub get_id { } my %dimension; +sub start_Setup { + my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; + undef(%dimension); + my $dim_id=&get_id($parstack,$safeeval); + $Apache::bridgetask::dimension=$dim_id; + undef(@Apache::bridgetask::instance); + &Apache::lonxml::startredirection(); + return &internal_location($dim_id); +} sub start_Question { return &start_Dimension(@_); } sub start_Dimension { my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; @@ -1795,6 +1814,20 @@ sub start_Dimension { return &internal_location($dim_id); } +sub start_QuestionText { + my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; + my $dim_id=$Apache::bridgetask::dimension; + my $text=&Apache::lonxml::get_all_text('/questiontext',$parser,$style); + if ($target eq 'grade' || $target eq 'web' || $target eq 'webgrade') { + $dimension{'questiontext'}=$text; + } + return ''; +} + +sub end_QuestionText { + return ''; +} + sub get_instance { my ($dim)=@_; my $rand_alg=&Apache::lonnet::get_rand_alg(); @@ -1855,9 +1888,12 @@ sub get_instance { if (&Apache::response::showallfoils()) { @instances = @{$dimension{'instances'}}; } + my $shown_question_text; foreach my $instance (@instances) { @Apache::scripttag::parser_env = @_; $result.=&Apache::scripttag::xmlparse($dimension{$instance.'.text'}); + @Apache::scripttag::parser_env = @_; + $result.=&Apache::scripttag::xmlparse($dimension{'questiontext'}); if ($Apache::lonhomework::history{"resource.$version.0.status"} eq 'pass' || $Apache::lonhomework::history{"resource.$version.0.status"} eq 'fail') { @@ -1942,6 +1978,8 @@ sub get_instance { &Apache::scripttag::xmlparse($dimension{'intro'}); @Apache::scripttag::parser_env = @_; &Apache::scripttag::xmlparse($dimension{$instance.'.text'}); + @Apache::scripttag::parser_env = @_; + &Apache::scripttag::xmlparse($dimension{'questiontext'}); foreach my $id (@{$dimension{$instance.'.criterias'}}, @{$dimension{'criterias'}} ) { my $link=&link($id); @@ -1977,11 +2015,14 @@ sub get_instance { @Apache::scripttag::parser_env = @_; $result.=&Apache::scripttag::xmlparse($dimension{'intro'}); + @Apache::scripttag::parser_env = @_; + $result.=&Apache::scripttag::xmlparse($dimension{$instance.'.text'}); + @Apache::scripttag::parser_env = @_; + &Apache::scripttag::xmlparse($dimension{'questiontext'}); + foreach my $id (@{$dimension{$instance.'.criterias'}}, @{$dimension{'criterias'}}) { my $link=&link($id); - @Apache::scripttag::parser_env = @_; - $result.=&Apache::scripttag::xmlparse($dimension{$instance.'.text'}); my $status=$Apache::lonhomework::results{"resource.$version.0.$dim.$id.status"}=$env{'form.HWVAL_'.$link}; $Apache::lonhomework::results{"resource.$version.0.$dim.$id.comment"}=$env{'form.HWVAL_comment_'.$link}; my $mandatory=($dimension{'criteria.'.$id.'.mandatory'} ne 'N'); @@ -2025,6 +2066,41 @@ sub get_instance { } else { # any other targets no output undef($result); + } + return $result; + } + + sub end_Setup { + my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; + my $result=&Apache::lonxml::endredirection(); + my $dim=&get_id($parstack,$safeeval); + my $instance=&get_instance($dim); + my $version=&get_version(); + if ($target eq 'web') { + @Apache::scripttag::parser_env = @_; + $result.=&Apache::scripttag::xmlparse($dimension{'intro'}); + my @instances = $instance; + if (&Apache::response::showallfoils()) { + @instances = @{$dimension{'instances'}}; + } + foreach my $instance (@instances) { + @Apache::scripttag::parser_env = @_; + $result.=&Apache::scripttag::xmlparse($dimension{$instance.'.text'}); + @Apache::scripttag::parser_env = @_; + $result.=&Apache::scripttag::xmlparse($dimension{'questiontext'}); + } + } elsif ($target eq 'webgrade' + || $target eq 'grade' && $env{'form.webgrade'}) { + # in case of any side effects that we need + @Apache::scripttag::parser_env = @_; + &Apache::scripttag::xmlparse($dimension{'intro'}); + @Apache::scripttag::parser_env = @_; + &Apache::scripttag::xmlparse($dimension{$instance.'.text'}); + @Apache::scripttag::parser_env = @_; + &Apache::scripttag::xmlparse($dimension{'questiontext'}); + } else { + # any other targets no output + undef($result); } return $result; }