Motivation
You can finalize preference values in user preferences now. This may cause webs or topics to work in an manner the owner/author doesn't intend.
Description and Documentation
User preferences need to be able to be read after topic preferences instead of before web preferences.
{DemoteUserPreferences} configuration parameter will be introduced. If it's true, user level preferences variables are set at the last step of preferences variable setting rather than the 4th step.
In addition,
DENYUSERPREFERENCES and
ALLOWUSERPREFERENCES preferences variables will be introduced to restrict what user preferences are denied/allowed to be set. Those will affect user preferences regardless of
{DemoteUserPreferences}.
-
DENYUSERPREFEENCES and ALLOWUSERPREFEENCES may have comma separated list of variable names
- If a preferences variable is listed in
DENYUSERPREFEENCES, the variable cannot be overridden at the user level. There is a special value "all", which means no preferences variables can be overridden at the user level
- If
ALLOWUSERPREFEENCES is set and not empty, only the listed preferences variables can be overridden. There is a special value "all", which means any preferences variable can be overridden at the user level. But actually, "all" is not necessary since a blank value or not setting ALLOWUSERPREFEENCES has the same effect
-
DENYUSERPREFEENCES takes precedence over ALLOWUSERPREFEENCES. If a variable is listed on both, it cannot be overridden. If DENYUSERPREFEENCES is "all", the value of ALLOWUSERPREFEENCES doesn't matter.
Examples
Provided
{DemoteUserPreferences} is set true...
If you don't allow user preferences at all in a web, you put the the following line on WebPreferences.
* Set DENYUSERPREFERENCES = all
If you allow TINYMCEPLUGIN_DISABLE and SKIN to be set in user preferences:
* Set ALLOWUSERPREFERENCES = TINYMCEPLUGIN_DISABLE, SKIN
If you allow user preferences to set anything other than TINYMCEPLUGIN_DISABLE or SKIN
* Set DENYUSERPREFERENCES = TINYMCEPLUGIN_DISABLE, SKIN
You can set
DENYUSERPREFERENCES and
ALLOWUSERPREFERENCES at the site level.
In that case, those variables affect how user preferences are read even if
{DemoteUserPreferences} is false.
Impact
Introduction of
{DemoteUserPreferences} makes things more complex.
Implementation
--
Contributors:
Hideyo Imazu - 2013-08-20
Discussion
Thanks Hideyo-san for amending the spec based on the discussion we had today at the
JerusalemReleaseMeeting2013x08x29.
--
Peter Thoeny - 2013-08-30