Diff for /loncom/homework/structuretags.pm between versions 1.528 and 1.539

version 1.528, 2015/02/22 01:34:48 version 1.539, 2015/09/14 13:45:19
Line 224  sub end_tex { Line 224  sub end_tex {
 }  }
   
 sub homework_js {  sub homework_js {
       my ($postsubmit,$timeout);
       if (($env{'request.course.id'}) && ($env{'request.state'} ne 'construct')) {
           my $crstype;
           if (&Apache::loncommon::course_type() eq 'Community') {
               $crstype = 'community';
           } else {
               if ($env{'course.'.$env{'request.course.id'}.'.internal.coursecode'}) {
                   $crstype = 'official';
               } elsif ($env{'course.'.$env{'request.course.id'}.'.internal.textbook'}) {
                   $crstype = 'textbook';
               } else {
                   $crstype = 'unofficial';
               }
           }
           $postsubmit = $env{'course.'.$env{'request.course.id'}.'.internal.postsubmit'};
           if ($postsubmit eq '') {
               my %domdefs = &Apache::lonnet::get_domain_defaults($env{'course.'.$env{'request.course.id'}.'.domain'});
               $postsubmit = $domdefs{'postsubmit'};
               unless ($postsubmit eq 'off') {
                   $timeout = $domdefs{$crstype.'postsubtimeout'};
               }
           } elsif ($postsubmit eq '0') {
               $postsubmit = 'off';
           } elsif ($postsubmit eq '1') {
               $postsubmit = 'on';
               $timeout = $env{'course.'.$env{'request.course.id'}.'.internal.postsubtimeout'};
               if ($timeout eq '') {
                   my %domdefs = &Apache::lonnet::get_domain_defaults($env{'course.'.$env{'request.course.id'}.'.domain'});
                   $timeout = $domdefs{$crstype.'postsubtimeout'};
               }
           }
           if ($timeout eq '') {
               $timeout = 60;
           }
       } else {
           my %domdefs = &Apache::lonnet::get_domain_defaults($env{'request.role.domain'});
           $postsubmit = $domdefs{'postsubmit'};
           unless ($postsubmit eq 'off') {
               $timeout = 60;
           }
       }
       my $jstimeout = 0;
       if ($timeout) {
           $jstimeout = 1000 * $timeout;
       }
     return &Apache::loncommon::resize_textarea_js().      return &Apache::loncommon::resize_textarea_js().
                 &Apache::loncommon::colorfuleditor_js().                  &Apache::loncommon::colorfuleditor_js().
            &setmode_javascript().             &setmode_javascript().
  <<'JS';   <<"JS";
 <script type="text/javascript">  <script type="text/javascript">
 // <![CDATA[  // <![CDATA[
 function setSubmittedPart (part,prefix) {  function setSubmittedPart (part,prefix) {
Line 242  function setSubmittedPart (part,prefix) Line 287  function setSubmittedPart (part,prefix)
     }      }
 }  }
   
   function disableAutoComplete (id) {
       var field = document.getElementById(id);
       if (field != null && field != undefined){
           if ('autocomplete' in field) {
               field.autocomplete = "off";
           } else {
               field.setAttribute("autocomplete", "off");
           }
       }
   }
   
 function image_response_click (which, e) {  function image_response_click (which, e) {
     init_geometry();      init_geometry();
     if (!e) { e = window.event; } //IE      if (!e) { e = window.event; } //IE
Line 258  function image_response_click (which, e) Line 314  function image_response_click (which, e)
   
 var submithandled = 0;  var submithandled = 0;
 var keypresshandled = 0;  var keypresshandled = 0;
   var postsubmit = '$postsubmit';
   
 $(document).ready(function(){  \$(document).ready(function(){
     if (postsubmit != 'off') {    
     $(document).keypress(function(event){      \$(document).keypress(function(event){
         var keycode = (event.keyCode ? event.keyCode : event.which);          var keycode = (event.keyCode ? event.keyCode : event.which);
         if ((keycode == '13') && (keypresshandled == 0)) {          if ((keycode == '13') && (keypresshandled == 0)) {
             if ( $( document.activeElement ).hasClass("LC_textline") ) {              if ( \$( document.activeElement ).hasClass("LC_textline") ) {
                 keypresshandled = 1;                  keypresshandled = 1;
                 var idsArray = $( document.activeElement ).attr("id").split(/HWVAL_/);                  var idsArray = \$( document.activeElement ).attr("id").split(/HWVAL_/);
                 if (idsArray.length) {                  if (idsArray.length) {
                     event.preventDefault();                      event.preventDefault();
                     var itemsArray = idsArray[1].split(/_/);                      var itemsArray = idsArray[1].split(/_/);
                     var buttonId = idsArray[0]+'submit_'+itemsArray[0];                      var buttonId = idsArray[0]+'submit_'+itemsArray[0];
                     $("#"+buttonId).trigger("click");                      \$("#"+buttonId).trigger("click");
                 }                  }
             }              }
         }          }
     });      });
   
     $(document).delegate('form :submit', 'click', function( event ) {      \$(document).delegate('form :submit', 'click', function( event ) {
         if ( $( this ).hasClass( "LC_hwk_submit" ) ) {          if ( \$( this ).hasClass( "LC_hwk_submit" ) ) {
             var buttonId = this.id;              var buttonId = this.id;
               var timeout = $jstimeout;
             if (submithandled == 0) {              if (submithandled == 0) {
                 submithandled = 1;                  submithandled = 1;
                 $( "#msg_"+buttonId ).css({"display": "inline","background-color": "#87cefa",                  \$( "#msg_"+buttonId ).css({"display": "inline","background-color": "#87cefa",
                                            "color": "black","padding": "2px"}) ;                                             "color": "black","padding": "2px"}) ;
                 if (( $(this.form).id == "LC_page" ) && ($('input[name="all_submit"]').length )) {                  if (( \$(this.form).id == "LC_page" ) && (\$('input[name="all_submit"]').length )) {
                     if (buttonId != "all_submit") {                      if (buttonId != "all_submit") {
                         $( ".LC_status_"+buttonId ).hide();                          \$( ".LC_status_"+buttonId ).hide();
                         if (( "#"+buttonId+"_pressed" ).length) {                          if (( "#"+buttonId+"_pressed" ).length) {
                             $( "#"+buttonId+"_pressed" ).val( "1" );                              \$( "#"+buttonId+"_pressed" ).val( "1" );
                         }                          }
                     }                      }
                 } else {                  } else {
                     $( ".LC_status_"+buttonId ).hide();                      \$( ".LC_status_"+buttonId ).hide();
                 }                  }
                 $(this.form).submit();                  \$(this.form).submit();
                 $( ".LC_hwk_submit" ).prop( "disabled", true);                  \$( ".LC_hwk_submit" ).prop( "disabled", true);
                 $( ".LC_textline" ).prop( "readonly", "readonly");                  \$( ".LC_textline" ).prop( "readonly", "readonly");
                 event.preventDefault();                  event.preventDefault();
   
                   if (timeout > 0) {
                       setTimeout(function(){
                                          \$( "#msg_"+buttonId ).css({"display": "none"});
                                          if (( \$(this.form).id == "LC_page" ) && (\$('input[name="all_submit"]').length )) {
                                              if (buttonId != "all_submit") {
                                                  if (( "#"+buttonId+"_pressed" ).length) {
                                                      \$( "#"+buttonId+"_pressed" ).val( "" );
                                                  }
                                              }
                                          }
                                          \$( ".LC_hwk_submit" ).prop( "disabled", false);
                                          \$( ".LC_textline" ).prop( "readonly", false);
                                          submithandled = 0;
                                          keypresshandled = 0;
                                        }, timeout);
                   }
                 return true;                  return true;
             }              }
         }          }
     });      });
     }
 });  });
   
 // ]]>  // ]]>
Line 414  sub page_start { Line 490  sub page_start {
             }              }
         }          }
         if ($needs_upload) {          if ($needs_upload) {
             $extra_head .= &Apache::lonhtmlcommon::file_submissionchk_js();              $extra_head .= &Apache::lonhtmlcommon::file_submissionchk_js()
                               .'<script type="text/javascript" 
                                   src="/res/adm/includes/file_upload.js"></script>';
         }          }
     }      }
   
Line 676  sub problem_edit_action_button { Line 754  sub problem_edit_action_button {
   
 sub problem_edit_buttons {  sub problem_edit_buttons {
    my ($mode)=@_;     my ($mode)=@_;
   # Buttons that save
      my $result = '<div style="float:right">';
      if ($mode eq 'editxml') {
          $result.=&problem_edit_action_button('subsaveedit','saveeditxml','s','Save and EditXML');
          $result.=&problem_edit_action_button('subsaveview','saveviewxml','v','Save and View');
      } else {
          $result.=&problem_edit_action_button('subsaveedit','saveedit','s','Save and Edit');
          $result.=&problem_edit_action_button('subsaveview','saveview','v','Save and View');
      }
      $result.="\n</div>\n";
 # Buttons that do not save  # Buttons that do not save
    my $result='<div class="LC_edit_problem_discards">'.     $result .= '<div>'.
               &problem_edit_action_button('subdiscview','discard','d','Discard Edits and View',1);                &problem_edit_action_button('subdiscview','discard','d','Discard Edits and View',1);
    if ($mode eq 'editxml') {     if ($mode eq 'editxml') {
        $result.=&problem_edit_action_button('subedit','edit','e','Edit',1);         $result.=&problem_edit_action_button('subedit','edit','e','Edit',1);
Line 688  sub problem_edit_buttons { Line 776  sub problem_edit_buttons {
        $result.=&problem_edit_action_button('subundo','undo','u','Undo',1);         $result.=&problem_edit_action_button('subundo','undo','u','Undo',1);
    }     }
    $result.="\n</div>";     $result.="\n</div>";
 # Buttons that save  
    $result.='<div class="LC_edit_problem_saves">';  
    if ($mode eq 'editxml') {  
        $result.=&problem_edit_action_button('subsaveedit','saveeditxml','s','Save and EditXML');  
        $result.=&problem_edit_action_button('subsaveview','saveviewxml','v','Save and View');  
    } else {  
        $result.=&problem_edit_action_button('subsaveedit','saveedit','s','Save and Edit');  
        $result.=&problem_edit_action_button('subsaveview','saveview','v','Save and View');  
    }  
    $result.="\n</div>\n";  
    return $result;     return $result;
 }  }
   
 sub insert_menu_datastructure {  
   
  my $template_menu = &template_dropdown_datastructure();  
  my $responseblock_menu = &responseblock_dropdown_datastructure();  
  my $conditional_scripting = &conditional_scripting_datastructure();  
  my $misc = &misc_datastructure();  
   
  my @menu = ($template_menu, $responseblock_menu, $conditional_scripting, $misc);  
  return \@menu;  
   
 }  
   
 sub template_dropdown_datastructure {  
     # gathering the all templates and their path, title, category and help topic  
     my @templates = &Apache::lonhomework::get_template_list('problem');  
     # template category => title  
     my %tmplthash = ();  
     # template title => path  
     my %tmpltcontent = ();  
   
     foreach my $template (@templates){  
         # put in hash if the template is not empty  
         unless ($template->[1] eq ''){  
             push(@{$tmplthash{$template->[2]}}, $template->[1]);  
             push(@{$tmpltcontent{$template->[1]}},$template->[0]);  
         }  
     }  
   
  my $catList = [];  
     foreach my $cat (sort keys %tmplthash) {  
  my $catItems = [];  
         foreach my $title (sort @{$tmplthash{$cat}}) {  
             my $path = $tmpltcontent{$title}->[0];  
             my $code;  
             open(FH, "<$path");  
             while(<FH>){  
                 $code.= $_ unless $_ =~ /(<problem>)|(<\/problem>)/;  
             }  
             close(FH);  
   
  if ($code ne '') {  
  my $href = 'javascript:insertText(\'' . &convert_for_js(&HTML::Entities::encode($code)) . '\')';  
  my $currItem = [$href, $title, undef];  
  push @{$catItems}, $currItem;  
  }  
         }  
  push @{$catList}, [$catItems, $cat, undef];  
     }  
   
  my $templDropdown = [$catList, &mt("Complete Problem Templates"), undef];  
     return $templDropdown;  
 }  
   
 sub responseblock_dropdown_datastructure {  
   
  my $mathCat = [  
  [  
  ["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&Apache::edit::insert_formularesponse())) . "\')", &mt("Formula Response"), undef],  
  ["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&Apache::edit::insert_functionplotresponse())) . "\')", &mt("Function Plot Response"), undef],  
  ["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&Apache::edit::insert_mathresponse())) . "\')", &mt("Math Response"), undef],  
  ["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&Apache::edit::insert_numericalresponse())) . "\')", &mt("Numerical Response"), undef]  
  ],   
  &mt("Math"),   
  undef  
  ];  
   
  my $miscCat = [  
  [  
             ["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&Apache::edit::insert_imageresponse())) . "\')", &mt("Click on Image"), undef],  
             ["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&Apache::edit::insert_customresponse())) . "\')", &mt("Custom Response"), undef],  
             ["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&Apache::edit::insert_externalresponse())) . "\')", &mt("External Response"), undef],  
             ["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&Apache::edit::insert_matchresponse())) . "\')", &mt("Match Response"), undef],  
             ["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&Apache::edit::insert_radiobuttonresponse())) . "\')", &mt("One out of N Statement"), undef],  
             ["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&Apache::edit::insert_optionresponse())) . "\')", &mt("Optionresponse"), undef],   
  ["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&Apache::edit::insert_rankresponse())) . "\')", &mt("Rank Values"), undef]  
  ],  
  &mt("Misc"),  
  undef  
  ];  
   
  my $chemCat = [  
  [  
  ["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&Apache::edit::insert_reactionresponse())) . "\')", &mt("Chemical Reaction"), undef],  
  ["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&Apache::edit::insert_organicresponse())) . "\')", &mt("Organic Structure"), undef]  
  ],  
  &mt("Chemical"),  
  undef  
  ];  
   
  my $textCat = [  
  [  
  ["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&Apache::edit::insert_stringresponse())) . "\')", &mt("String Response"), undef],  
  ["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&Apache::edit::insert_essayresponse())) . "\')", &mt("Essay"), undef]  
  ],  
  &mt("Text"),  
  undef  
  ];  
   
  my $cats = [[$mathCat, $miscCat, $chemCat, $textCat], &mt("Response Types"), undef];  
  return $cats;  
 }  
   
   
 sub conditional_scripting_datastructure {  
 # TODO: corresponding routines should be used for the javascript:insertText parts  
 # instead of the placeholder routine default_xml_tag with the tags  
 # e.g. &default_xml_tag("postanswerdate") should be replaced with a routine which  
 # returns the corresponding content for this case  
   
 #TODO translated is currently temporarily here, another solution should be found where the  
 # needed string can be retrieved  
   
  my $translatedTag = '  
 <translated>  
     <lang which="en"></lang>  
     <lang which="default"></lang>  
 </translated>';  
   
  my $cat = [  
  [  
  ["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode($translatedTag)) . "\')", &mt("Translated Tag"), undef],  
  ["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&default_xml_tag("block"))) . "\')", &mt("Conditional Block"), undef],  
  ["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&default_xml_tag("postanswerdate"))) . "\')", &mt("After Answer Block"), undef],  
  ["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&default_xml_tag("preduedate"))) . "\')", &mt("Before Due Date Block"), undef],  
  ["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&default_xml_tag("solved"))) . "\')", &mt("Block For After Solved"), undef],  
  ["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&default_xml_tag("notsolved"))) . "\')", &mt("Block For When Not Solved"), undef]  
  ],  
  &mt("Contitional Scripting"),  
  undef  
  ];  
   
  return $cat;  
 }  
   
 sub misc_datastructure {  
   
  my $graphicalCat = [  
  [  
  ["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&Apache::edit::insert_img())) . "\')", &mt("Image"), undef],  
  ["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&Apache::lonplot::insert_gnuplot())) . "\')", &mt("GNU Plot"), undef],  
  ["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&Apache::edit::insert_organicstructure())) . "\')", &mt("Organic Structure"), undef]  
  ],  
  "Graphical",  
  undef  
  ];  
   
  my $advancedCat = [  
  [  
  ["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&Apache::edit::insert_script())) . "\')", &mt("Script Block"), undef],  
  ["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&default_xml_tag("allow"))) . "\')", &mt("File Dependencies"), undef],  
  ["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&default_xml_tag("import"))) . "\')", &mt("Import a File"), undef],  
  ["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&Apache::londefdef::insert_meta())) . "\')", &mt("Custom Metadata"), undef]  
  ],  
  "advanced",  
  undef  
  ];  
   
  my $cats = [[$graphicalCat, $advancedCat], &mt("misc"), undef];  
  return $cats;  
 }  
   
 # helper routine for the datastructure building subroutines  
 sub default_xml_tag {  
  my ($tag) = @_;  
  return "\n<$tag></$tag>";  
 }  
   
   
 sub helpmenu_datastructure {  
   
  my $width = 500;  
  my $height = 600;  
   
  my $helpers = [  
  ['Problem_LON-CAPA_Functions', &mt('Script Functions')],  
  ['Greek_Symbols', &mt('Greek Symbols')],  
   ['Other_Symbols', &mt('Other Symbols')],  
  ['Authoring_Output_Tags', &mt('Output Tags')],  
  ['Authoring_Multilingual_Problems',   
  &mt('How to create problems in different languages')]  
  ];  
   
  my $help_structure = [];  
   
  foreach my $count (0..(scalar(@{$helpers})-1)) {  
  my $filename = $helpers->[$count]->[0];  
  my $title = $helpers->[$count]->[1];  
  my $href = &HTML::Entities::encode("javascript:openMyModal('/adm/help/$filename.hlp',$width,$height,'yes');");  
  push @{$help_structure}, [$href, $title, undef];  
  }  
   
  return $help_structure;  
 }  
   
 # we need substitution to not break javascript code  
 sub convert_for_js {  
     my $return = shift;  
         $return =~ s|script|ESCAPEDSCRIPT|g;  
         $return =~ s|\n|\\r\\n|g;  
         $return =~ s|'|\\'|g;  
  $return =~ s|&#39;|\\&#39;|g;  
     return $return;  
 }  
   
 sub problem_edit_header {  sub problem_edit_header {
     my ($mode)=@_;      my ($mode)=@_;
     my $return = '<input type="hidden" name="submitted" value="edit" />'.      my $return = '<input type="hidden" name="submitted" value="edit" />'.
Line 916  sub problem_edit_header { Line 790  sub problem_edit_header {
         '<input type="hidden" name="problemmode" value="saveedit" />'.          '<input type="hidden" name="problemmode" value="saveedit" />'.
         &problem_edit_buttons();          &problem_edit_buttons();
   
     $return.='<hr style="clear:both;visibility:hidden;" />      $return .= '</div></div>' . &Apache::lonxml::message_location();
     </div></div>'  
     .&Apache::lonxml::message_location();  
     $return .= '<link rel="stylesheet" href="/adm/codemirror/codemirror-combined.css" />      $return .= '<link rel="stylesheet" href="/adm/codemirror/codemirror-combined.css" />
     <script type="text/javascript" src="/adm/codemirror/codemirror-compressed-colorful.js"></script>';      <script type="text/javascript" src="/adm/codemirror/codemirror-compressed-colorful.js"></script>';
   
Line 931  sub problem_edit_header { Line 803  sub problem_edit_header {
                         $(\'.LC_edit_actionbar\').scrollToFixed(                          $(\'.LC_edit_actionbar\').scrollToFixed(
                             {                              {
                                 fixed: function(){                                  fixed: function(){
                                     $(this).find(\'.LC_edit_actionbar\').css(\'height\', \'31px\');                                      //$(this).find(\'.LC_edit_actionbar\').css(\'height\', \'31px\');
                                       $(this).find(\'.LC_edit_actionbar\');
                                 }                                  }
                             }                              }
                         );                          );
Line 1405  sub store_aggregates { Line 1278  sub store_aggregates {
             } else {              } else {
                 $anoncounter{$symb."\0".$part} = 1;                  $anoncounter{$symb."\0".$part} = 1;
             }              }
             my $needsrelease = $Apache::lonnet::needsrelease{'parameter:type:'.$Apache::lonhomework::results{'resource.'.$part.'.type'}};              my $needsrelease = $Apache::lonnet::needsrelease{'parameter:type:'.$Apache::lonhomework::results{'resource.'.$part.'.type'}.':'};
             if ($needsrelease) {                 if ($needsrelease) {
                 my $curr_required = $env{'course.'.$env{'request.course.id'}.'.internal.releaserequired'};                  my $curr_required = $env{'course.'.$env{'request.course.id'}.'.internal.releaserequired'};
                 if ($curr_required eq '') {                  if ($curr_required eq '') {
                     &Apache::lonnet::update_released_required($needsrelease);                      &Apache::lonnet::update_released_required($needsrelease);
Line 1517  sub init_problem_globals { Line 1390  sub init_problem_globals {
     @Apache::inputtags::importlist = ();      @Apache::inputtags::importlist = ();
     @Apache::inputtags::previous=();      @Apache::inputtags::previous=();
     @Apache::inputtags::previous_version=();      @Apache::inputtags::previous_version=();
       $Apache::inputtags::leniency='';
     $Apache::structuretags::printanswer='No';      $Apache::structuretags::printanswer='No';
     @Apache::structuretags::whileconds=();      @Apache::structuretags::whileconds=();
     @Apache::structuretags::whilebody=();      @Apache::structuretags::whilebody=();
Line 1532  sub reset_problem_globals { Line 1406  sub reset_problem_globals {
     undef(%Apache::lonhomework::history);      undef(%Apache::lonhomework::history);
     undef(%Apache::lonhomework::results);      undef(%Apache::lonhomework::results);
     undef($Apache::inputtags::part);      undef($Apache::inputtags::part);
       undef($Apache::inputtags::leniency);
     if ($type eq 'Task') {      if ($type eq 'Task') {
         undef($Apache::inputtags::slot_name);          undef($Apache::inputtags::slot_name);
     } elsif ($type eq 'problem') {      } elsif ($type eq 'problem') {
Line 1643  sub start_problem { Line 1518  sub start_problem {
         $target eq 'tex') {          $target eq 'tex') {
         if ($env{'form.markaccess'}) {          if ($env{'form.markaccess'}) {
             my @interval=&Apache::lonnet::EXT("resource.0.interval");              my @interval=&Apache::lonnet::EXT("resource.0.interval");
             &Apache::lonnet::set_first_access($interval[1],$interval[0]);              my ($timelimit) = split(/_/,$interval[0]);
               &Apache::lonnet::set_first_access($interval[1],$timelimit);
         }          }
   
         ($status,$accessmsg,$slot_name,$slot) =          ($status,$accessmsg,$slot_name,$slot) =
Line 1677  sub start_problem { Line 1553  sub start_problem {
  my $rndseed=&setup_rndseed($safeeval,$target,$probpartlist);   my $rndseed=&setup_rndseed($safeeval,$target,$probpartlist);
         if (($target eq 'grade') && &Apache::response::submitted()) {          if (($target eq 'grade') && &Apache::response::submitted()) {
             if ($Apache::lonhomework::type eq 'randomizetry') {              if ($Apache::lonhomework::type eq 'randomizetry') {
                 $Apache::lonhomework::results{'resource.0.rawrndseed'}=$rndseed;                  $Apache::lonhomework::results{'resource.0.rndseed'}=$rndseed;
             } else {              } else {
                 my @parts;                  my @parts;
                 if (ref($probpartlist) eq 'ARRAY') {                  if (ref($probpartlist) eq 'ARRAY') {
                     @parts = @{$probpartlist};                      @parts = @{$probpartlist};
                 }                  }
                 unless (@parts) {                  unless (@parts) {
                     $Apache::lonhomework::results{'resource.0.rawrndseed'}=$Apache::lonhomework::rawrndseed;                      $Apache::lonhomework::results{'resource.0.rndseed'}=$Apache::lonhomework::rawrndseed;
                 }                  }
             }              }
         }          }
Line 2735  sub start_part { Line 2611  sub start_part {
     my $id= &Apache::lonxml::get_id($parstack,$safeeval);      my $id= &Apache::lonxml::get_id($parstack,$safeeval);
     $Apache::inputtags::part=$id;      $Apache::inputtags::part=$id;
     push(@Apache::inputtags::partlist,$id);      push(@Apache::inputtags::partlist,$id);
       $Apache::inputtags::leniency='';
     @Apache::inputtags::response=();      @Apache::inputtags::response=();
     @Apache::inputtags::previous=();      @Apache::inputtags::previous=();
     @Apache::inputtags::previous_version=();      @Apache::inputtags::previous_version=();
Line 2747  sub start_part { Line 2624  sub start_part {
     if ($Apache::lonhomework::type eq 'randomizetry') {      if ($Apache::lonhomework::type eq 'randomizetry') {
         my $rndseed=&setup_rndseed($safeeval,$target);          my $rndseed=&setup_rndseed($safeeval,$target);
         if (($target eq 'grade') && &Apache::response::submitted()) {          if (($target eq 'grade') && &Apache::response::submitted()) {
             $Apache::lonhomework::results{"resource.$id.rawrndseed"}=$rndseed;              $Apache::lonhomework::results{"resource.$id.rndseed"}=$rndseed;
         }          }
     } elsif (($target eq 'grade') && &Apache::response::submitted()) {      } elsif (($target eq 'grade') && &Apache::response::submitted()) {
         $Apache::lonhomework::results{"resource.$id.rawrndseed"}=$Apache::lonhomework::rawrndseed;          $Apache::lonhomework::results{"resource.$id.rndseed"}=$Apache::lonhomework::rawrndseed;
     }      }
     my $in_order_show=&ordered_show_check();      my $in_order_show=&ordered_show_check();
     my $expression='$external::part=\''.$Apache::inputtags::part.'\';';      my $expression='$external::part=\''.$Apache::inputtags::part.'\';';
Line 2900  sub end_part { Line 2777  sub end_part {
     }      }
     pop @Apache::inputtags::status;      pop @Apache::inputtags::status;
     $Apache::inputtags::part='';      $Apache::inputtags::part='';
       $Apache::inputtags::leniency='';
     $Apache::lonhomework::type = $Apache::lonhomework::default_type;      $Apache::lonhomework::type = $Apache::lonhomework::default_type;
     return $result;      return $result;
 }  }

Removed from v.1.528  
changed lines
  Added in v.1.539


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>