Bugzilla Reports

From WeBWorK
(Difference between revisions)
Jump to: navigation, search
Line 3: Line 3:

Revision as of 13:07, 9 July 2010

IDPStatusSeverityVersionProductSummary (514 tasks)

Try adding


to the /webwork2/conf/snippets/hardcopyPreamble.tex file. This is required for the unionLists.pl macro file. Perhaps this could be added to the official version.

P1ASSIGNEDnormalunspecifiedWeBWorK 2Union/setAlgebraInequalities/pn1-3.pg

sub weighted_partial_grader does not work correctly with new names of answer blanks.

the line while (defined($ans_ref = $evaluated_answers{'AnSwEr'."$i"})) { needs to be replaced with while (defined($ans_ref = $evaluated_answers{'AnSwEr'.sprintf("%04d", $i)})) {

so that the new names (i.e., AnSwEr0001 instead of AnSwEr1) of answer blanks are referenced. Or, better yet, use the appropriate answer-blank-name generation macro.
P1NEWnormaldevelopPGsub weighted_partial_grader works incorrectly with new names of answer blanks


I'm unable to save any problems from the problem library to any homework sets today. In the library itself if I "add" a question it tells me that it has been successfully added but when I return to the homework sets to check they remain empty. I've never had this problem before. I've tried using IE and Chrome and am having the same problem either way.

I'd be grateful for any help.

P1NEWmajorunspecifiedWeBWorK 2Unable to save library problems to homework set

The Library Browser page, typically located at https://target.tld/webwork2/coursename/instructor/setmaker/, includes multiple parameters, such as library_subjects, library_chapters and library_sections that are not properly sanitized, leaving the application vulnerable to blind SQL injection.

Suppose the following are selected from the dropdown:

Subject: Calculus - single variable Chapter: Limits and continuity Section: Motivational applications (estimation)

The library_sections parameter can be modified to be the following:

--- SNIP ---

Content-Disposition: form-data; name="library_sections"

Motivational applications (estimation)" and substring(@@version,1,1)=5#

--- SNIP ---

If the system is running MySQL v5, the problem set will be returned; otherwise, no matching problems will be found.

I'm fairly confident earlier versions are affected as well as I ran into this on v2.5, but we upgraded before I was able to exploit it.
P1NEWcritical2.11WeBWorK 2Blind SQL Injection in Library Browser
4095 This was fixed somewhere along the line, as your example works fine in the current version of PG.
P1NEWmajor2.7PGStrict inequalities not parsed correctly without surrounding space

Partially accomplished for saved files. Not yet accomplished for temporary viewing.

Will abstract the code to Utils::copyAuxiliaryFiles(fromDir, toDir);
P2ASSIGNEDnormal2.2.0WeBWorK 2error in finding auxiliary files when using the PG editor

I think that adding a flag to the interface is what we want to do. While we are at it add a separate flag for SOLUTIONS since they will behave in a similar way. (Perhaps it's there already.)

We can then decide in Hardcopy.pm when students will be allowed to printout hints and solutions. There are checkboxes on the hardcopy page for

correct answers, hints, and solutions.
P2ASSIGNEDnormaltrunk (SVN)WeBWorK 2hints are not printed in hardcopy
1288 check this one in detail before declaring it resolved.
P2ASSIGNEDnormal2.3.x+CVSWeBWorK 2Can't remove course

rename doesn't have the capabilities that "archive course" does for automatically creating temp directories.

unarchive a new directory (alternatively remove the html/tmp directory from the command line) try to rename it the html/tmp directory will be listed as missing but no option to add it will be given.

work around: start to rearchive the course, then after repairing the missing directory back out and try again to rename -- it will work this time.
P2ASSIGNEDnormalunspecifiedWeBWorK 2rename doesn't update tmp directories
2009P2ASSIGNEDcriticaltrunk (SVN)WeBWorK 2Not working with Internet Explorer

This is interesting.

- The label "incorrect" comes from checking whether value for the score
 key for the answer result from the PG object returns 1 or not; here, it
 doesn't, so it (correctly) labels the result as "incorrect."
- It looks as if the error in the "this answer is correct" labeling comes
 from comparing the number of correct parts in the answer to the number
 of answer blanks---incorrectly, of course.  The number of correct parts
 is obtained by taking $numCorrect = 0 and then incrementing with
   $numCorrect += $answerScore > 0
 (where $answerScore is the value for the PG object's score key).  This
 won't work here, as long as my memory that > associates more tightly
 than += is correct.

I'm not sure why the > 0 test is in there. If I'm correct that we needn't test for a positive result, it looks as if the bugfix is line 368 in the file lib/WeBWorK/ContentGenerator/GatewayQuiz.pm, with the change of

  $numCorrect += $answerScore > 0;


  $numCorrect += $answerScore;

on the other hand, if there is some reason I'm not seeing why we have to worry about the sign of the score,

  $numCorrect += $answerScore if ( $ansScore > 0 );

might be more appropriate.

I'll wait for anyone else to chime in (or make the patch themselves)

before doing it in the SVN.
P2ASSIGNEDnormalunspecifiedWeBWorK 2Gateway quiz fix -- grading errors
2097 fixed, for now at least in revision 7053 of trunk
P2ASSIGNEDnormalunspecifiedWeBWorK 2local problems can't be found in paths that begin local/Library ...
2839 Students have the option to set "Show Past Answers" to yes or no. When students click on a homework question, this option appears in the left column on the bottom. Did the default value for this option change from "yes" to either "no" or nothing selected when we went to release/2.8? The default should be "yes" in order to be consistent with previous versions of webwork and with student expectations.
P2ASSIGNEDmajor2.8WeBWorK 2submitted answers are not displayed when revisiting a page

You can get silent errors if webwork times out (about 20 minutes) and then the webservice is called -- for example from LB1. Going to the home page triggers a login and then everything works.

The error you see on LB1 however are small "error no data" reports from the JSON call.

This is not horrible -- there is a work around if you understand what is happening -- but we need to provide a mechanism for the webservice to trigger a relogin after it timesout.

This is not new -- this behavior has been around forever but it's time to fix it.
P2ASSIGNEDnormal2.8WeBWorK 2webservice does not handle time out well

I believe I've patched the Scoring tools error:

pull request #748

P2ASSIGNEDcritical2.11WeBWorK 2Directory Traversal & Arbitrary File Download
3881 We'll make sure this is documented in release 2.13
P2ASSIGNEDnormal2.12WeBWorK 2Can't locate object method "new" via package "Statistics::R::IO::Rserve" at line 155 of [PG]/macros/RserveClient.pl
3917 Plan to incorporate submitted patch from Brandeis in 2.13
P2ASSIGNEDnormal2.12WeBWorK 2debug log does not work with pipe chars

I am using the develop branch and have

also pulled in the multianswer_fix PR #302 and #767.
P2ASSIGNEDmajorunspecifiedProblem Librariesbad interaction with re-randomize problem

(In reply to comment #1) > Seems like we need to initialize course_info.txt properly?

I noticed that Geoff Goehle recently made changes to ProblemSet.pm related course_info.txt. Could that be the reason for the issue?

"commit d1ade51227d458296ef6b29e4b6ed99f87dcb0ae

Author: Geoff Goehle <goehle@gmail.com>

Date: Tue Apr 26 14:14:25 2016 -0400

   - Tweaked wording on restricted release
   - Redid default cours_info.txt file
- Added code to hide the course_info.txt file if its the default."
P2ASSIGNEDnormal2.12WeBWorK 2Warning in homework page after upgrading to 2.12

I haven't yet been able to reproduce this.

1. created homework set test_local_macros 2. Added one problem (the default blankproblem) which I renamed the path to settest_local_macros/includemacrofiles.pg 3. Added the file templates/macros/local_macros.pl

sub _local_macros_init {}; # don't reload this file $pi_squared= Real("pi^2");

4. the full contents of includemacrofiles.pg is below.

includemacrofiles.pg renders correctly and the "render all" feature of the homework sets editor for the set "test_local_macros" renders without complaint.



  "PGstandard.pl",     # Standard macros for PG language
  #"source.pl",        # allows code to be displayed on certain sites.
  #"PGcourse.pl",      # Customization file for the course


  1. Print problem number and point value (weight) for the problem


  1. Show which answers are correct and which ones are incorrect

$showPartialCorrectAnswers = 1;

  1. Setup


$pi = Real("pi");

  1. Text

Context()->texStrings; BEGIN_TEXT

Enter a value for \(\pi\)


Enter a value for \(\pi^2\)

\{$pi->ans_rule\} END_TEXT Context()->normalStrings;

  1. Answers

ANS($pi->with(tolerance=>.0001)->cmp); ANS($pi_squared->with(tolerance=>.0001)->cmp);

  1. relative tolerance --3.1412 is incorrect but 3.1413 is correct
  2. default tolerance is .01 or one percent.

P2ASSIGNEDmajorunspecifiedPGHmwk Sets Editor is not detecting local macro files in 2.13

Description of Problem:

when creating a new user in WeBWorK from Moodle the email address of the user is not transferred from Moodle to WeBWorK. This breaks the "Email instructor" message since that message depends on the email field in the user record to tell the instructor where to send the reply.

Steps to reproduce the problem: 1. have a new user register for a course in Moodle 2. Have them do the WeBWorK orientation assignment (this forces them to be placed in the WeBWorK user database 3. Observe the WeBWorK class list -- no email address is included in the field

Actual Results:

Expected Results:

How often does this happen?

Always in MTH142 -- I believe this happens in all cases.

Additional Information:
P2NEWnormalHEADwwassignmentemail record is not transferred from Moodle to WeBWorK when creating a new user

From recent registrant:

Thanks for setting up the account. For your amusement, the message said

Welcome to WeBWorK! We hope you will contribute much and well. You will probably want to read the [pages].

And when I clicked on the link, I got the error message

Bad title

The requested page title was invalid, empty, or an incorrectly linked inter-language or inter-wiki title. It may contain one or more characters which cannot be used in titles.
P2NEWnormalunspecifiedwebwork.maa.orgwiki registration email provides bad link

Document process for including geogebra applets in WeBWorK problems, based on the procedure outlined in Mike's paper given in the URL.

See also: http://geogebraithaca.wikispaces.com/Oral+Session+1 http://geogebrawiki.wikispaces.com/Embed+GeoGebra+Worksheet https://courses.webwork.maa.org/webwork2/2010geogebra_at_ithaca/

Ideas: Embed relevant applets into our wiki; embed live problem from above course in our wiki. Also, have look at relationship to "Problem Techniques" on applets.
P2NEWenhancementunspecifiedDocumentationDocument inclusion of geogebra applets in WW problems.

if there is an extra space at the end of a path -- which can occur if you paste in a path from text

then the file will not be found.

1. take any homework set.

2. In the homework set editor add a space at the end of one of the paths to files

3. save

try to access that question -- in particular try to print a hardcopy of the homework set

it will fail with the error that it cannot find the file
P2NEWnormalunspecifiedWeBWorK 2trim paths in Problem set detail page

Choose the export feature for class list.

Export all users.

Response is that 0 users were read into the *.lst file

Checking the file show that the response is correct.

Probably some simple error in grabbing the list of users.
P2NEWmajorunspecifiedWeBWorK 2export function fails (in ghe3_dev)

the above check for course names appears in CourseAdmin.pm (Not sure what CourseAdminsitration.pm refers to)

This conflicts with references to course names in pg/lib/PGcore.pm

at line 827:

$parentDirectory =~s|/$||; # remove a trailing / $parentDirectory =~s|/\w*$||; # remove last node my ($perms, $groupID) = (stat $parentDirectory)[2,5];

The regex for recognizing a course name should come from a common source for both files if possible.

Meantime a quick fix has been introduced:

$parentDirectory =~s|/[^/]*$||; # remove last node
P2NEWmajordevelopPGSync the definitions of courseName -- in particular allow hyphens everywhere

Prototype mismatch: sub main::sqrt ($) vs none at (eval 48675) line 2, <MACROFILE> chunk 1. Subroutine main::sqrt redefined at (eval 48675) line 2, <MACROFILE> chunk 1. Prototype mismatch: sub main::sqrt ($) vs none at (eval 49252) line 2, <MACROFILE> chunk 1. Subroutine main::sqrt redefined at (eval 49252) line 2, <MACROFILE> chunk 1. Prototype mismatch: sub main::sqrt ($) vs none at (eval 49808) line 2, <MACROFILE> chunk 1. Subroutine main::sqrt redefined at (eval 49808) line 2, <MACROFILE> chunk 1. Prototype mismatch: sub main::sqrt ($) vs none at (eval 53808) line 2, <MACROFILE> chunk 1.

P2NEWminordevelopPGredefined macros? incompatibility with defining sqrt (errors found in logs)

Authentication bypass is possible when WeBWorK is configurd with CAS by including the user parameter in the request. This allows attackers to (1) bypass CAS authentication and access WeBWorK's local login page; and (2) login to the administrative console with any valid user (including admin) by submitting any string (or or an empty string) as the password.


Bypassing CAS and and accessing Webwork's local login page:


Supplying any (or a blank) password will log the attacker into the

administrative console.
P2NEWcritical2.11WeBWorK 2Authentication Bypass when Using CAS

All problems in the following directories show the error:

PG question processing error messages PG warning messages Error in NAMED_ANSWER_RULE_EXTENSION: every call to this subroutine needs to have $options{answer_group_name} defined. Answer blank name: AnSwEr0001-src

The problems are in

  • Library/MC/Proofs/DirectProofs
  • Library/MC/Proofs/DirectProofs
  • Library/MC/Proofs/DirectProofs
  • Library/MC/Proofs/Relations
  • Library/MC/Proofs/Relations
P2NEWmajorunspecifiedWeBWorK 2Error in NAMED_ANSWER_RULE_EXTENSION

Description of Problem: In reference to bug #917.

You get an error message that ends with

Answer evaluators must return a hash or an AnswerHash type, not type || at /ww/webwork/pg/lib/ WeBWorK/PG/Translator.pm line 1158

I'd like to set up the answer evaluators so that they at least return a hash or AnswerHash type even if there is an internal error. This might not be fool-proof, you could still circumvent the mechanism if you are unlucky enough, but the hope is that in most cases, even with a custom AnswerEvaluator, the error would be caught and handled before it gets to the Translator, which then notices that the AnswerEvaluator hasn't emitted an AnswerHash.

See full warning message in bug #917 for an example
P3ASSIGNEDenhancementdevelopPGBetter error handling in AnswerEvaluator modual needed


You are right, I think #3 is taken care of. #4 will be if you include the ww-windows.js script. It would be possible to fix just this one problem by including


in the template somewhere without having all the rest of the window handling code.

P3ASSIGNEDenhancementtrunk (SVN)WeBWorK 2Cleanup projects for PGProblemEditor.pm regarding temporary files

Instructors should have the option to notify students of changes that affect them. For example, if an instructor gives a student credit for a problem, or changes the due date of a set, she might want to notify the student. There ought to be a checkbox next to the Submit or Save button on each page the edits Set, Problem, UserSet, or UserProblem data called "Notify affected users of these changes".

Arnie added a mailto link to the problem set detail page, but it would be nicer if this was part of the system.
P3ASSIGNEDenhancementtrunk (SVN)WeBWorK 2Option to notify students of changes to sets/problems
1040 StudentProgress is kind of a mess
P3ASSIGNEDenhancement2.1.3WeBWorK 2Problem weights not taken into account in calculating score (w/patch)
1064P3ASSIGNEDenhancementunspecifiedwwassignmentCalendar does not automatically update when problem due date is changed.
1068 i think it's ok for 2.3.1, because it extends the classlist format without breaking existing classlists. also, this would be a big improvement usability-wise.
P3ASSIGNEDenhancementtrunk (SVN)WeBWorK 2be able to indicate that passwords in classlist file are cleartext and should be crypted

(In reply to comment #3) > So, the making of symlink should also happen when trying to read a problem file


> The mechanism for displaymodes lets you use > checkboxes to say yes/no to items from a list, so maybe it has enough > infrastructure for this job too.

Sounds useful. One improvement would be to be able to read the contents of the directory and give options based on what subdirs are found. The theme selector would also benefit from that.
P3ASSIGNEDenhancementtrunk (SVN)WeBWorK 2SetMaker: /opt/webwork/problibs and automatic symlink generation

I was thinking that the solution to this is to replace email notification with an onscreen display of currently-running (and recently completed) mail merge operations.

This could be done by having each mail merge operation write to a file in webwork2/DATA and having SendMail.pm read those files and display status. Dismissing a "completed" message would remove the file.

This can be done within the current $r->connection->pool->cleanup_register handler.
P3ASSIGNEDenhancementtrunk (SVN)WeBWorK 2emailing one or two students

The following is from the Safe docs. We should figure out if this applies to us.

Any string eval which is executed by code executing in a compartment, or by code called from code executing in a compartment, will be eval'd in the namespace of the compartment. This is potentially a serious problem.

Consider a function foo() in package pkg compiled outside a compartment but shared with it. Assume the compartment has a root package called 'Root'. If foo() contains an eval statement like eval '$foo = 1' then, normally, $pkg::foo will be set to 1. If foo() is called from the compartment (by whatever means) then instead of setting $pkg::foo, the eval will actually set $Root::pkg::foo.

This can easily be demonstrated by using a module, such as the Socket module, which uses eval "..." as part of an AUTOLOAD function. You can 'use' the module outside the compartment and share an (autoloaded) function with the compartment. If an autoload is triggered by code in the compartment, or by any code anywhere that is called by any means from the compartment, then the eval in the Socket module's AUTOLOAD function happens in the namespace of the compartment. Any variables created or used by the eval'd code are now under the control of the code in the compartment.

A similar effect applies to all runtime symbol lookups in code called from a compartment but not compiled within it.
P3ASSIGNEDnormaldevelopPGpotential "eval STRING" security problem with Safe
1134 Davide's recommended fix appears to work. Will commit when I get a chance.
P3ASSIGNEDnormal2.2.x+CVSPGbasis_cmp renders correct answers as TeX code in hardcopy.

When I log in as a guest and view a problem in an open set I only get the "Preview Answers" button, which is also obviously wrong, but different from the wrong behavior you've observed.

The logic for which buttons to show and which actions to allow is suspect. I'm looking into it.
P3ASSIGNEDminortrunk (SVN)WeBWorK 2"your score was recorded" is inaccurate information for practice users

Is this something we want to do? I would think so -- the reply to field is probably enough for people who need to customize things. Let me know.

insert here complaints about how sendmail is a mess and needs to be rewritten :/
P3ASSIGNEDenhancementtrunk (SVN)WeBWorK 2force sendMail to fill "from" field with email address of actual user??

Description of Problem:

Just so we remember these issues for the future. Some of these "features" may be addressed in moodle 1.7

1. Make entry of the studentID mantatory (if possible) when students self-register in moodle. WeBWorK requires the studentID to index students during scoring (but ONLY then -- in all other cases it uses the login username as the unique ID). No studentID means that there is no way to use the merge feature in email. This prevented us from using WeBWorK to correct some of moodle's deficiencies.

2. Moodle can't handle fractional scores for problem sets. It rounds off. This can cause a change in the grade in close cases.

3. Moodle does not allow one to change a grade manually after the automatic calculation -- I find this a serious flaw.

4. The calculation methods are somewhat limited -- in particular I didn't understand how to use the extra credit feature to accomplish what we wanted.

5. There is no standard way to upload grades in a spread sheet -- there may have been hacked add-ons. Entering them by hand is not horrible -- the method works smoothly, but it is time consuming if you have already worked things out on a spreadsheet. Correcting errors in the moodle grades is fairly easy and convenient. Downloading to a spreadsheet is also easy.
P3ASSIGNEDnormalunspecifiedwwassignmentsummary of scoring incompatibilities between moodle and webwork
1155 I'd especially appreciate ideas on how to apply this without breaking non-authenticated servers. As I don't have any available to use (hence why I'm working on this), I don't know what will happen, but I suspect it won't turn out well.
P3ASSIGNEDenhancementtrunk (SVN)WeBWorK 2feature request: SMTP AUTH, SSL/TLS

Description of Problem: I believe that $AMPERSAND should be added to the list of constants.

I added ${DOLLAR} 3000 to a string and the result was that the 3000 disappeared.

Not sure why But I suspect that DOLLAR() produces \\$ rather than something like &#36;. This is fragile since if the string is evaluated more than once the backslash will cease to protect the dollar sign.

Finally I'm no longer sure where $DOLLAR is being initiated. I changed the behavior of DOLLAR() in PGbasicmacros and the behavior of $DOLLAR didn't change.

My original purpose in having both $DOLLAR and DOLLAR() was that the latter could not be modified by the user while the former could be. The latter would always be available to use in macros even if the user had changed the $DOLLAR behavior. Perhaps we should revisit this issue.

-- Mike

Steps to reproduce the problem: 1. 2. 3.

Actual Results:

Expected Results:

How often does this happen?

Additional Information:
1173 I'll check if we can get a meaningful error message back from Apache::Upload when the upload fails.
P3ASSIGNEDenhancement2.1.x+CVSWeBWorK 2Can we have file manager check if /var is full?

OK, I've completely rewritten the limit-reloads.js file to use a different approach. It now traps F5 keydown events and ignores them, and uses the F5 keyup to trigger the reload instead. That way the autorepeated keys will not cause reloads, only the letting go of the F key will.

I've also arranged so that if the F5 key autorepeats (i.e., is triggered several times before the keyup event occurs), then a dialog box will pu tup asking you to check if there is something on th eF5 key.

I have tested this in MISE and Firefox on the PC, and it seems to work OK there. It does NOT work with Opera, nor with Firefox on the Mac, where is seems to be impossible to cancel the F5 event. (I was surprized that you could do so on the PC version.)

Anyway, I think that should take care of most of your users. Let me know if there are additional problems.

P3ASSIGNEDnormal2.3.x+CVSWeBWorK 2Excessive reloads from one client can cause server slowdowns/crashes

(In reply to comment #3)

Corrected reply below: > Hi Mike, > > You are correct. I was running database.conf v.1.35.2. [I installed version 1.38, but] it didn't run as > I needed to add the Setting.pm file. So I downloaded the entire newest > development thread. But I couldn't test whether my problem went away as I now > run into the following error when doing a [fresh] installation (I've written a script > that does an automatic "new" installation). I get the following error when the > wwdb_upgrade program runs: > > Obtaining dbupgrade lock... > Got lock. > No 'upgrade' table exists: assuming system database version is 0. > Initial system db_version is 0 > Course 'modelCourse' has no db_version of it's own, assuming system db_version > 0. > modelCourse => 0 > Lowest db_version is 0 > > Upgrading database from version 0 to 1... > (Version 1 adds dbupgrade table to facilitate automatic database upgrades.) > Upgrading course 'modelCourse' to version 1... > Use of uninitialized value in subroutine entry at > /opt/webwork4/webwork2/lib/WeBWorK/Utils/DBUpgrade.pm line 664. > > An error occured while running the course upgrade code for version 1 on course > modelCourse: > Can't use string ("") as a subroutine ref while "strict refs" in use at > /opt/webwork4/webwork2/lib/WeBWorK/Utils/DBUpgrade.pm line 664. > Can't locate object method "ask_permission" via package > "WeBWorK::Utils::DBUpgrade" at > /opt/webwork4/webwork2/lib/WeBWorK/Utils/DBUpgrade.pm line 611. > Releasing dbupgrade lock... > Released lock. > >

P3ASSIGNEDnormal2.4.x + CVSWeBWorK 2WeBWorK not using specified mysql database when adding a course
1630*P3ASSIGNEDnormal2.4.x + CVSWeBWorK 2"At least one answer is incorrect" leaks information in problems that use std_problem_grader

these items will not be displayed before the due date for students. (They are supposed to be displayed for instructors.)

It would be better if the check boxes did not appear -- but I believe the

code didn't have immediate access to the due date.
P3ASSIGNEDenhancementunspecifiedWeBWorKHardcopy Generator Broken

Hi Mike,

Sorry for the late answer. As far as I can tell, this problem seems to be fixed now. I'll let you know at the end of the semester when my assignments are in if the problem persists.

P3ASSIGNEDminorunspecifiedWeBWorK 2Student grades not lined up with problem numbers
2092 The obvious problem is that the drop down menu would be very long. Not sure what the best approach would be.
P3ASSIGNEDenhancementtrunk (SVN)WeBWorK 2feature request: make time zone selection harder to mess up in course configuration

I can confirm this behavior.

A grading plug in is always called whenever a problem is entered. It is part of the rendering of the PG problem and it calculates the current state of the page (which answers are correct and so forth).

These calculations are always passed to the Problem.pm page which then decides whether to use them or not in the "attempts" section of the page deciding on how a student has done. Problem.pm knows whether this page has been reached by a submit button or by some other method and can decide whether to report correct/incorrect answers. The PG problem is not aware of how the page was called.

The problem arises when the problem grader does something with a side-effect, such as emailing a report to the instructor. This always gets executed every time the page is looked at. Currently the mailing_problem_grader only mails the page if at least one question has been answered -- so that keeps it from mailing completely blank questionnaires but it doesn't keep it from mailing a partially filled out questionnaire every time the page is entered.

The damage is not too bad since the script analyzing the results strips out duplicate submissions (this allows a student to correct and resend their questionnaire.

It's not clear what the best solution would be. We can add how the page was called to the state transmitted into the PG environment. That might be the simplest immediate solution, but I would really like to keep that interface as clean as possible and make the rendering of the problem somewhat independent of the how the rendered problem is to be used.

Perhaps there is a different method for emailing the results (javaScript command listening to the submit button? ) That technique wasn't available when the questionnaire was first written.

The new Problem.pm currently in Grant He's development branch splits up many of the rendering procedures in a more granular way -- and perhaps that granularity could be used to prevent the answers from being evaluated unless the submit button has been pressed.

I believe this bug has been around for a while -- I don't see any recent changes that would have caused it.

--- Mike
P3ASSIGNEDenhancementunspecifiedProblem LibrariesBug in student questionnaires/evaluation form

This warning is correct. The test.html file is missing from set0/prob4/ directory.

Proposed solution: Add test.html file to the prob4 directory.
P3ASSIGNEDminortrunk (SVN)WeBWorK 2warning msg when viewing problems with graphics

If you 1. import a problem set using the homework set editor, and 2. A problem in the set has a path containing directory with a space in its name (i.e "Trigonometric Limits")

the space in the path is deleted when it is uploaded. So the new directory would be ("TrigonometicLimits"). This causes problems that work in one Webwork course to stop working when they are copied to another course (such as one can do in the administrator account).

This occurs in the newest version of problems from Rogawski (Section 2.6 is on Trigonometric Limits and they have inserted a space in the directory name).
P3ASSIGNEDnormalunspecifiedWeBWorK 2Error in Importing Homework Sets
2398 undefined table name in ListingsDB.pm
P3ASSIGNEDnormal2.5.2WeBWorK 2Library browser advanced search fails when a textbook is selected on test server

First the items where I think there is complete agreement:

The versions of the union macros in the macros/CollegeOfIdaho should be removed in favor of the ones in macros/Union. Just make sure this doesn’t damage CollegeOfIdaho problems.

Should many of these union macros be transferred to webwork/pg/macros? That would be ok with me. They are pretty widely used and I believe that it’s only the history of development that and inertia that has kept them in separated.

allowing ../ I take it back about not being able to reach files one directory up.

  while ($PGfile =~ s![^/]*/../!!) {}

will allow ../included-text.pg to remain unchanged but will change

Library/../included-text.pg to Library/included-text.pg and ../../included-text.pg to ../included-text.pg

This means that you can go up one directory but not two. Very clever -- I didn’t catch that when I first read the code. We might be able to use this in some other places where we are trying to improve security by preventing instructors’ access to files outside their course directories or specifically allowed directories.

operational differences between includePGproblem and includePGfile:

includePGproblem() was added long after includePGfile(). One of its significant differences was that it was meant to allow the inclusion of entire PG problems which contain DOCUMENT and ENDDOCUMENT statements as opposed to file snippets which did not. To date it’s main use -- in fact as far as I can tell it’s only use -- has been to redirect problem references in the OPL from stale questions that have been removed to active questions which are being maintained. The other two difference between includePGfile and includePGproblem is the way that the path to the target file is determined and whether or not a new PG_alias object is created.

A future use of includePGproblem might be as part of includeRandomProblem() (it’s not clear to me how the DOCUMENT/ENDDOCUMENT issue is handled in the current version of this macro) and as part of a scaffolded problem that uses other existing .pg problems. This second use overlaps with the some of the features of JITAR so that should be considered as well.

The larger purpose of all this discussion:

Bringing up the history is relevant because I’m trying to review some of the features (macros and other wise) that have been added over time and in some cases rewrite them as if we had planned and coordinated all the features in advance.  :-) It’s a delicate problem which is why I’m devoting so much time to this bug report and why I appreciate the responses. I think it will be useful however for those authors who have not lived through the developmental history of the PG language and find some aspects of it quite confusing. (I’m also bemused by some aspects of WeBWorK despite realizing the historical reasons for its idiosyncrasies.)

RESOURCES and PGalias:

  1. RESOURCES and parts of PGalias are addressing the same problem of how to keep track of auxiliary files.
  2. RESOURCES, I believe, is a low tech alert for humans maintaining the OPL that other files are involved.

PGalias is about half completed and is a more ambitious attempt first to keep track of all the external resource files being used (possibly including macro .pl files) and then to use that knowledge to automatically handle auxiliary files when moving a .pg master file from one location to another, or when exporting that .pg problem file so that it can be downloaded for safe keeping or to be shared with a colleague etc. Currently PGalias keeps track of .png and .html files but not much more and I intend to add other file types this semester. I’ll include other .pg giles which may be a partial answer to the path problem in this thread. With luck I’ll also start building tools for allowing export and movement of .pg files with all their accompanying auxiliary files -- there are going to be more qusstions of this type. The temporary editor mode already made some steps in this direction. https://github.com/openwebwork/webwork2/blame/master/lib/WeBWorK/ContentGenerator/Instructor/PGProblemEditor3.pm#L1227 and a see a note there suggesting that we abstract that routine to Utils:: copyAuxiliaryFiles.

I believe that the way that PGalias is currently used in includePGproblem() constitutes a bug -- or at least a missing feature. When one returns from the included question the original PGalias object should not just be reinstated but should be updated from the object that was passed to the target problem (and presumably modified there). I don't know whether all of the information should be translated back or just some of it.

I welcome additional suggestions for how best to do this.

LibraryBrowser and -text.pg files:

I believe the library tags inserted in the -text.pg files prevent them from appearing in the OPL database and also prevent them from being displayed so they are not listed during a search using subject/chapter etc. I thought I might be able to reach them using the OPL directory button to search the directory tree directly but they don’t seem to be displayed via that method either.

Before changing FileManager perhaps we should see whether augmenting the PGalias capabilities for copying auxiliary files is enough.

There may be other reasons for augmenting or limiting FileManager’s reach. Release/2.11 blacklists course.conf and simple.conf access to ordinary instructors (permissionLevel=10) but allows it for admins (permissionLevel=20) because, with some thought, one can gain unrestricted access to the host computer given access to those files. This is not a good idea -- particularly for those running a hosting site for a large number of instructors and their courses.

Defining flile paths: The last issue is the one of defining the path.

(1) The use case for redirection (where includePGproblem is used at the moment) is substantially different from the other cases. The path to the target file has no relation to the path of the current .pg file other than that they both use the same toplevel template directory. One can’t just call includePGfile() with a file name such as ../../../Library/path-to-new-file since one can go up at most one level. Besides that kind of addressing is awkward and error prone. So perhaps for this we should not try to combine the two macros. Perhaps keeping the changing the name for includePGproblem to something indicating redirection might be useful to avoid confusion for authors -- I find myself having to look up how these macros are called each time I use them. And keep the address mechanism as it is -- namely the full path relative to the template directory

(2) The argument that including .pg problems or snippets should behave much like including .png and .html auxiliary files makes sense to me -- and it will be much easier to create the same behavior if I add .pg to the file types that alias() and PGalias() handle so I’ll do that. John Jones has already added .pdf and I think I’ll add .svg as well. After that’s done we can revisit this issue.

(3) I think you are right that the command line interface is not defining fileName and templateDirectory appropriately. I’ll look in to that and see if I can make changes there that will fix the problem that arises when I try to automatically check the OPL for questions which cause warnings.

(4) Between 2 and 3 I think we can keep the current version of using paths to the target file which are relative to the directory containing the current .pg file. This will work for most use cases but not for the redirection case where I think we need a separate macro. I’ll let you know what I find out as I continue to improve the renderProblem client.

What I see as action items after all this discussion:

1. Clean up macros/CollegeOfIdaho -- John Jones and Robin Cruz can you take care of this at some point?

2. Move some/all of the unionMacros which are widely used into pg/macros? Is this a good idea? Davide do you have suggestions for which ones should be moved?

3. Improve PGalias and the renderProblem client to better handle auxiliary files. I’ll undertake these tasks since I’ve been working on them anyway.

4. Think of an alternate name for includePGproblem() when it is used for redirection. I’d kind of like to see this change made to reduce confusion in the future but I could be talked out of it.

More comments?
P3ASSIGNEDnormalunspecifiedProblem LibrariesincludePGfile


I tried to use the theme=moodle approach, but it appears that this value is not propagated as you click on the various navigation links at the left, or submit forms with the main buttons, so I'd need to make some changes to the WW tools for creating those links and saving hidden fields if I were to make this idea work. I didn't want to mess with those myself.

BTW, both Firefox and Camino work for me as expected. Is the Moodle server host the same as the WW host? That is, is the URL used in the IFRAME the same host as the Moodle host? If not, that could be the source of the security problem, since the JavaScript running in the IFRAME could not test to see if the outer frame was Moodle or not (if they are not on the same server, they would be in different security domains, and could not query each other).

P3NEWtrivialtrunk (SVN)WeBWorK 2moodle template's javascript doesn't work in Firefox or Camino on OS X

Currently the name in wwassignment_bridge is never changed. We need facilities for changing this when ever either the moodle course or the webwork course's name is changed.

I handled the instance of mth165 going to fall06-mth165 and then to fall06mth165 (because moodle courses can't have hyphens) by hand. changing the short course name in moodle, then using the rename facility in webwork and finally I had to use direct database access to change the contents of wwassignment _bridge.

Nearly all of the accessors and creators/destructors for wwassignment_bridge have yet to be written.
P3NEWenhancementunspecifiedwwassignmentremember to change entry in wwassignment_bridge when changing the name of the course

Description of Problem: This button would change the seed for each problem in the set --either for each individual student (or --even more dangerous) for the entire class. The envisioned use is for when you are reassigning a problem set to the student and want to change the version for each student.

This button should come with a safety switch since you don't want to make this change by accident!!!

Steps to reproduce the problem: 1. 2. 3.

Actual Results:

Expected Results:

How often does this happen?

Additional Information:
P3NEWenhancementtrunk (SVN)WeBWorK 2button to reseed entire problem set

Description of Problem: There is no pointer to the page which describes the format for .lst files when you are viewing context help from the classList editor page. (There is from the context help on the File Transfer page.)

P3NEWnormaltrunk (SVN)WeBWorK 2need better help on the classlist editor page

Description of Problem: For instructors teaching the same course as last semester, I want to create a new course (Course B) and then copy all the problem sets from Course A from the previous semester. If I choose "Copy Templates From Course A" on the Course Administration Page, I end up with a course that has all the initial problem sets from Course A from the beginning of the semester. Is there an easy way to end up with the problem sets from the end of the semester? The only way I know how to do this is to "Export templates" using the "Homework Set Editor" for Course A and then create Course B using the Course Administration page. It's straightforward, but as I need to do this about 20 times, I'm wondering if this step can be eliminated.

Also, in a similar vein. When one creates a course, is it possible to have the templates automatically imported into the course (thus saving another step?).

Thanks, Tom

ps. We are running Webwork 2.1

We don't currently have this automated. The current method (export set definition files, create new course with old course as a model ) is a bit clumsy, but it's easy to remember for a faculty member just duplicating one course.

Since WeBWorK is scriptable I think the best solution to your problem would be to create a script in webwork2/bin which you can call from the command line and would perform this action on a list of courses. A systems administrator could then run this script and set up courses for the next semester. I'll add it to the features wish list.

-- Mike
P3NEWenhancementtrunk (SVN)WeBWorK 2write webwork2/bin script to automatically duplicate a list of old courses

Description of Problem:

Steps to reproduce the problem: On the classlist editor page:

Select Add ? student(s). I entered 1. Click Take Action! Enter new student: last name Public, first name JohnQ, StudentID PublicJohnQ. No set selected to assign at this time. Click Add Students.

Actual Results:

Screen refreshes, but with no feedback in green telling me a student has been added. When I now return to the classlist editor page, I do not see the new name in the list.

Expected Results:

error message indicating that the studentLogin was not entered. (This is the unique id for the entry so it is required.)

How often does this happen?

always -- I believe.

Additional Information:
P3NEWminortrunk (SVN)WeBWorK 2need better error recovery if no studentlogin is entered

Description of Problem:

If you forget to turn on the "save sessions in db" (the first item

under Server in the admin page of moodle) then you will not be automatically logged in to webwork when switching over. You will wonder why for a long time.
P3NEWenhancementunspecifiedwwassignmentWARN if moodle is not saving sessions in the mysql database

Description of Problem: It's possible to save the setHeader to one file and have the path pointing to a different location.

Steps to reproduce the problem: 1. Save a copy of the set header file to /local/set1/setHeader.pg Notice that the path becomes [TMPL]//local/set1/setHeader.pg because you began your entry with an unnecessary slash. Leave the "use in current set" check box checked.

Actual Results: You will get an error message about not being able to edit certain sets outside the templates directory. It's an error message from the createSurePathToTempFile subroutine.

This is because the listing in Homework sets editor shows the path to be /local/set1/setHeader.pg -- which the subroutine interprets as starting at the top directory.

Expected Results: No such error.

How often does this happen? Always I think.

Additional Information: One fix would simply be to remove initial slashes from any entry in this blank. There might be a deeper fix, but it would need to be thought out carefully.

The logic behind the findSurePath.... subroutines is not easy, and it is dangerous to tinker with something that has worked most of the time.
P3NEWnormal2.1.x+CVSWeBWorK 2path to setHeader in homework sets database is not the same as the setHeader created

Update, in case anyone cares:

I found a way around the above error- the cause is the students who are carried over from the previous course (in my case there were 3 such accounts: knightly, admin, global_user). You have to unassign all the hw from those users (preferably at the beginning of the semester) and then reassign them. If you do this, the error goes away.
P3NEWnormaltrunk (SVN)WeBWorK 2Bug in calculating success indicator? Illegal division by zero

Description of Problem: This happened in my MTH282 course which is using HEAD software. (running at 9202 on devel)

The mail was sent but I didn't get a reassuring message that mail was being sent and I would receive an email message when everything was done.

(I did however receive the message.)
P3NEWnormaltrunk (SVN)WeBWorK 2failed to get message "email being set to xxx users" from sendMail page




in the course.conf file should do this for you.
P3NEWnormalunspecifiedWeBWorK 2Feature Request: Set Headers

Description of Problem:

Get the following error message after creating a new empty set and clicking on the "Edit problems in set " column

Odd number of elements in hash assignment at /home/gage/alpha-webwork/webwork2/lib/WeBWorK/Utils/Tasks.pm line 122. Error messages

Can't use an undefined value as an ARRAY reference at /home/gage/alpha-webwork/webwork2/lib/WeBWorK/Utils/Tasks.pm line 125. Call stack

The information below can help locate the source of the problem.

in WeBWorK::Utils::Tasks::renderProblems called at line 1259 of /home/gage/alpha-webwork/webwork2/lib/WeBWorK/ContentGenerator/Instructor/ProblemSetDetail.pm in WeBWorK::ContentGenerator::Instructor::ProblemSetDetail::body called at line 152 of /home/gage/alpha-webwork/webwork2/lib/WeBWorK/Template.pm in WeBWorK::Template::template called at line 480 of /home/gage/alpha-webwork/webwork2/lib/WeBWorK/ContentGenerator.pm in WeBWorK::ContentGenerator::content called at line 188 of /home/gage/alpha-webwork/webwork2/lib/WeBWorK/ContentGenerator.pm

in WeBWorK::ContentGenerator::go called at line 352 of /home/gage/alpha-webwork/webwork2/lib/WeBWorK.pm
P3NEWnormal2.3.x+CVSWeBWorK 2Error on creating an empty set from the homework set editor page

This is something between a bug and a request for a feature. It's time to review the actions that are taken when the Submit Answer/Preview/Check Answer button is pressed -- particularly for gateway quizzes -- but for problems in general. This includes both the case where the student presses the button, or an instructor presses the button or the instructor acting as a student presses the button.

Here is some summary of the discussion:

Hi Gavin,

OK. It's not that big a deal for problems, but for gateway's in particular it gives the wrong idea. Could you submit that to the bug list? I don't think it would be that hard to fix, but it might be a good idea to do it along with a complete review of all the decisions that are made when an answer is submitted. (Record it in database?, change the current score on the basis of its correctness?, change the cumulative score in the database? decrease number of attempts used? preview?, is it the student or an instructor acting as a student? or is the instructor submitting an answer & should it be recorded? -- did I miss anything?) It's a moderately complicated decision that is being made and its behavior has been built up over a long time.

Take care,


On Feb 23, 2007, at 9:17 AM, P. Gavin LaRose wrote:

Hi Mike,

I think the same thing that Eddie described works on a problem: if you have a finite number of attempts, submit it out to the last attempt, then click "back" and resubmit, the final submission is retained in in the database even though the score doesn't change.


Hi Eddie,

Just to confirm the exchange that Mike and I had: yes, the data does end up in the database. It appears that the status, num_correct, and num_incorrect fields in problem_user are not changed, but the last_answer field is reset. This is true for both problems and gateways, which makes sense in that I or Mike copied most of that code verbatim from Problem.pm when developing GatewayQuiz.pm.

For trapping 'Back,' I was hoping that it would be possible to just disable the Window.back() method, but don't think that is possible. Similarly, I think javascript's security model means that playing with the Window.history object won't work either.

All that said, I think the real solution is just to make sure that the database entry doesn't occur; the graded test returns the correct error messages (something to the effect that 'your grade was not recorded because you don't have any attempts left on this version; your grade on this submission is X/Z; your recorded grade is Y/Z.'), so that if the database issue is resolved the ambiguity should be slight.

P3NEWenhancementtrunk (SVN)WeBWorK 2review the logic of the response to the Submit Answer button

Description of Problem:

When viewing a problem in a set and click "Edit it", one option at the bottom of the edit-page is to

"Create a copy at ___ and use in set ___".

This doesn't seem to function quite right. In the situation where the set has already been assigned, only students that have made no submissions on the original (replaced problem) will have the problem replaced by the new copy. Students that have already made submissions on the original problem will not have the problem replaced by the new copy.

Steps to reproduce the problem: 1. 2. 3.

Actual Results:

Expected Results:

How often does this happen?

Additional Information:
P3NEWnormalunspecifiedWeBWorK 2Replacing a problem doesn't work right

Description of Problem: The webwork problem set 6 problem one is not accepting the correct answer.

Steps to reproduce the problem: 1. 2. 3.

Actual Results:

Expected Results:

How often does this happen?

Additional Information:
P3NEWnormalunspecifiedWeBWorKWebwork for Xiaobo Liu's Calc 2 Section 3 class won't accept right answer

About having the legacy checkers load parserCusomization.pl, that could certainly be done (and was my first thought as well), but there are a number of issues with that. First, loadMacros() will only load a file once, so if you used two legacy checkers, parserCustomization.pl would only be loaded in the first one. You could get around that by using the _parserCustomization_init() routine and call that each time, but its a bit of a hack. (I assume what you have in mind is to run the customization after creating the copy of the default context, but before thep parser object itself has been set up.)

I have never been happy with the global customization of the parser, and parserCustomization.pl was just a quick fix to give some functionality for it. The problem is that the default contexts can't be modified by a problem since they are in the main compartment not the safe comparted (and are shared with the safe compartment via the Parser:: and Value:: namespaces). So if you were to modify those default contexts, the changes would be permanent (in the child process that runs the problem) and would not be reset for the next problem. The Parser doesn't reinitialize the contexts each time because they are fairly expensive to make, and the defaults don't really change.

The Context("name") command looks up the default context and makes a copy before passing it to the problem, so any changes to the context are local to the problem and are not persistant in the mod_perl child. One place that customization could be done is in that copying process. In fact, there is already a hook that does that in order to include the settings for zeroLevel and the other similar parameters. it would be possible to run additional code at that point, and I've considered that as a means of making user-level customization possible.

A second place that could be used is that Context("name") first looks in a special hash in the problem's namespace for the context and then in the default hash, so parserCustomization.pl could make a copy of the default context and store it (under the same name) in the local array. Then if it is requested by Context("name"), you will get the customized version rather than the default version (this is how I envisioned parserCustomization.pl working).

The problem is that the legacy answer checkers don't use Context(), but go directly to the Legacy contexts and copy them. So that avenue of customization is not available. I should change the legacy macros to use the standard lookup mechanism instead, and to load parserCustomization.pl if it hasn't been already loaded. I'll look into making that change as soon as I have some time.

P3NEWnormaldevelopPGparserCustomization not loaded for legacy answer checker

Hi Sam,

Sorry - this is a regular set - the instructor just named it Quiz, so I thought it was a gateway/quiz. Anyway, here's the set definition file and the HTML source:

openDate = 03/03/2007 at 06:00pm PST dueDate = 03/08/2007 at 11:00pm PST answerDate = 03/09/2007 at 07:00am PST paperHeaderFile = screenHeaderFile = problemList =

Library/maCalcDB/setAlgebra19FunTransforms/srw2_5_15.pg, 1, -1 Library/maCalcDB/setAlgebra19FunTransforms/srw2_5_19.pg, 1, -1 Library/maCalcDB/setAlgebra19FunTransforms/srw2_5_31.pg, 1, -1 Library/maCalcDB/setAlgebra19FunTransforms/srw2_5_35.pg, 1, -1 Library/maCalcDB/setAlgebra19FunTransforms/beth1algfun.pg, 1, -1 Library/maCalcDB/setAlgebra19FunTransforms/c0s2p1.pg, 1, -1 Library/maCalcDB/setAlgebra19FunTransforms/lh2-4_10a.pg, 1, -1 Library/maCalcDB/setAlgebra19FunTransforms/lh2-4_12b.pg, 1, -1 Library/maCalcDB/setAlgebra19FunTransforms/lh2-4_23.pg, 1, -1 Library/maCalcDB/setAlgebra19FunTransforms/ns1_2_3.pg, 1, -1 Library/maCalcDB/setAlgebra19FunTransforms/p8.pg, 1, -1 Library/maCalcDB/setAlgebra19FunTransforms/scaling.pg, 1, -1 Library/maCalcDB/setAlgebra19FunTransforms/ur_fn_3_1.pg, 1, -1 Library/maCalcDB/setAlgebra19FunTransforms/ur_fn_3_5.pg, 1, -1 Library/maCalcDB/setAlgebra19FunTransforms/ur_fn_3_7.pg, 1, -1 Library/maCalcDB/setAlgebra19FunTransforms/c0s2p2/c0s2p2.pg, 1, -1 Library/maCalcDB/setAlgebra20QuadraticFun/findvertex.pg, 1, -1 Library/maCalcDB/setAlgebra20QuadraticFun/givencoeff.pg, 1, -1 Library/maCalcDB/setAlgebra20QuadraticFun/lh3-1_19-20.pg, 1, -1 Library/maCalcDB/setAlgebra20QuadraticFun/lh3-1_38.pg, 1, -1 Library/maCalcDB/setAlgebra20QuadraticFun/lh3-1_79.pg, 1, -1

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;> <!--

  1. WeBWorK Online Homework Delivery System
  2. Copyright
P3NEWnormal2.3.x+CVSWeBWorK 2wrong image used in quiz

Description of Problem:

A minor typo in course.conf causes the instructor and students to be locked out of course. The instructor is unable to login and fix the typo.

The typo I made was to include an extra $-sign :

$$permissionLevels{view_proctored_tests} = student;

instead of

$permissionLevels{view_proctored_tests} = student;

after that I was unable to login. The only way to fix the problem is to login through shell and edit course.conf, so this will have to be done by the admin.

Ideally the instructor should not be able to lock up the course in this manner by editing course.conf

Steps to reproduce the problem: 1. 2. 3.

Actual Results:

Expected Results:

How often does this happen?

Additional Information:
P3NEWnormal2.3.x+CVSWeBWorK 2typo in course.conf locks out instructor/students

Description of Problem: Tried to add user guest with password guest to MTH282 (running at devel 9002 and connected to moodle) That version of WeBWorK is close to the bleeding edge -- so this bug is probably related to the connection to moodle:

Warning messages

Error messages

addPermissionLevel: user guest1 not found at /home/gage/alpha-webwork/webwork2/lib/WeBWorK/ContentGenerator/Instructor/AddUsers.pm line 85 Call stack

The information below can help locate the source of the problem.

in Carp::croak called at line 567 of /home/gage/alpha-webwork/webwork2/lib/WeBWorK/DB.pm in WeBWorK::DB::addPermissionLevel called at line 85 of /home/gage/alpha-webwork/webwork2/lib/WeBWorK/ContentGenerator/Instructor/AddUsers.pm in WeBWorK::ContentGenerator::Instructor::AddUsers::initialize called at line 186 of /home/gage/alpha-webwork/webwork2/lib/WeBWorK/ContentGenerator.pm in WeBWorK::ContentGenerator::go called at line 352 of /home/gage/alpha-webwork/webwork2/lib/WeBWorK.pm

Actual Results:

Expected Results:

Probably should have an error message indicating that updates have to be made through moodle?

Once we have proper webservice connection between moodle and webwork we can make this work better.

How often does this happen?

Additional Information:
P3NEWnormaltrunk (SVN)WeBWorK 2bug in adding users (permission level)

Description of Problem: If one removes an individual due date (i.e. unchecking the checkbox) and also makes the new due date blank -- then one will get an error.

Steps to reproduce the problem: 1. assign a student a new due date and answer date (click save changes) 2. unassign this separate due date by unchecking the boxes and also making the replacement due date blank 3. click save

Actual Results: You will get an error message about the format of the date being incorrect, or that the date isn't there

Expected Results: That the date would revert to the class standard due date.

How often does this happen?

Always Additional Information:

If one leaves a correctly formatted date in the replacement due date box then the action performs as expected. Likely the check for the correctly formatted date is being made even when the checkbox is unchecked and no action is taking place.
P3NEWnormaltrunk (SVN)WeBWorK 2error in changing individual times

Well, it turns out we were both wrong. The limited complex context DOES handle a+ib form, and it DOES allow operations in the real coefficients. The problem is that i*pi*log(2) means (i*pi)*log(2), and that is NOT allowed, because it is a complex number times a real. If you entered i*(pi*log(2)) it would be OK. I suppose the context could be loosened up a bit to allow a product of a pure imaginary with a real, but the more exceptions that are made, the more likely it will be that unsimplified answers will be accepted.

P3NEWenhancementunspecifiedPGRequest to allow a+ib as well as a+bi form in LimitedComplex context

The link should be fixed -- but it's unclear what the icon should link to. On some other pages the help link is to a general help page and the question mark icon is to a different context specific help page. It's not clear this is good user interface practice in general -- and it's definitely bad when it's inconsistent (some pages have context sensitive help and others have what appears

to be a bad link.)
P3NEWminortrunk (SVN)WeBWorK 2bad link for the question mark on home page
1257 The warning (for me) goes away when I include a test time limit on the gateway quiz. I believe the warning is occurring when the time count-down box is being drawn. If I then remove the test time limit from the gateway quiz settings, the warnings reappear.
P3NEWminortrunk (SVN)WeBWorK 2Undefined Variable Warning

The reduction formulas is one of the things that needs a lot of work, particularly the negatives of things. I'll add it to the list of modifications for this summer.

P3NEWenhancementdevelopPGquestion about reducing polynomials with complex coefficients

On some further investigation I see this behavior -- please feel free to correct me or amplify on my description.

If you use the current demoList.lst to add practice users they will be added as ordinary students with initial passwords practice1, practice2. etc.

If you add a guest the only way to login as a guest is by using the "login as guest" button -- you can't choose which guest to login as.

I believe although I'm not positive yet -- that the "login as guest" button doesn't check to see if a guest account is already in "use" because I think I've been able to interfer with an active guest account.

P3NEWnormaltrunk (SVN)WeBWorK 2new behavior of practice1??

Description of Problem: On Ubunutu Linux Server 7 including the webwork apache2 configuration file into the main apache2 conf file will cause Apache2 to error on startup.

The error: Syntax error on line 29 of /opt/webwork/webwork2/conf/webwork.apache2-config: $parms->add_config() has failed: Option FollowSymLinks not allowed here at /usr/lib/perl5/Apache2/PerlSections.pm line 203.\n

Steps to reproduce the problem: 1. Install Apache2 on a linux box 2. Include the WebWorK confguration file. 3. Restart Apache2.

I believe the error has to do with Apache2 not liking the rewrite package which lets you use perl to define your apache configuration settings. A quick fix is to use the following as the webwork.apache2-config configuration file:

... AliasMatch /webwork2_course_files/([^/]*)/(.*) /opt/webwork/courses/$1/html/$2 Alias /webwork2_files /opt/webwork/webwork2/htdocs <Directory /opt/webwork/courses/*/html>

   Allow from all
   AllowOverride None
   Options FollowSymLinks
   Order allow,deny

</Directory> <Directory /opt/webwork/webwork2/htdocs>

   Allow from all
   AllowOverride None
   Options FollowSymLinks
   Order allow,deny

</Directory> <Location /webwork2>

   PerlHandler Apache::WeBWorK
   SetHandler perl-script


PerlModule mod_perl2


  1. Set this variable to the path to your WeBWorK installation.

my $webwork_dir = "/opt/webwork/webwork2";

  1. This code reads global.conf and extracts the remaining configuration
  2. variables. There is no need to modify it.

eval "use lib '$webwork_dir/lib'"; die $@ if $@; eval "use WeBWorK::CourseEnvironment"; die $@ if $@; my $ce = new WeBWorK::CourseEnvironment({ webwork_dir => $webwork_dir }); my $webwork_url = $ce->{webwork_url}; my $pg_dir = $ce->{pg_dir}; my $webwork_htdocs_url = $ce->{webwork_htdocs_url}; my $webwork_htdocs_dir = $ce->{webwork_htdocs_dir}; my $webwork_courses_url = $ce->{webwork_courses_url}; my $webwork_courses_dir = $ce->{webwork_courses_dir}; eval "use lib '$pg_dir/lib'"; die $@ if $@;

$WeBWorK::SeedCE{webwork_dir} = $webwork_dir;

... and comment out the rest.

Yet the solution is hacky because you have to hardcode in the path to webwork.
P3NEWnormaltrunk (SVN)WeBWorK 2Apache2 installation failing

Getting this error when setting up several development sites on hosted3 -- probably because the logs directory has to be set to wwdev

WeBWorK Warnings

WeBWorK has encountered warnings while processing your request. If this occured when viewing a problem, it was likely caused by an error or ambiguity in that problem. Otherwise, it may indicate a problem with the WeBWorK system itself. If you are a student, report these warnings to your professor to have them corrected. If you are a professor, please consult the warning output below for more information. Warning messages

   * failed to open /ww/webwork/shared_courses/admin/logs/login.log for writing: Permission denied at /u/gage/webwork/webwork2/lib/WeBWorK/Utils.pm line 718.
* failed to open /ww/webwork/shared_courses/admin/logs/login.log for writing: Permission denied at /u/gage/webwork/webwork2/lib/WeBWorK/Utils.pm line 718.
P3NEWnormaltrunk (SVN)WeBWorK 2permission errors when setting up development systems

Description of Problem:

I get this sequence of statements when preparing a brand new system:

A 'dbupgrade' table exists in this database. This suggests that this database may already be upgraded beyond db_version 0. If this is the case, running this utility is not necessary. This utility is only needed to make sure that databases are set up correctly to enter into the automatic upgrade regimen. Go ahead with table checks? [y/N] y

Checking tables for course 'gage_course2' gage_course2_problem_user.user_id: type should be 'blob' but appears to be 'tinyblob'

I can change this field with the following SQL statement: ALTER TABLE `gage_course2_problem_user` CHANGE COLUMN `user_id` `user_id` BLOB

Change field 'gage_course2_problem_user.user_id'? [Y/n] n gage_course2_problem_user.set_id: type should be 'blob' but appears to be 'tinyblob'

I can change this field with the following SQL statement: ALTER TABLE `gage_course2_problem_user` CHANGE COLUMN `set_id` `set_id` BLOB

Change field 'gage_course2_problem_user.set_id'? [Y/n] ^C 16 hosted3 ~/webwork/webwork2/bin % ./wwdb_upgrade

I suspect that the wwdb_check is wrong and is expecting a blob even though the correct type is tinyblob. Is that right??? Should be an easy thing to change in wwdb_check.

-- Mike
P3NEWnormal2.3.x+CVSWeBWorK 2should the data type for problem_user.set_id be blob or tinyblob??

wwdb_check gives the following comments:

I suspect that it doesn't know about these tables.

The following tables exist in the database but are not associated with any course:

admin_set_locations admin_set_locations_user roubos_course_set_locations

P3NEWnormal2.3.x+CVSWeBWorK 2more cosmetic updates needed for bin/wwdb_check (needs to know about new tables)

These errors might actually be normal:

Upgrading database from version 1 to 2... (Version 2 adds problems_per_page field to set and set_user tables of each course.)

An error occured while running the course upgrade code for version 2 on course admin: DBD::mysql::db do failed: Duplicate column name 'problems_per_page' at ./wwdb_upgrade line 64. Ignore this error and go on to the next course? [y/N]


Upgrading database from version 15 to 16... (Version 16 adds hide_score and hide_work fields to set and set_user)

An error occured while running the course upgrade code for version 16 on course admin: DBD::mysql::db do failed: Duplicate column name 'hide_score' at ./wwdb_upgrade line 200, <STDIN> line 4. Ignore this error and go on to the next course? [y/N]

An error occured while running the course upgrade code for version 16 on course roubos_course: DBD::mysql::db do failed: Duplicate column name 'hide_score' at ./wwdb_upgrade line 200, <STDIN> line 5. Ignore this error and go on to the next course? [y/N] Done.


Upgrading database from version 17 to 18... (Version 18 adds time_limit_cap field to set and set_user tables)

An error occured while running the course upgrade code for version 18 on course admin: DBD::mysql::db do failed: Duplicate column name 'time_limit_cap' at ./wwdb_upgrade line 226, <STDIN> line 6. Ignore this error and go on to the next course? [y/N]

An error occured while running the course upgrade code for version 18 on course roubos_course: DBD::mysql::db do failed: Duplicate column name 'time_limit_cap' at ./wwdb_upgrade line 226, <STDIN> line 7. Ignore this error and go on to the next course? [y/N] Done.


Upgrading database from version 19 to 20... (Version 20 adds locations, location_addresses, set_locations and set_locations_user tables to database, and add restrict_ip to set and set_user.)

An error occured while running the course upgrade code for version 20 on course admin: DBD::mysql::db do failed: Table 'admin_set_locations' already exists at ./wwdb_upgrade line 254, <STDIN> line 8. Ignore this error and go on to the next course? [y/N]

An error occured while running the course upgrade code for version 20 on course roubos_course: DBD::mysql::db do failed: Table 'roubos_course_set_locations' already exists at ./wwdb_upgrade line 254, <STDIN> line 9. Ignore this error and go on to the next course? [y/N]

An error occured while running the course upgrade code for version 20 on course roubos_course.tmp1: DBD::mysql::db do failed: Incorrect table name 'roubos_course.tmp1_set_locations' at ./wwdb_upgrade line 254, <STDIN> line 10. Ignore this error and go on to the next course? [y/N] Done.

Upgrading database from version 21 to 22... (Version 22 adds relax_restrict_ip, hide_problem_score columns to set and set_user tables.)

An error occured while running the course upgrade code for version 22 on course admin: DBD::mysql::db do failed: Duplicate column name 'relax_restrict_ip' at ./wwdb_upgrade line 280, <STDIN> line 11. Ignore this error and go on to the next course? [y/N]

An error occured while running the course upgrade code for version 22 on course roubos_course: DBD::mysql::db do failed: Duplicate column name 'relax_restrict_ip' at ./wwdb_upgrade line 280, <STDIN> line 12. Ignore this error and go on to the next course? [y/N] Done.

Upgrading database from version 22 to 23... (Version 23 adds set and set_user fields to allow set-level proctor, updates permissions to allow finer-grained regulation of proctoring.)

An error occured while running the course upgrade code for version 23 on course admin: DBD::mysql::db do failed: Duplicate column name 'restricted_login_proctor' at ./wwdb_upgrade line 296, <STDIN> line 13. Ignore this error and go on to the next course? [y/N]

An error occured while running the course upgrade code for version 23 on course roubos_course: DBD::mysql::db do failed: Duplicate column name 'restricted_login_proctor' at ./wwdb_upgrade line 296, <STDIN> line 14. Ignore this error and go on to the next course? [y/N] Done.

Database is up-to-date at version 23. 26 hosted3 ~/webwork/webwork2/bin % ./wwdb_upgrade

Database is up-to-date at version 23.
P3NEWnormal2.3.x+CVSWeBWorK 2error messages on running wwdb_upgrade on a new database

Description of Problem: warning message occurs triggered at line 1098 of ProblemSetDetails.

Steps to reproduce the problem: 1. Take regular existing problem set 2. Convert to gateway quiz 3. the error message occurs at the bottom -- no other apparent problems.

Actual Results: warning message: Use of uninitialized value in string ne at /u/gage/webwork/webwork2/lib/WeBWorK/ContentGenerator/Instructor/ProblemSetDetail.pm line 1098.

Expected Results:

How often does this happen?

Additional Information:
P3NEWnormal2.3.x+CVSWeBWorK 2param("set.$setID.restrict_ip") not properly set

When I run wwdb_upgrade in a new installation I get:

An error occured while running the course upgrade code for version 2 on course modelCourse: DBD::mysql::db do failed: Table 'webwork.modelCourse_set' doesn't exist at /opt/webwork/webwork2/bin/wwdb_upgrade line 77. Ignore this error and go on to the next course? [y/N]

I think we should trap and discard this message since if it's a standard setup modelCourse isn't a real course and if someone sets up modelCourse as a real course, then there would be no error. At a minimum we should look for 'webwork.modelCourse_set' and tell people

to ignore this error since modelCourse isn't a real course
P3NEWnormalunspecifiedWeBWorK 2confusing error message from wwdb_upgrade
1283 Allow archiving of multple courses
P3NEWenhancementunspecifiedWeBWorK 2Allow archiving of multple courses
1284 Can we add the functionality of show-source.cgi to the File Manager's view function? It's already subject to authentication and does security checks for the file paths it gets passed.
P3NEWnormalunspecifiedPGlocation of perl is hardwired in show-source.cgi

Description of Problem: Here's a small "bug" that I just experienced. If you type in information for new users in the last name, first name, student id, but *not* login name, the user won't be added, but there isn't an indication that data has been ignored.

Could we add a flag indicating that certain users were not added because of insufficient data?

I just did this 3 times because I was being silly and not really looking at what I was doing.

Perhaps the login name should be the first field since that seems to be the most important one?

P3NEWnormaltrunk (SVN)WeBWorK 2need explicit warning message if login name of user is omitted.

Description of Problem:

There is no browse button corresponding to choosing the database file to import (in webwork adminstration screen).
P3NEWnormalunspecifiedDevelopmentno browse button corresponding to choosing the database file to import

Description of Problem: When adding a large list of users, if a username shows up more than once add user produces an error. Happens in multiple classes.

Steps to reproduce the problem: 1. Create a large classlist with a repeated user. 2. Import users from list 3. Error produced

Actual Results: Here is the error. When the list is imported again, no problems.

WeBWorK &#8594; Math155-F07 &#8594; Instructor Tools &#8594; Classlist Editor

Classlist Editor WeBWorK error

An error occured while processing your request. For help, please send mail to this site's webmaster (ef@math.wvu.edu), including all of the following information as well as what what you were doing when the error occured.

Tue Aug 21 09:47:59 2007 Warning messages Error messages

   DBD::mysql::st execute failed: Duplicate entry 'aalkhand' for key 1 at /opt/webwork.23dev/webwork2/lib/WeBWorK/DB/Schema/NewSQL/Std.pm line 417.

Call stack

The information below can help locate the source of the problem.

   * in WeBWorK::DB::addUser called at line 1358 of /opt/webwork.23dev/webwork2/lib/WeBWorK/ContentGenerator/Instructor/UserList.pm
   * in WeBWorK::ContentGenerator::Instructor::UserList::importUsersFromCSV called at line 1022 of /opt/webwork.23dev/webwork2/lib/WeBWorK/ContentGenerator/Instructor/UserList.pm
   * in WeBWorK::ContentGenerator::Instructor::UserList::import_handler called at line 372 of /opt/webwork.23dev/webwork2/lib/WeBWorK/ContentGenerator/Instructor/UserList.pm
   * in WeBWorK::ContentGenerator::Instructor::UserList::body called at line 152 of /opt/webwork.23dev/webwork2/lib/WeBWorK/Template.pm
   * in WeBWorK::Template::template called at line 486 of /opt/webwork.23dev/webwork2/lib/WeBWorK/ContentGenerator.pm
   * in WeBWorK::ContentGenerator::content called at line 194 of /opt/webwork.23dev/webwork2/lib/WeBWorK/ContentGenerator.pm
   * in WeBWorK::ContentGenerator::go called at line 353 of /opt/webwork.23dev/webwork2/lib/WeBWorK.pm

Request information Method POST URI /Math155-F07/instructor/users/ HTTP Headers Keep-Alive 300 Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7 User-Agent Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv: Gecko/20070725 Firefox/ Accept text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 Connection keep-alive Referer http://webwork.math.wvu.edu/Math155-F07/instructor/users/?effectiveUser=ef&key=5RiENr0MQE1IqAAFuYm1pO9SzXgVlrpj&user=ef Content-Length 1272 Accept-Encoding gzip,deflate Content-Type application/x-www-form-urlencoded Accept-Language en-us,en;q=0.5 Host webwork.math.wvu.edu

Expected Results:

How often does this happen?

Additional Information:
P3NEWnormaltrunk (SVN)WeBWorK 2repeated hangs when adding users
1291 I'll leave this as new since it should probably be addressed but I have the solution. During classlist upload, there should probably be a check to make sure the status and permission fields are allowed values and a flag thrown if now. The behavior in this bug report is the result of an instructor uploading a classlist with all the member statuses set to "Student" which is not a valid value but no error was generated during upload. Once that field was set to Enrolled, it's behaving normally.
P3NEWnormaltrunk (SVN)WeBWorK 2When a student logs in, an error is generated

Description of Problem: Homework set sorting does not stick.

Steps to reproduce the problem: 1. Given a classlist and existing homework sets 2. Get into the homework sets editor 3. Click on primary sort 4. Set the choice box to set name 5. Click on Take action! 6. Click on Homework sets -- The sets are not sorted by name 7. Click on Homework Sets Editor again. The sort is lost

Actual Results: Homework sets do not stay sorted by name

Expected Results: That homewor sets will stay sorted by name

How often does this happen? Every time

Additional Information:
P3NEWnormalunspecifiedWeBWorK 2Homework set sorting does not stick

Description of Problem: If you label homework set as 00 you will not be able to chose it from moodle. The set will appear in the popupmenu as 0 and when you choose that you will get an error message about some set_id not being defined.

Workaround: make sure your set name begins with a letter.

It is possible to add a space before or after the 00 which allows it to

be handled correctly. The problem does not seem to be on the perl side -- the conversion to numbers happens either in the transport stage (conversion into, or out of the transport xml) or on the moodle side. The transport object is defined as an array of strings as best I can determine.
P3NEWnormalHEADwwassignmentset_id's should be handled as strings


As you remarked, this only seems to be visible when you are a student and click on "generate hardcopy for selected sets" without actually selecting a set. No warning message that a set hasn't been selected is generated.

I hadn't seen this before until this week, when suddenly we got about 5 complaints from students in the space of a few days. I'm able to reproduce it fairly reliably using a student account.

We're running 2-4.

P3NEWnormaltrunk (SVN)WeBWorK 2hard copy error --(set not assigned to user

Hi -

For #8 of Webwork #6 of Calc 233, I believe that I have the correct answer for atleast 1, if not 2 of the parts of the question, however, webwork will not recognize my answers as correct - they keep saying that they are wrong. Please let me know if I am just wrong and not differentiating correctly or if my answers truely are right and webwork just isn't recognizing them.

the given function was: f(x,y) = -10sin(2x+y) + 5cos(x-y)

My answers were:

fyy = 10sin(2x+y) - 5cos(x-y) fyx = 20sin(2x+y) + 5cos(x-y)

Thank you!

P3NEWnormalunspecifiedWeBWorKwill not accept correct solution

It looks like one of the problems that is in your homework set contains an error.

If you are a student, you should point this out to your instructor so that the problem can be identified and fixed.

If you are an instructor, then you should look though the homework set that is currently open for the errant problem. It seems to contain the text "number of lunch customers they serve" and let us know which problem file that is.

It appears that some of the comments are being inserted as part of the text of the problem, which seems strange. It might be that you have a corrupted version of the problem, or the problem itself could be in error. But we can't do much without more specific information about the .pg files actually in use for this homework set.

P3NEWnormalunspecifiedWeBWorKError while generating hard copy, missing parts of questions.

Description of Problem:

This one may need some thought -- if you change the due date on a set there is an old date that must be deleted from the calendar.

Steps to reproduce the problem: 1. observe the current due date of an existing set and where it appears on the moodle calendar 1. change the due date on the existing set (say set00) through moodle 2. 3.

Actual Results: the new due date will appear on the calendar but the old one will still be there.

Expected Results:

you'd like the old date to disappear

How often does this happen? always.

Additional Information:

I guess the mechanism would be -- on "save changes" on the wwassignment set assignment page 1. Check to see if there is a current event associated with this set 2. Grab current date from webwork 3. Assuming all systems are go push the new event to the calendar 4. Remove the current event from the calendar.

(if there was no current event do nothing)

-- Mike
P3NEWnormalHEADwwassignmentneed to delete old event on calendar when creating a new one
follow us