As mentioned... hijacking the internal functions is probably the way
to go... but - in 2.6.2 (and probably earlier versions too), there's
an alias as well. Here's what I use, to force most options to be
saved as settings, not cookies (in SystemConfig tiddler). I did have
to prime SystemConfig initially - I didn't want to flush my cached
cookies, and was too lazy to delete the tiddler specific cookie(s). If
I had thought about putting this as a first load tiddler, instead of
last load, and overridden the function that reads cookie settngs, that
would have been cleaner/more portable. But once I got it working, I
didn't think of that - until your problem was presented. Notice the
saveOption AND saveOptionCookie overrides at the end.
//# ensure that the plugin is only installed once
if(!version.extensions.ForceSettingsPlugin) {
version.extensions.ForceSettingsPlugin = { installed: true };
config.extensions.ForceSettingsPlugin = {
oldSaveOption: saveOption,
newSaveOption: function(name) {
if (name.match(/txt.*Tab$|chkSlider|chkBackstage/)) { return };
config.optionsSource[name] = 'setting';
config.extensions.ForceSettingsPlugin.oldSaveOption(name);
}
}
function saveCookie(name){ return }
saveOption = config.extensions.ForceSettingsPlugin.newSaveOption;
saveOptionCookie = saveOption;
}
//# end of "install only once"
Also, this is what I used to convert all my options from cookies to
settings, in the first place:
/*
// convert cookies to settings - needed once to mass convert
for(var key in config.options) {
config.optionsSource[key] = 'setting';
}
*/