mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-04 05:53:43 +00:00 
			
		
		
		
	If you toggle between Settings and Organization now, it will remember where you were the last time (not counting reload). Likewise if you go in and out of settings. The old code always put you in the first section, which I think was an accident of implementation. Of course, we'll continue to default to the first row if you haven't gone anywhere else.
		
			
				
	
	
		
			94 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			94 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
var settings_panel_menu = (function () {
 | 
						|
 | 
						|
var exports = {};
 | 
						|
 | 
						|
exports.make_menu = function (opts) {
 | 
						|
    var main_elem = opts.main_elem;
 | 
						|
    var hash_prefix = opts.hash_prefix;
 | 
						|
    var load_section = opts.load_section;
 | 
						|
    var curr_li = main_elem.children('li').eq(0);
 | 
						|
 | 
						|
    var self = {};
 | 
						|
 | 
						|
    self.show = function () {
 | 
						|
        main_elem.show();
 | 
						|
        self.activate_section({
 | 
						|
            li_elem: curr_li,
 | 
						|
        });
 | 
						|
    };
 | 
						|
 | 
						|
    self.hide = function () {
 | 
						|
        main_elem.hide();
 | 
						|
    };
 | 
						|
 | 
						|
    self.current_tab = function () {
 | 
						|
        return curr_li.data('section');
 | 
						|
    };
 | 
						|
 | 
						|
    self.activate_section = function (opts) {
 | 
						|
        var li_elem = opts.li_elem;
 | 
						|
        var section = li_elem.data('section');
 | 
						|
 | 
						|
        curr_li = li_elem;
 | 
						|
 | 
						|
        main_elem.children("li").removeClass("active no-border");
 | 
						|
        li_elem.addClass("active");
 | 
						|
        li_elem.prev().addClass("no-border");
 | 
						|
        window.location.hash = hash_prefix + section;
 | 
						|
 | 
						|
        $(".settings-section, .settings-wrapper").removeClass("show");
 | 
						|
 | 
						|
        ui.update_scrollbar($("#settings_content"));
 | 
						|
 | 
						|
        load_section(section);
 | 
						|
 | 
						|
        var sel = "[data-name='" + section + "']";
 | 
						|
        $(".settings-section" + sel + ", .settings-wrapper" + sel).addClass("show");
 | 
						|
    };
 | 
						|
 | 
						|
    main_elem.on("click", "li[data-section]", function (e) {
 | 
						|
        self.activate_section({
 | 
						|
            li_elem: $(this),
 | 
						|
        });
 | 
						|
 | 
						|
        e.stopPropagation();
 | 
						|
    });
 | 
						|
 | 
						|
    return self;
 | 
						|
};
 | 
						|
 | 
						|
exports.initialize = function () {
 | 
						|
    exports.normal_settings = exports.make_menu({
 | 
						|
        main_elem: $('.normal-settings-list'),
 | 
						|
        hash_prefix: "settings/",
 | 
						|
        load_section: function (section) {
 | 
						|
            settings_sections.load_settings_section(section);
 | 
						|
        },
 | 
						|
    });
 | 
						|
    exports.org_settings = exports.make_menu({
 | 
						|
        main_elem: $('.org-settings-list'),
 | 
						|
        hash_prefix: "organization/",
 | 
						|
        load_section: function (section) {
 | 
						|
            admin_sections.load_admin_section(section);
 | 
						|
        },
 | 
						|
    });
 | 
						|
};
 | 
						|
 | 
						|
exports.show_normal_settings = function () {
 | 
						|
    exports.org_settings.hide();
 | 
						|
    exports.normal_settings.show();
 | 
						|
};
 | 
						|
 | 
						|
exports.show_org_settings = function () {
 | 
						|
    exports.normal_settings.hide();
 | 
						|
    exports.org_settings.show();
 | 
						|
};
 | 
						|
 | 
						|
return exports;
 | 
						|
 | 
						|
}());
 | 
						|
 | 
						|
if (typeof module !== 'undefined') {
 | 
						|
    module.exports = settings_panel_menu;
 | 
						|
}
 |