Log of /branches/gage_dev/webwork2/lib/WeBWorK/ContentGenerator/Instructor/ProblemSetDetail.pm
Parent Directory
Revision
5322 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Tue Aug 14 13:50:34 2007 UTC (5 years, 9 months ago) by
glarose
Original Path:
trunk/webwork2/lib/WeBWorK/ContentGenerator/Instructor/ProblemSetDetail.pm
File length: 74988 byte(s)
Diff to
previous 5319
bug fix. when updating to hide set header display I assumed that
the $db->getMergedSet($userToShow, $setID) would succeed, which isn't
the case for a set that isn't assigned to any users (in particular,
which isn't assigned to the instructor who is editing the set). this
bug fix resolves that by instead using the global set to determine if
headers should be displayed when the call to get the merged set fails.
Revision
4923 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Wed Apr 4 15:06:01 2007 UTC (6 years, 1 month ago) by
glarose
Original Path:
trunk/webwork2/lib/WeBWorK/ContentGenerator/Instructor/ProblemSetDetail.pm
File length: 73067 byte(s)
Diff to
previous 4922
Add set-level proctor login password for proctored gateway/quiz
assignments, improve handling of proctor keys and permissions for
proctored assignments, bug fixes for recently added features.
This commit
- adds the ability to specify a set-level proctor for proctored
gateway/quiz assignments. this is done by adding a proctor with
a username "set_id:setName", where "setName" is the name of the
set, adding a "restricted_login_proctor" field to the set tables
in the database, and allowing Authen::Proctor and
ContentGenerator::LoginProctor to appropriately deal with this
possibility.
- updates proctor permissions and status in global.conf.dist,
changing the old "proctor_quiz" permission level (3) into two
levels, "proctor_quiz_login" and "proctor_quiz_grade".
wwdb_upgrade includes a stanza to make this change to proctors
that already exist in courses.
- adds a "Proctor" status in %statuses in global.conf, with no
valid behaviors. this allows the creation of proctor users
in a course who have the permissionLevel to login (and thus
proctor), but not to access the course.
- improves GatewayQuiz explanatory messages when scores or work
are hidden.
- improves GatewayQuiz proctor key management, especially for
tests with more than one allowed attempt. this includes
adding a deleteAllProctorKeys() method to DB.pm.
- updates Instructor Tools, UserList.pm and ProblemSetDetail
to deal with set-level proctoring. c.f. the note below about
the ramifications of these changes.
- updates ProblemSetList to deal with new problem set fields
set_locations and set-level proctors that are located in a
different database table than the set data.
- fixes bugs in UserList and ProblemSetDetail dealing with the
setting of hide_score, hide_score_by_problem, and
time_limit_cap.
This update hides set-level proctor users from the classlist
editor (UserList.pm) and instructor tools (Index.pm) interfaces.
They can be created, modified, and deleted at the homework sets
editor page (ProblemSetDetail.pm) only, and there only implicitly:
we never indicate that a user is being created or modified behind
the screen.
Revision
4918 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Fri Mar 30 19:07:55 2007 UTC (6 years, 1 month ago) by
glarose
Original Path:
trunk/webwork2/lib/WeBWorK/ContentGenerator/Instructor/ProblemSetDetail.pm
File length: 66617 byte(s)
Diff to
previous 4915
Some bugfixes, preliminary commit of relax_restrict_ip function. this
commit
- adds relax_restrict_ip and hide_score_by_problem columns to the set
and set_user tables
- adds the corresponding fields to the Set and UserSet DB Records
- patches 'no location' handling in the location management routine
in CourseAdmin.pm
- improves Authz->checkSet's handling of the case of location
restriction when no addresses exist for a location, makes it
use any cached set that may be available, and makes it honor
relax_restrict_ip
- corrects a typo and some comments in DB.pm
- allows ip restriction fields in ProblemSetList when importing from
or exporting to set definition files
- updates ProblemSetDetail.pm to handle the relax_restrict_ip field
The relax_restrict_ip function has not been well tested.
hide_score_by_problem isn't yet used.
Revision
4914 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Thu Mar 29 19:48:58 2007 UTC (6 years, 1 month ago) by
glarose
Original Path:
trunk/webwork2/lib/WeBWorK/ContentGenerator/Instructor/ProblemSetDetail.pm
File length: 65707 byte(s)
Diff to
previous 4910
More gateway fixes/additions. This commit
- moves javascript code for gateways into htdocs/js/gateway.js,
- updates the gateway template to use that,
- updates the gateway CSS file to use Louis Zulli's workaround
for IE6 not honoring position:fixed, and adds CSS definitions
for a score reporting box for multi-page, multi-attempt quizzes,
- updates the GatewayQuiz module to print a score reporting box
for multi-page, multi-attempt quizzes,
- updates the Grades module to correctly sort problems for
GatewayQuiz assignments that have randomly ordered problems, and
- adds some error checking to ProblemSetDetail to avoid people
doing things like submitting a zero time limit for a gateway.
Revision
4904 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Tue Mar 27 17:04:02 2007 UTC (6 years, 1 month ago) by
glarose
Original Path:
trunk/webwork2/lib/WeBWorK/ContentGenerator/Instructor/ProblemSetDetail.pm
File length: 63640 byte(s)
Diff to
previous 4874
Preliminary commit of code to restrict access to assignments by client
IP address. This commit adds the database tables for IP address
restriction, updates check_modules.pl to require Net::IP for address
matching, adds database calls in DB.pm for manipulating locations and
addresses, and adds location restriction to the set editing in
ProblemSetDetail.
This commit does not add actual restriction to sets, nor the ability
to create locations to which to restrict access.
Revision
3802 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Thu Dec 8 19:16:09 2005 UTC (7 years, 5 months ago) by
sh002i
Original Path:
trunk/webwork2/lib/WeBWorK/ContentGenerator/Instructor/ProblemSetDetail.pm
File length: 55407 byte(s)
Diff to
previous 3790
Allow reordering to succeed even if some UserProblems are missing.
Addresses bug #878.
By the way, I found the reordering code really hard to read, so I added
a lot of comments and replaced multidimensional array accesses with a
shorter form. ($sortme[$j][0] rather than $sortme[$j]->[0].) I'd like to
maybe rewrite this code sometime to eliminate some indirection and make
things clearer.
There are two substantive changes:
(1) When a UserProblem has to get reordered, we only reorder it if a
UserProblem record actually exists. If it doesn't exist, we figure out
where it would have moved to, and delete that problem instead.
(2) When moving a UserProblem, the target location either contains or
doesn't contain a record. Previously, the code checked whether a
GlobalProblem existed in this location, assuming that if a global
problem existed the corresponding UserProblem would as well. Now, it
checks whether a UserProblem exists, which allows for missing
UserProblem records.
Lingering questions:
(1) When multiple problems are assigned the same number, this results in
the last one ending up first in the new ordering. I think it would be
more natural for the first one to end up first. This would be an easy
fix.
(2) $force always gets set if reordering needs to be done, so we aren't
able to delete a problem, reorder some other problems, and end up with a
hole where where the deleted problem was. We can either fix this by
mentioning this next to the force checkbox, or change it so that
particular holes (i.e. those left by deleted problems) are allowed when
reordering.
Revision
3721 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Mon Oct 17 17:36:29 2005 UTC (7 years, 7 months ago) by
sh002i
Original Path:
trunk/webwork2/lib/WeBWorK/ContentGenerator/Instructor/ProblemSetDetail.pm
File length: 50913 byte(s)
Diff to
previous 3720
rearrange addition, deletion, change-saving, and "mark correct" code.
Order is now:
- save changes to existing problems
- mark specified problems correct
- delete specified problems
- add blank problem
This ensures consistencey if multiple operations are performed at once,
and also prevents the values set in the new problem from being
overwritten with empty values when changes to existing problems are
saved.
Revision
3719 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Mon Oct 17 13:58:07 2005 UTC (7 years, 7 months ago) by
gage
Original Path:
trunk/webwork2/lib/WeBWorK/ContentGenerator/Instructor/ProblemSetDetail.pm
File length: 50908 byte(s)
Diff to
previous 3647
Improved handling of case where a blank_problem is asked for in PGProblemEditor.pm
Also improved the random names for new local problems
Added ability to create a new blank problem in ProblemSetDetail.pm (without going to the PGProblemEditor.pm)
however something is not yet working when this problem record is saved.
Sam -- could you look at
lines near 679 to see what the problem is? There is a FIXME note there. I suspect that the addProblemToSet
routine is failing somehow, but there is no error message. Many of the record fields are not filled out --
including the sourceFile path and the number of attempts. The same snippet of code works fine
in PGProblemEditor.pm
--Mike
Revision
3377 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Thu Jul 14 13:15:27 2005 UTC (7 years, 10 months ago) by
glarose
Original Path:
trunk/webwork2/lib/WeBWorK/ContentGenerator/Instructor/ProblemSetDetail.pm
File length: 48413 byte(s)
Diff to
previous 3175
Preliminary commit of changes to add Gateway module.
This adds to WeBWorK
- the ability to create versioned, timed problem sets ("gateway tests")
for which all problems are displayed on a single page ("versioned"
means that students can get multiple versions of the problem set),
- the ability to create sets that draw problems from groups of
problems, and
- the ability to create sets that require a proctor login to start
and grade.
Sets can be defined as gateway tests or proctored gateway tests from
the ProblemSetDetail page.
Not quite bug-free yet. Known bugs include handling of problem values
on the Student Progress page (I think this may be a problem with
changing from sql database format where all entries were 'text' to
sql_single in ver 2.1, where they are integer), and a division by zero
error on the grades page (which may be the same problem).
Tests with a number of attempts per version greater than one haven't
been carefully tested, nor has scoring of gateway tests.
Revision
2913 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Wed Oct 13 01:55:15 2004 UTC (8 years, 7 months ago) by
sh002i
Original Path:
trunk/webwork2/lib/WeBWorK/ContentGenerator/Instructor/ProblemSetDetail.pm
File length: 44698 byte(s)
Diff to
previous 2904
optimizations in database access (makes a big difference).
My notes:
Here's the initial timing data for a set with 10 problems:
TIMING 57300 2 1097622363.881851 (16.734902) mth162: END (assumed)
$mergedRecord is never used in FieldHTML(). However, it is populated
with a merged set or problem, which requires two database calls and a
merge operation. It appears to be OK to get rid of these calls
altogether.
TIMING 57582 0 1097624803.340321 (11.219321) mth162: END (assumed)
i'm not as worried about the several DB calls in
handle_problem_numbers(), since that only happens when "Save Changes" is
clicked. not looking at those for now...
in initialize(), the global set is fetched from the database at the
beginning (and put into $setRecord). then it is fetched again in two
places, first in a conditional if the "submit_changes" param is defined,
and then in the following conditional, when "submit_changes" is defined
and there was no error. taking this out...
(those conditionals are pretty weird to begin with. i would have
expected something more like "if (submit_changes) { ... unless (error) {
... } }". probably from grafting code together?)
ok, the big one is getting pre-fetched records into FieldHTML. I added
$setRecord and $problemRecord parameters to FieldHTML (and $Set and
$Problem parameters to FieldTable to pass through to FieldHTML), and
pre-fetch GlobalProblems, UserProblems, and MergedProblems en masse
before going through the problem IDs in body().
TIMING 58456 0 1097632191.012939 (4.516615) mth162: END (assumed)
And it's only a little more than that when viewing for a particular
user:
TIMING 58453 0 1097632169.074723 (6.513201) mth162: END (assumed)
This form allows you to request diffs between any two revisions of this file.
For each of the two "sides" of the diff,
enter a numeric revision.