mirror of
https://github.com/zulip/zulip.git
synced 2025-10-31 20:13:46 +00:00
This extends `do_settings_change` function for parameters like `success` and `error` functions which will replace the default ones, for functions that need to be excuted in success callbacks and for desired success message. All these parameters are optional.
90 lines
3.0 KiB
JavaScript
90 lines
3.0 KiB
JavaScript
var settings_ui = (function () {
|
|
|
|
var exports = {};
|
|
|
|
exports.display_checkmark = function ($elem) {
|
|
var check_mark = document.createElement("img");
|
|
check_mark.src = "/static/images/checkbox-green.svg";
|
|
$elem.prepend(check_mark);
|
|
$(check_mark).css("width", "13px");
|
|
};
|
|
|
|
exports.strings = {};
|
|
function _initialize() {
|
|
exports.strings = {
|
|
success: i18n.t("Saved"),
|
|
failure: i18n.t("Save failed"),
|
|
saving: i18n.t("Saving"),
|
|
};
|
|
}
|
|
|
|
exports.initialize = function () {
|
|
i18n.ensure_i18n(_initialize);
|
|
};
|
|
|
|
// Generic function for informing users about changes to the settings
|
|
// UI. Intended to replace the old system that was built around
|
|
// direct calls to `ui_report`.
|
|
exports.do_settings_change = function (url, data, status_element, opts) {
|
|
var success;
|
|
var success_msg;
|
|
var success_continuation;
|
|
var error;
|
|
var spinner = $(status_element).expectOne();
|
|
if (opts !== undefined) {
|
|
success = opts.success;
|
|
success_msg = opts.success_msg;
|
|
success_continuation = opts.success_continuation;
|
|
error = opts.error;
|
|
}
|
|
if (success_msg === undefined) {
|
|
success_msg = exports.strings.success;
|
|
}
|
|
if (success === undefined) {
|
|
loading.make_indicator(spinner, {text: exports.strings.saving});
|
|
success = function (reponse_data) {
|
|
ui_report.success(success_msg, $(status_element).expectOne());
|
|
settings_ui.display_checkmark(spinner);
|
|
if (success_continuation !== undefined) {
|
|
success_continuation(reponse_data);
|
|
}
|
|
};
|
|
}
|
|
if (error === undefined) {
|
|
error = function (xhr) {
|
|
ui_report.error(exports.strings.failure, xhr, $(status_element).expectOne());
|
|
};
|
|
}
|
|
|
|
channel.patch({
|
|
url: url,
|
|
data: data,
|
|
success: success,
|
|
error: error,
|
|
});
|
|
};
|
|
|
|
// This function is used to disable sub-setting when main setting is checked or unchecked
|
|
// or two settings are inter-dependent on their values values.
|
|
// * is_checked is boolean, shows if the main setting is checked or not.
|
|
// * sub_setting_id is sub setting or setting which depend on main setting,
|
|
// string id of setting.
|
|
// * disable_on_uncheck is boolean, true if sub setting should be disabled
|
|
// when main setting unchecked.
|
|
exports.disable_sub_setting_onchange = function (is_checked, sub_setting_id, disable_on_uncheck) {
|
|
if ((is_checked && disable_on_uncheck) || (!is_checked && !disable_on_uncheck)) {
|
|
$("#" + sub_setting_id).attr("disabled", false);
|
|
$("#" + sub_setting_id + "_label").parent().removeClass("control-label-disabled");
|
|
} else if ((is_checked && !disable_on_uncheck) || (!is_checked && disable_on_uncheck)) {
|
|
$("#" + sub_setting_id).attr("disabled", "disabled");
|
|
$("#" + sub_setting_id + "_label").parent().addClass("control-label-disabled");
|
|
}
|
|
};
|
|
|
|
return exports;
|
|
}());
|
|
|
|
if (typeof module !== 'undefined') {
|
|
module.exports = settings_ui;
|
|
}
|