{= # # preferences # include "templates.util.base_util"; include "templates.util.rbac.rbac_util"; debug_message("\n\n#### save_data.cfv (Preferences) \n"); string session_id = volatile.session_id; bool is_root_admin = get_is_root_admin(); string page_token = v.fp.page_token; # # Check RBAC permissions # if ((is_root_admin or get_admin_feature_permission(session_id, "preferences", "edit")) and get_is_valid_page_token(session_id, "preferences", page_token)) then ( debug_message("\n" . node_as_string("v.fp") . "\n"); # remove page_token node delete_node("v.fp.page_token"); # Check if the language changed and let client know to reload in this case. bool language_changed = if (@("preferences.miscellaneous.language") eq @("v.fp.miscellaneous.language")) then (false) else (true); node group; node item; node preferences_group_node; string item_name; string item_value; # Reset "preferences.login_plugins" before saving the new values delete_node("preferences.login_plugins"); "preferences.login_plugins" = ""; foreach group "v.fp" ( preferences_group_node = "preferences." . node_name(group); foreach item group ( item_name = node_name(item); item_value = @item; # Encrypt passwords if ((item_name eq "smtp_password" or item_name eq "ldap_administrator_password") and item_value ne "") then ( item_value = format(item_value, "!encrypt"); ); set_subnode_value(preferences_group_node, item_name, item_value); ); ); save_node("preferences"); # # Response # "savePreferencesResponse(" . language_changed . ")\n"; ) else ( # No permission to access this resource (URL) display_no_permission_html(); ); =}