mirror of
https://github.com/zulip/zulip.git
synced 2025-11-04 22:13:26 +00:00
Due to copyright issues with potentially displaying Apple emojisets on non-apple devices, as well as iamcal dropping support for the emojione emojiset (see https://github.com/iamcal/emoji-data/pull/142), we are dropping (perhaps temporarily) support for allowing users to switch emojisets in Zulip. This commit just hides the feature from the user but leaves most of the infrastructure in place so that in the future if we decide to re-enable the support we will not need to redo the infrastructure work (some JS-side code is deleted, mostly because we'll want to re-add the feature using the do_settings_change infrastructure anyway). The most likely emoji set to add is the legacy "blobs" Google emoji set, since it seems popular with some users. Tweaked by tabbott to remove some additional JS code and update the changelog.
181 lines
6.5 KiB
JavaScript
181 lines
6.5 KiB
JavaScript
var settings = (function () {
|
|
|
|
var exports = {};
|
|
var header_map = {
|
|
"your-account": i18n.t("Your account"),
|
|
"display-settings": i18n.t("Display settings"),
|
|
notifications: i18n.t("Notifications"),
|
|
"your-bots": i18n.t("Your bots"),
|
|
"alert-words": i18n.t("Alert words"),
|
|
"uploaded-files": i18n.t("Uploaded files"),
|
|
"muted-topics": i18n.t("Muted topics"),
|
|
"organization-profile": i18n.t("Organization profile"),
|
|
"organization-settings": i18n.t("Organization settings"),
|
|
"organization-permissions": i18n.t("Organization permissions"),
|
|
"emoji-settings": i18n.t("Emoji settings"),
|
|
"auth-methods": i18n.t("Authorization methods"),
|
|
"user-list-admin": i18n.t("Active users"),
|
|
"deactivated-users-admin": i18n.t("Deactivated users"),
|
|
"bot-list-admin": i18n.t("Bot list"),
|
|
"default-streams-list": i18n.t("Default streams"),
|
|
"filter-settings": i18n.t("Filter settings"),
|
|
"invites-list-admin": i18n.t("Invitations"),
|
|
"user-groups-admin": i18n.t("User groups"),
|
|
"profile-field-settings": i18n.t("Profile field settings"),
|
|
};
|
|
|
|
$("body").ready(function () {
|
|
var $sidebar = $(".form-sidebar");
|
|
var $targets = $sidebar.find("[data-target]");
|
|
var $title = $sidebar.find(".title h1");
|
|
var is_open = false;
|
|
|
|
var close_sidebar = function () {
|
|
$sidebar.removeClass("show");
|
|
$sidebar.find("#edit_bot").empty();
|
|
is_open = false;
|
|
};
|
|
|
|
exports.trigger_sidebar = function (target) {
|
|
$targets.hide();
|
|
var $target = $(".form-sidebar").find("[data-target='" + target + "']");
|
|
|
|
$title.text($target.attr("data-title"));
|
|
$target.show();
|
|
|
|
$sidebar.addClass("show");
|
|
is_open = true;
|
|
};
|
|
|
|
$(".form-sidebar .exit").click(function (e) {
|
|
close_sidebar();
|
|
e.stopPropagation();
|
|
});
|
|
|
|
$("body").click(function (e) {
|
|
if (is_open && !$(e.target).within(".form-sidebar")) {
|
|
close_sidebar();
|
|
}
|
|
});
|
|
|
|
$("body").on("click", "[data-sidebar-form]", function (e) {
|
|
exports.trigger_sidebar($(this).attr("data-sidebar-form"));
|
|
e.stopPropagation();
|
|
});
|
|
|
|
$("body").on("click", "[data-sidebar-form-close]", close_sidebar);
|
|
|
|
$("#settings_overlay_container").click(function (e) {
|
|
if (!overlays.is_modal_open()) {
|
|
return;
|
|
}
|
|
if ($(e.target).closest(".modal").length > 0) {
|
|
return;
|
|
}
|
|
e.preventDefault();
|
|
e.stopPropagation();
|
|
// Whenever opening a modal(over settings overlay) in an event handler
|
|
// attached to a click event, make sure to stop the propagation of the
|
|
// event to the parent container otherwise the modal will not open. This
|
|
// is so because this event handler will get fired on any click in settings
|
|
// overlay and subsequently close any open modal.
|
|
overlays.close_active_modal();
|
|
});
|
|
});
|
|
|
|
function setup_settings_label() {
|
|
exports.settings_label = {
|
|
// settings_notification
|
|
// stream_notification_settings
|
|
enable_stream_desktop_notifications: i18n.t("Visual desktop notifications"),
|
|
enable_stream_sounds: i18n.t("Audible desktop notifications"),
|
|
enable_stream_push_notifications: i18n.t("Mobile notifications"),
|
|
enable_stream_email_notifications: i18n.t("Email notifications"),
|
|
|
|
// pm_mention_notification_settings
|
|
enable_desktop_notifications: i18n.t("Visual desktop notifications"),
|
|
enable_offline_email_notifications: i18n.t("Email notifications when offline"),
|
|
enable_offline_push_notifications: i18n.t("Mobile notifications when offline"),
|
|
enable_online_push_notifications: i18n.t("Mobile notifications always (even when online)"),
|
|
enable_sounds: i18n.t("Audible desktop notifications"),
|
|
pm_content_in_desktop_notifications: i18n.t("Include content of private messages"),
|
|
|
|
// other_notification_settings
|
|
enable_digest_emails: i18n.t("Send digest emails when I'm away"),
|
|
message_content_in_email_notifications: i18n.t("Include message content in missed message emails"),
|
|
realm_name_in_notifications: i18n.t("Include organization name in subject of missed message emails"),
|
|
|
|
// display settings
|
|
dense_mode: i18n.t("Dense mode"),
|
|
high_contrast_mode: i18n.t("High contrast mode"),
|
|
left_side_userlist: i18n.t("User list on left sidebar in narrow windows"),
|
|
night_mode: i18n.t("Night mode"),
|
|
twenty_four_hour_time: i18n.t("24-hour time (17:00 instead of 5:00 PM)"),
|
|
translate_emoji_to_text: i18n.t("Translate emoji to text (Convert 😃 to <code>:smile:</code>)"),
|
|
translate_emoticons: i18n.t("Translate emoticons (convert <code>:)</code> to 😃 in messages)"),
|
|
};
|
|
}
|
|
|
|
exports.setup_page = function () {
|
|
ui.set_up_scrollbar($("#settings_page .sidebar.left"));
|
|
ui.set_up_scrollbar($("#settings_content"));
|
|
|
|
var tab = (function () {
|
|
var tab = false;
|
|
var hash_sequence = window.location.hash.split(/\//);
|
|
if (/#*(settings)/.test(hash_sequence[0])) {
|
|
tab = hash_sequence[1];
|
|
return tab || settings_panel_menu.normal_settings.current_tab();
|
|
}
|
|
return tab;
|
|
}());
|
|
|
|
setup_settings_label();
|
|
|
|
var rendered_settings_tab = templates.render('settings_tab', {
|
|
full_name: people.my_full_name(),
|
|
page_params: page_params,
|
|
zuliprc: 'zuliprc',
|
|
botserverrc: 'botserverrc',
|
|
timezones: moment.tz.names(),
|
|
can_create_new_bots: settings_bots.can_create_new_bots(),
|
|
settings_label: settings.settings_label,
|
|
});
|
|
|
|
$(".settings-box").html(rendered_settings_tab);
|
|
|
|
// Since we just swapped in a whole new settings widget, we need to
|
|
// tell settings_sections nothing is loaded.
|
|
settings_sections.reset_sections();
|
|
|
|
if (tab) {
|
|
exports.launch_page(tab);
|
|
settings_toggle.highlight_toggle('settings');
|
|
}
|
|
};
|
|
|
|
exports.launch_page = function (tab) {
|
|
var $active_tab = $("#settings_overlay_container li[data-section='" + tab + "']");
|
|
|
|
overlays.open_settings();
|
|
|
|
$active_tab.click();
|
|
};
|
|
|
|
exports.set_settings_header = function (key) {
|
|
if (header_map[key]) {
|
|
$(".settings-header h1 .section").text(" / " + header_map[key]);
|
|
} else {
|
|
blueslip.warn("Error: the key '" + key + "' does not exist in the settings" +
|
|
" header mapping file. Please add it.");
|
|
}
|
|
};
|
|
|
|
return exports;
|
|
}());
|
|
|
|
if (typeof module !== 'undefined') {
|
|
module.exports = settings;
|
|
}
|
|
window.settings = settings;
|