Skip to content

UTF8 issue with permissions saved to simple.conf #1077

@taniwallach

Description

@taniwallach

There is an issue with the code of the permission editor / the code which writes to simple.conf which is triggered when changing between languages.

(The issue was mentioned in #948 (comment) on Aug 24, 2019 but was not a reason to hold back on the WW 2.15 release.)

The problem is not fully diagnosed, but under certain circumstances the value save for $permissionLevels{type} is being set using the foreign language value rather than the English value, which breaks the behavior.

A sample procedure to trigger the issue is as follows:

  1. Set simple.conf in some course to be the contents of the file provided at the bottom of the issue.
    • Maybe use a different value of the language (which has translated names of the permission levels) instead of Hebrew so you can follow the steps below with more ease.
    • However, Hebrew definitely triggers the problem.
  2. Use the menu to open the course configuration page - two lines above the ?-mark icon in the menu. (Hebrew phrase is תצורת הקורס, in the current PO file)
  3. Change the language setting from "heb" to "en_us".
  4. Click the save button on the bottom of the page.
  5. Example the value of $permissionLevels{change_password} in the saved simple.conf. It will show (based on my tests) the value מרצה which is the Hebrew term for professor in use.
  6. Use the left menu to change to a different part of the system and them back to the configuration page. That will get the language change to take effect.
  7. Now open the "Permissions" tab again. It will show the value guest as the value מרצה from the file cannot be read in.

Note: When the permissions are edited and saved while using a foreign language, and the language setting is not changes, the values saved in simple.conf are the proper English names of the relevant permission levels. The problem is apparently only triggered when a save is occurring which changes from a foreign language back to English


Note: In the pull-down lists, the <option> items have a value which is the standard English name of the permission levels, but the text shown for the options is the translated phrase. When the permissions page is saved in a foreign language - the form values sent are the English values from the value field.


The probably cause is a call to maketext which is not needed or some value already saved as the "translated" value rather than the English value.


A prior issue with related code is at: #798 (comment)


The sample simple.conf used to trigger the issue

#!perl
# This file is automatically generated by WeBWorK's web-based
# configuration module.  Do not make changes directly to this
# file.  It will be overwritten the next time configuration
# changes are saved.

$language = 'heb';
$permissionLevels{change_password} = 'professor';

The value of simple.conf after step 5:

#!perl
# This file is automatically generated by WeBWorK's web-based
# configuration module.  Do not make changes directly to this
# file.  It will be overwritten the next time configuration
# changes are saved.

$language = 'en_us';
$hardcopyTheme = 'oneColumn';
$permissionLevels{change_password} = 'מרצה';

Metadata

Metadata

Assignees

Labels

MultilingualPart of the Multilingual (localization) project

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions