ajax: MDL-17084 provide a way for JavaScript to update user preferences.
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user