https://bugzilla.wikimedia.org/show_bug.cgi?id=40585
Web browser: ---
Bug #: 40585
Summary: Unable to change any user preferences if existing
wpwatchlistdays value is a non-integer
Product: MediaWiki
Version: unspecified
Platform: All
OS/Version: All
Status: UNCONFIRMED
Severity: normal
Priority: Unprioritized
Component: User preferences
AssignedTo: [email protected]
ReportedBy: [email protected]
CC: [email protected]
Classification: Unclassified
Mobile Platform: ---
Special:Preferences validation on enwiki is preventing saving new or existing
preferences where the watchlist duration is a non-integer number of days.
In [[Special:Preferences#mw-prefsection-watchlist]] the wpwatchlistdays input
element has the attribute type="number", ensuring client-side validation that
the number of days is numeric.
But the step="..." attribute is not set. For type="number", W3C standards treat
a missing step as implying a step value of 1, so non-integers are
rejected.[note 1][note 2]
But wpwatchlistdays has previously permitted any positive decimal number (up to
prefs-watchlist-days-max). For example, a user could have a valid value of 0.5,
which would show changes within the previous 12 hours.
In addition to preventing new non-integer values from being set, this excessive
validation prevents the saving of ANY changes to user preferences if there is
an existing non-integer value previously saved.
Worse still, on Chrome, when the validation fails, the mw-prefsection-watchlist
tab is not activated if it is not already showing. So someone with an existing
non-integer wpwatchlistdays setting who is attempting to save unrelated changes
to a different prefsection will see no hint as to why their preferences are not
saved. (In Chrome Developer Tools, a JavaScript console message states: "An
invalid form control with name='wpwatchlistdays' is not focusable." But this is
not visible to most users.)
This bug might have arisen now as a result of client-side validation being
activated by the switch to HTML5.
I'm experiencing this using Chrome 22.0.1229.79 and a pre-existing
prefs-watchlist-days user preference of "0.25" (i.e. 6 hours).
The simplest fix would be to add an additional attribute to the input element
to override the default:
step="any"
It might also be appropriate to specify min and max attributes, but these will
be caught by server-side validation so their absence is not problematic.
[note 1]
http://dev.w3.org/html5/spec/states-of-the-type-attribute.html#number-state-(type=number)
"The default step is 1"
[note 2]
http://dev.w3.org/html5/spec/common-input-element-attributes.html#concept-input-step-default
"If the attribute is absent, then the allowed value step is the default step
multiplied by the step scale factor. Otherwise, if the attribute's value is an
ASCII case-insensitive match for the string "any", then there is no allowed
value step."
--
Configure bugmail: https://bugzilla.wikimedia.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.
You are on the CC list for the bug.
_______________________________________________
Wikibugs-l mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/wikibugs-l