ajax: MDL-17084 provide a way for JavaScript to update user preferences.

This commit is contained in:
tjhunt
2008-10-31 08:25:19 +00:00
parent bc0b96fc2d
commit bd1884fe6b
5 changed files with 114 additions and 1 deletions
+35
View File
@@ -553,4 +553,39 @@ emoticons_help = {
}
emoticons_help.inputarea.focus();
}
}
/**
* Makes a best effort to connect back to Moodle to update a user preference,
* however, there is no mechanism for finding out if the update succeeded.
*
* Before you can use this function in your JavsScript, you must have called
* user_preference_allow_ajax_update from moodlelib.php to tell Moodle that
* the udpate is allowed, and how to safely clean and submitted values.
*
* @param String name the name of the setting to udpate.
* @param String the value to set it to.
*/
function set_user_preference(name, value) {
// Don't generate a script error if the library has not been loaded,
// unless we are a Developer, in which case we want the error.
if (YAHOO && YAHOO.util && YAHOO.util.Connect || moodle_cfg.developerdebug) {
var url = moodle_cfg.wwwroot + '/lib/ajax/setuserpref.php?sesskey=' +
moodle_cfg.sesskey + '&pref=' + encodeURI(name) + '&value=' + encodeURI(value);
// If we are a developer, ensure that failures are reported.
var callback = {};
if (moodle_cfg.developerdebug) {
callback.failure = function() {
var a = document.createElement('a');
a.href = url;
a.classname = 'error';
a.appendChild(document.createTextNode("Error updating user preference '" + name + "' using ajax. Clicking this link will repeat the Ajax call that failed so you can see the error."));
document.body.insertBefore(a, document.body.firstChild);
}
}
// Make the request.
YAHOO.util.Connect.asyncRequest('GET', url, callback);
}
}