mirror of
				https://github.com/zulip/zulip.git
				synced 2025-10-31 20:13:46 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			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 (request_method, 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());
 | |
|         };
 | |
|     }
 | |
| 
 | |
|     request_method({
 | |
|         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;
 | |
| }
 |