mirror of
https://github.com/zulip/zulip.git
synced 2025-10-23 04:52:12 +00:00
export: Add banner if admin's private data export setting is disabled.
This commit introduces a banner on the "Start Export" modal to notify the admin that their personal setting to export private data is not toggled ON. The banner is shown when the 'Export type' is 'Standard' and admin's personal setting to export private data is not toggled ON. The banner ensures admins are aware their private data will not be exported unless they enable the respective setting.
This commit is contained in:
committed by
Tim Abbott
parent
891a35570b
commit
469cc53187
@@ -764,6 +764,9 @@ export function dispatch_normal_event(event) {
|
||||
if (event.property === "presence_enabled") {
|
||||
activity_ui.redraw_user(current_user.user_id);
|
||||
}
|
||||
if (event.property === "allow_private_data_export") {
|
||||
settings_exports.refresh_allow_private_data_export_banner();
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
|
@@ -3,12 +3,14 @@ import type * as tippy from "tippy.js";
|
||||
import {z} from "zod";
|
||||
|
||||
import render_confirm_delete_data_export from "../templates/confirm_dialog/confirm_delete_data_export.hbs";
|
||||
import render_allow_private_data_export_banner from "../templates/modal_banner/allow_private_data_export_banner.hbs";
|
||||
import render_admin_export_consent_list from "../templates/settings/admin_export_consent_list.hbs";
|
||||
import render_admin_export_list from "../templates/settings/admin_export_list.hbs";
|
||||
import render_start_export_modal from "../templates/start_export_modal.hbs";
|
||||
|
||||
import * as channel from "./channel.ts";
|
||||
import * as components from "./components.ts";
|
||||
import * as compose_banner from "./compose_banner.ts";
|
||||
import * as confirm_dialog from "./confirm_dialog.ts";
|
||||
import * as dialog_widget from "./dialog_widget.ts";
|
||||
import * as dropdown_widget from "./dropdown_widget.ts";
|
||||
@@ -23,6 +25,7 @@ import * as settings_config from "./settings_config.ts";
|
||||
import * as timerender from "./timerender.ts";
|
||||
import type {HTMLSelectOneElement} from "./types.ts";
|
||||
import * as ui_report from "./ui_report.ts";
|
||||
import {user_settings} from "./user_settings.ts";
|
||||
|
||||
export const export_consent_schema = z.object({
|
||||
user_id: z.number(),
|
||||
@@ -257,6 +260,32 @@ export function populate_export_consents_table(): void {
|
||||
filter_by_consent_dropdown_widget.setup();
|
||||
}
|
||||
|
||||
function maybe_show_allow_private_data_export_banner(): void {
|
||||
if (!user_settings.allow_private_data_export) {
|
||||
const context = {
|
||||
banner_type: compose_banner.WARNING,
|
||||
classname: "allow_private_data_export_warning",
|
||||
hide_close_button: true,
|
||||
};
|
||||
$("#allow_private_data_export_banner_container").html(
|
||||
render_allow_private_data_export_banner(context),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
export function refresh_allow_private_data_export_banner(): void {
|
||||
if (user_settings.allow_private_data_export) {
|
||||
$(".allow_private_data_export_warning").remove();
|
||||
} else if ($("#allow_private_data_export_banner_container").length > 0) {
|
||||
maybe_show_allow_private_data_export_banner();
|
||||
const $export_type = $<HTMLSelectOneElement>("select:not([multiple])#export_type");
|
||||
const selected_export_type = Number.parseInt($export_type.val()!, 10);
|
||||
if (selected_export_type === settings_config.export_type_values.export_public.value) {
|
||||
$(".allow_private_data_export_warning").hide();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function show_start_export_modal(): void {
|
||||
const html_body = render_start_export_modal({
|
||||
export_type_values: settings_config.export_type_values,
|
||||
@@ -300,6 +329,9 @@ function show_start_export_modal(): void {
|
||||
{users_consented_for_export_count, total_users_count},
|
||||
),
|
||||
);
|
||||
|
||||
maybe_show_allow_private_data_export_banner();
|
||||
|
||||
const $export_type = $<HTMLSelectOneElement>("select:not([multiple])#export_type");
|
||||
$export_type.on("change", () => {
|
||||
const selected_export_type = Number.parseInt($export_type.val()!, 10);
|
||||
@@ -308,8 +340,10 @@ function show_start_export_modal(): void {
|
||||
settings_config.export_type_values.export_full_with_consent.value
|
||||
) {
|
||||
$("#allow_private_data_export_stats").show();
|
||||
$(".allow_private_data_export_warning").show();
|
||||
} else {
|
||||
$("#allow_private_data_export_stats").hide();
|
||||
$(".allow_private_data_export_warning").hide();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@@ -0,0 +1,8 @@
|
||||
{{#> modal_banner . }}
|
||||
<p class="banner_message">
|
||||
{{#tr}}
|
||||
Do you want to <z-link>allow your private data to be exported</z-link>?
|
||||
{{#*inline "z-link"}}<a href="#settings/account-and-privacy">{{> @partial-block}}</a>{{/inline}}
|
||||
{{/tr}}
|
||||
</p>
|
||||
{{/modal_banner}}
|
@@ -1,3 +1,4 @@
|
||||
<p id="allow_private_data_export_banner_container"></p>
|
||||
<p>
|
||||
{{#tr}}
|
||||
A public data export is a complete data export for your organization other than
|
||||
|
@@ -1208,6 +1208,12 @@ run_test("user_settings", ({override}) => {
|
||||
dispatch(event);
|
||||
assert.equal($("#automatically_offer_update_time_zone").prop("checked"), false);
|
||||
}
|
||||
|
||||
event = event_fixtures.user_settings__allow_private_data_export;
|
||||
override(user_settings, "allow_private_data_export", false);
|
||||
override(settings_exports, "refresh_allow_private_data_export_banner", noop);
|
||||
dispatch(event);
|
||||
assert_same(user_settings.allow_private_data_export, true);
|
||||
});
|
||||
|
||||
run_test("update_message (read)", ({override}) => {
|
||||
|
@@ -883,6 +883,13 @@ exports.fixtures = {
|
||||
},
|
||||
},
|
||||
|
||||
user_settings__allow_private_data_export: {
|
||||
type: "user_settings",
|
||||
op: "update",
|
||||
property: "allow_private_data_export",
|
||||
value: true,
|
||||
},
|
||||
|
||||
user_settings__color_scheme_automatic: {
|
||||
type: "user_settings",
|
||||
op: "update",
|
||||
|
Reference in New Issue
Block a user