Skip to content

WeBWorK 2.20 Release Candidate#2721

Merged
drgrice1 merged 531 commits into
mainfrom
WeBWorK-2.20
Jul 22, 2025
Merged

WeBWorK 2.20 Release Candidate#2721
drgrice1 merged 531 commits into
mainfrom
WeBWorK-2.20

Conversation

@drgrice1

Copy link
Copy Markdown
Member

It is time for this. We have talked about just using the develop branch, but I think it is nice to have a separate branch for the release candidate. It just keeps things separate in a nice way.

So as usual, re-target pull requests for this branch that you want to get into the release, and I will handle synchronizing those to develop as they are merged.

Alex-Jordan and others added 30 commits December 17, 2024 12:35
Eliminate the visually hidden spans injected by javascript.
Recover syntax highlighting for sample problems.
Co-authored-by: Glenn Rice <47527406+drgrice1@users.noreply.github.com>
Suggestions to make using an existing user with given LMS id work.
I keep seeing this and wanting to get rid of them.  Time to do it.  None
of these work.
Currently this column is of `INT` type.  The `INT` type is a 4 bit
integer, and so a timestamp stored in this column that is after the year
2038 will not work.  A `BIGINT` is large enough for my lifetime at least
(and then another 292 billion years or so).

There is no need to update databases since the INT and BIGINT types are
compatible.  However, at some point you will need to make sure that the
type of the column in all courses is updated.  You can run the
`upgrade-database-to-utf8mb4.pl` script to do this. For example, running
`upgrade-database-to-utf8mb4.pl -c courseId` will update the past answer
table for the named course.

This fixes issue #952.
Change the `timestamp` column in the past answer table to `BIGINT`.
There is no reason to use javascript for this.  Just make the links
disabled to begin with.  Furthermore, there is no reason to use jQuery
for this.  I thought all webwork2 jQuery usage had already been removed,
but this was missed.

To test this create a JITAR set with two or more problems (or really two
or more nested sets of problems), and set "Restrict Problem Progression"
to "Yes".  Assign the set to a student user, and then log in as that
student user.  On the problem list page the latter prolems in the set
should be grayed out, and clicking on them does nothing (that already
works without javascript because these aren't even `a` tags, they are
`span` tags).  If you open the first problem, then the latter problems
in the prroblems list in the site menu should be grayed out, and
clicking on them does nothing. Currently, that uses jQuery javascript to
disable those links.  With this pull request, they are just disabled to
begin with.
Check for LMS ID first when authenticating from LMS
the active %userRoles hash. Will prevent Accounts Manager from failing.
See #2625
but when editing a user with such a value, will only allow choosing
a defined level.
The crypt function cannot handle most wide (Unicode) characters,
but does handle some by attempting to downgrade to an 8-bit string.

In order to support wide characters in passwords while not breaking
any passwords which worked before this change, a password will be
encoded into UTF-8 before being sent to crypt only when crypt dies
on the original string.
This makes it easy to generate a password hash or verify a given
password against a previously generated password hash.

Note that this uses Encode::encode (via the Mojo::Util encode method)
rather than Encode::utf8_encode.  The Encode::utf8_encode method should
not be used anymore.
adjustments to date extension achievement items
There is really no production scenario where this should be anything but
1.  If you are really serving without https, then you can change this.
And good luck dealing with your users having to click through the
warnings to get to your site.

Note that this just works if you are using `localhost` in development
also.  Browsers have a built in exception for `localhost` and consider
it secure without actual certificates.

I am tired of seeing forum issues because system administrators forget
or don't know to change this.
Change the default value of `$CookieSecure` to 1.
Add support for wide characters in passwords. (replacement of #2628)
Make JITAR disabled problems disabled without javascript.
This adds achievement items that modify the reduced scoring time period
while leaving other settings alone. These are designed for classes which
use reduced scoring and keep assignments open in the reduced scoring
period for a long time (such as the end of the course).

+ ExtendReducedDate -> Extends the reduced scoring date 24 hours.
+ SuperExtendReducedDate -> Extends the reduced scoring date 48 hours.
+ NoReducedCred -> Removes the reduced scoring flag on an assignment to
  allow full credit after the reduced scoring date.
Support for custom permission levels not in the userRoles hash (replacement of #2629)
This way the parameters can be sorted in this one instance where this is
desired.
transifex-integration Bot and others added 26 commits July 20, 2025 06:02
11% of minimum 1% translated source file: 'webwork2.pot'
on 'ko'.

Sync of partially translated files: 
untranslated content is included with an empty translation 
or source language content depending on file format
12% of minimum 1% translated source file: 'webwork2.pot'
on 'fr'.

Sync of partially translated files: 
untranslated content is included with an empty translation 
or source language content depending on file format
34% of minimum 1% translated source file: 'webwork2.pot'
on 'fr_CA'.

Sync of partially translated files: 
untranslated content is included with an empty translation 
or source language content depending on file format
42% of minimum 1% translated source file: 'webwork2.pot'
on 'el'.

Sync of partially translated files: 
untranslated content is included with an empty translation 
or source language content depending on file format
7% of minimum 1% translated source file: 'webwork2.pot'
on 'zh_CN'.

Sync of partially translated files: 
untranslated content is included with an empty translation 
or source language content depending on file format
5% of minimum 1% translated source file: 'webwork2.pot'
on 'cs_CZ'.

Sync of partially translated files: 
untranslated content is included with an empty translation 
or source language content depending on file format
52% of minimum 1% translated source file: 'webwork2.pot'
on 'he_IL'.

Sync of partially translated files: 
untranslated content is included with an empty translation 
or source language content depending on file format
10% of minimum 1% translated source file: 'webwork2.pot'
on 'es'.

Sync of partially translated files: 
untranslated content is included with an empty translation 
or source language content depending on file format
12% of minimum 1% translated source file: 'webwork2.pot'
on 'hu'.

Sync of partially translated files: 
untranslated content is included with an empty translation 
or source language content depending on file format
23% of minimum 1% translated source file: 'webwork2.pot'
on 'de'.

Sync of partially translated files: 
untranslated content is included with an empty translation 
or source language content depending on file format
6% of minimum 1% translated source file: 'webwork2.pot'
on 'zh_HK'.

Sync of partially translated files: 
untranslated content is included with an empty translation 
or source language content depending on file format
…2f0efb

Updates for file lib/WeBWorK/Localize/webwork2.pot in ru_RU [Manual Sync]
…a555ba

Updates for file lib/WeBWorK/Localize/webwork2.pot in de [Manual Sync]
…09b01c

Updates for file lib/WeBWorK/Localize/webwork2.pot in cs_CZ [Manual Sync]
…9ae7d9

Updates for file lib/WeBWorK/Localize/webwork2.pot in zh_HK [Manual Sync]
…86f39c

Updates for file lib/WeBWorK/Localize/webwork2.pot in zh_CN [Manual Sync]
…fe77ba

Updates for file lib/WeBWorK/Localize/webwork2.pot in he_IL [Manual Sync]
…225881

Updates for file lib/WeBWorK/Localize/webwork2.pot in es [Manual Sync]
…881df7

Updates for file lib/WeBWorK/Localize/webwork2.pot in hu [Manual Sync]
…ca662b

Updates for file lib/WeBWorK/Localize/webwork2.pot in fr_CA [Manual Sync]
…41b207

Updates for file lib/WeBWorK/Localize/webwork2.pot in el [Manual Sync]
…e80e68

Updates for file lib/WeBWorK/Localize/webwork2.pot in ko [Manual Sync]
…c29bdb

Updates for file lib/WeBWorK/Localize/webwork2.pot in fr [Manual Sync]
Currently if the session has expired and one of the options in the
"Format Code" tabe is used in the PG problem editor, then the message
reads `Error: can't access property "status", t.result_data is
undefined` which is not very informative. This makes it so that the
error message in the response which is `Error: Authentication failed.
Log in again to continue.`

An easy way to test this is to open a problem in the problem editor,
delete the cookie for the session in the developer tools, and then
switch to the "Format Code" tabe and click the "Format Code" button.
Fix the session expired message in the problem editor.
record/update user lis_source_did even when grade passback not in use
@drgrice1 drgrice1 merged commit 75974fd into main Jul 22, 2025
4 checks passed
@drgrice1 drgrice1 deleted the WeBWorK-2.20 branch July 22, 2025 18:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants