Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Error with rendering problem #62

Open
pstaabp opened this issue Nov 3, 2021 · 4 comments
Open

Error with rendering problem #62

pstaabp opened this issue Nov 3, 2021 · 4 comments

Comments

@pstaabp
Copy link
Member

pstaabp commented Nov 3, 2021

When loading the following problem: Library/MC/PreAlgebra/setPreAlgebraC01S06/SUbtractingIntegers03.pg

I'm getting an error:

VM1878:1 Uncaught TypeError: Cannot read properties of undefined (reading 'style')
    at <anonymous>:1:61
    at eval (Problem.vue?3854:162)
    at NodeList.forEach (<anonymous>)
    at eval (Problem.vue?3854:157)
    at Generator.next (<anonymous>)
    at fulfilled (VM1642 Problem.vue:16)

I think the actual line is:

origScript.parentNode?.replaceChild(newScript, origScript);

@pstaabp
Copy link
Member Author

pstaabp commented Nov 18, 2021

I just dug into this a bit more. In webwork 2, at the bottom of the problem, the following is in the rendered problem:

<p>
  <b style="display: none;">Note: </b>
  <i>
     <script>var bb = document.getElementsByTagName("b");bb[bb.length-1].style.display="none"</script>
     <input type="hidden" name="_status" value="2772722728292A">
     <input type="hidden" name="_reseed" id="_reseed" value="0">
  </I>
</p>

However, in webwork3, the same block is:

<p>
  <script>var bb = document.getElementsByTagName("b");bb[bb.length-1].style.display="none"</script>
  <input type="hidden" name="_status" value="2772722728292A">
  <input type="hidden" name="_reseed" id="_reseed" value="0">
</p>

so it's missing the <b style="display: none;">Note: </b> so there is an error thrown when the script is run.

I'm not sure why this is like this. What's the point of printing: "Note:" then hiding it.

@drdrew42
Copy link
Member

Yet another reason to ditch problemRandomize.pl

  #
  #  Add the problemRandomize message and data
  #
  if ($isWhen && !$okDate) {
    $result->{msg} .= "</i><br /><b>".$main::PG->maketext("Note:")."</b> <i>" if $result->{msg};
    $result->{msg} .= $main::PG->maketext("You can get a new version of this problem after the due date.");
  }
  if (!$result->{msg}) {
    # hack to remove unwanted "<b>Note: </b>" from the problem
    #  (it is inserted automatically by Problem.pm when {msg} is non-emtpy).
    $result->{msg} .= '<script>var bb = document.getElementsByTagName("b");'
                   .  'bb[bb.length-1].style.display="none"</script>';
  }
  $result->{msg} .= qq!<input type="hidden" name="_status" value="$data" />!;

@pstaabp
Copy link
Member Author

pstaabp commented Nov 19, 2021

I think having problem versions will allow us to do this in a built-in way, correct?

@dlglin
Copy link
Member

dlglin commented Nov 19, 2021

Even webwork2 has a built-in way to do this without problemRandomize.pl (though it has issues). I agree with @drdrew42 that there is no reason to support problemRandomize.pl going forward. In the past the decision was made by the OPL board to not accept problems that include it, so I would like to see it removed from problems in the OPL. Just don't tell @drjt I said that, since it looks like it's mostly MC problems that include it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants