mirror of
https://github.com/zulip/zulip.git
synced 2025-11-02 13:03:29 +00:00
stream settings: Deduplicate template rendering.
This commit is contained in:
committed by
Tim Abbott
parent
30821dbcbb
commit
1b9c1a7898
@@ -3,6 +3,7 @@ zrequire('templates');
|
||||
zrequire('settings_notifications');
|
||||
|
||||
set_global('i18n', global.stub_i18n);
|
||||
zrequire('stream_edit');
|
||||
|
||||
const { JSDOM } = require("jsdom");
|
||||
const { window } = new JSDOM();
|
||||
@@ -1267,7 +1268,10 @@ run_test('subscription_settings', () => {
|
||||
};
|
||||
|
||||
var html = '';
|
||||
html += render('subscription_settings', sub);
|
||||
html += render('subscription_settings', {
|
||||
sub: sub,
|
||||
settings: stream_edit.stream_settings(sub),
|
||||
});
|
||||
|
||||
var div = $(html).find(".subscription-type");
|
||||
assert(div.text().indexOf('private stream') > 0);
|
||||
|
||||
@@ -222,12 +222,52 @@ function show_subscription_settings(sub_row) {
|
||||
});
|
||||
}
|
||||
|
||||
exports.is_notification_setting = function (setting_label) {
|
||||
if (setting_label.indexOf("_notifications") > -1) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
var settings_labels = {
|
||||
is_muted: i18n.t("Mute stream"),
|
||||
desktop_notifications: i18n.t("Visual desktop notifications"),
|
||||
audible_notifications: i18n.t("Audible desktop notifications"),
|
||||
push_notifications: i18n.t("Mobile notifications"),
|
||||
email_notifications: i18n.t("Email notifications"),
|
||||
pin_to_top: i18n.t("Pin stream to top of left sidebar"),
|
||||
};
|
||||
|
||||
exports.stream_settings = function (sub) {
|
||||
var settings = [];
|
||||
_.each(Object.keys(settings_labels), function (setting) {
|
||||
if (exports.is_notification_setting(setting)) {
|
||||
settings.push({
|
||||
name: setting,
|
||||
label: settings_labels[setting],
|
||||
value: sub[setting + "_display"],
|
||||
is_notification_setting: true,
|
||||
});
|
||||
} else {
|
||||
settings.push({
|
||||
name: setting,
|
||||
label: settings_labels[setting],
|
||||
value: sub[setting],
|
||||
});
|
||||
}
|
||||
});
|
||||
return settings;
|
||||
};
|
||||
|
||||
exports.show_settings_for = function (node) {
|
||||
var stream_id = get_stream_id(node);
|
||||
var sub = stream_data.get_sub_by_id(stream_id);
|
||||
|
||||
stream_data.update_calculated_fields(sub);
|
||||
var html = templates.render('subscription_settings', sub);
|
||||
var html = templates.render('subscription_settings', {
|
||||
sub: sub,
|
||||
settings: exports.stream_settings(sub),
|
||||
});
|
||||
ui.get_content_element($('.subscriptions .right .settings')).html(html);
|
||||
|
||||
var sub_settings = exports.settings_for_sub(sub);
|
||||
|
||||
7
static/templates/stream-settings-checkbox.handlebars
Normal file
7
static/templates/stream-settings-checkbox.handlebars
Normal file
@@ -0,0 +1,7 @@
|
||||
<div id="{{prefix}}{{setting_name}}{{suffix}}" class="sub_setting_checkbox {{#if notification_setting}}sub_notification_setting {{#if is_muted}}muted-sub{{/if}}{{/if}}">
|
||||
<input id="{{setting_name}}_{{stream_id}}" name="{{setting_name}}" class="sub_setting_control" type="checkbox" tabindex="-1" {{#if is_checked}}checked{{/if}} {{#if_and is_muted notification_setting}}disabled="disabled"{{/if_and}}/>
|
||||
<label class="subscription-control-label">{{label}}</label>
|
||||
{{#if_equal setting_name "is_muted"}}
|
||||
<p class="mute-note {{#unless is_muted}}hide-mute-note{{/unless}}">{{t "Muted streams don't show up in \"All messages\" or generate notifications unless you are mentioned." }}</p>
|
||||
{{/if_equal}}
|
||||
</div>
|
||||
@@ -1,7 +1,7 @@
|
||||
{{#with this}}
|
||||
<div class="subscription_settings" data-stream-id="{{stream_id}}">
|
||||
<div class="subscription_settings" data-stream-id="{{sub.stream_id}}">
|
||||
<div class="inner-box">
|
||||
<div class="alert stream_change_property_info"></div>
|
||||
{{#with sub}}
|
||||
<div class="stream-header">
|
||||
{{#if invite_only}}
|
||||
<div class="large-icon lock" style="color: {{color}}">
|
||||
@@ -45,68 +45,42 @@
|
||||
</div>
|
||||
<a class="change-stream-privacy" {{#unless can_change_stream_permissions}}style="display: none;"{{/unless}}>[{{t "Change" }}]</a>
|
||||
</div>
|
||||
<div class="regular_subscription_settings collapse {{#subscribed}}in{{/subscribed}}">
|
||||
{{/with}}
|
||||
<div class="regular_subscription_settings collapse {{#sub.subscribed}}in{{/sub.subscribed}}">
|
||||
<div class="subscription-config">
|
||||
<ul class="grey-box">
|
||||
{{#each settings}}
|
||||
<li>
|
||||
<div id="sub_is_muted_setting" class="sub_setting_checkbox sub-mute-setting">
|
||||
<input id="is_muted_{{stream_id}}" name="is_muted" class="sub_setting_control" type="checkbox" tabindex="-1" {{#if is_muted}}checked{{/if}} />
|
||||
<label class="subscription-control-label">{{t "Mute stream" }}</label>
|
||||
<p class="mute-note {{#unless is_muted}}hide-mute-note{{/unless}}">{{t "Muted streams don't show up in \"All messages\" or generate notifications unless you are mentioned." }}</p>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div id="sub_desktop_notifications_setting"
|
||||
class="sub_setting_checkbox sub_notification_setting {{#if is_muted}}muted-sub{{/if}}">
|
||||
<input id="desktop_notifications_{{stream_id}}" name="desktop_notifications" class="sub_setting_control" type="checkbox" tabindex="-1" {{#if desktop_notifications_display}}checked{{/if}} {{#if is_muted}}disabled="disabled"{{/if}}/>
|
||||
<label class="subscription-control-label">{{t "Visual desktop notifications" }}</label>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div id="sub_audible_notifications_setting"
|
||||
class="sub_setting_checkbox sub_notification_setting {{#if is_muted}}muted-sub{{/if}}">
|
||||
<input id="audible_notifications_{{stream_id}}" name="audible_notifications" class="sub_setting_control" type="checkbox" tabindex="-1" {{#if audible_notifications_display}}checked{{/if}} {{#if is_muted}}disabled="disabled"{{/if}}/>
|
||||
<label class="subscription-control-label">{{t "Audible desktop notifications" }}</label>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div id="sub_push_notifications_setting"
|
||||
class="sub_setting_checkbox sub_notification_setting {{#if is_muted}}muted-sub{{/if}}">
|
||||
<input id="push_notifications_{{stream_id}}" name="push_notifications" class="sub_setting_control" type="checkbox" tabindex="-1" {{#if push_notifications_display}}checked{{/if}} {{#if is_muted}}disabled="disabled"{{/if}}/>
|
||||
<label class="subscription-control-label">{{t "Mobile notifications" }}</label>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div id="sub_email_notifications_setting"
|
||||
class="sub_setting_checkbox sub_notification_setting {{#if is_muted}}muted-sub{{/if}}">
|
||||
<input id="email_notifications_{{stream_id}}" name="email_notifications" class="sub_setting_control" type="checkbox" tabindex="-1" {{#if email_notifications_display}}checked{{/if}} {{#if is_muted}}disabled="disabled"{{/if}}/>
|
||||
<label class="subscription-control-label">{{t "Email notifications" }}</label>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div id="sub_pin_to_top_setting" class="sub_setting_checkbox">
|
||||
<input id="pin_to_top_{{stream_id}}" name="pin_to_top" class="sub_setting_control" type="checkbox" tabindex="-1" {{#if pin_to_top}}checked{{/if}} />
|
||||
<label class="subscription-control-label">{{t "Pin stream to top of left sidebar" }}</label>
|
||||
</div>
|
||||
{{partial "stream-settings-checkbox"
|
||||
"setting_name" name
|
||||
"prefix" "sub_"
|
||||
"suffix" "_setting"
|
||||
"is_checked" value
|
||||
"is_muted" (lookup ../sub "is_muted")
|
||||
"stream_id" (lookup ../sub "stream_id")
|
||||
"notification_setting" is_notification_setting
|
||||
"label" label}}
|
||||
</li>
|
||||
{{/each}}
|
||||
<li>
|
||||
<label for="streamcolor" class="subscription-control-label">{{t "Stream color" }}</label>
|
||||
<span class="sub_setting_control">
|
||||
<input stream_id="{{stream_id}}" class="colorpicker" id="streamcolor" type="text" value="{{color}}" tabindex="-1" />
|
||||
<input stream_id="{{sub.stream_id}}" class="colorpicker" id="streamcolor" type="text" value="{{sub.color}}" tabindex="-1" />
|
||||
</span>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="stream-email-box" {{#unless email_address}}style="display: none;"{{/unless}}>
|
||||
<div class="stream-email-box" {{#unless sub.email_address}}style="display: none;"{{/unless}}>
|
||||
<div class="sub_settings_title">{{t "Email address" }} <i class="fa fa-question-circle stream-email-hint" aria-hidden="true"></i></div>
|
||||
<div class="stream-email">
|
||||
<span class="email-address">{{email_address}}</span>
|
||||
<span class="email-address">{{sub.email_address}}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{#with sub}}
|
||||
<div class="subscription-members-setting">
|
||||
{{partial "subscription_members"}}
|
||||
</div>
|
||||
{{/with}}
|
||||
</div>
|
||||
</div>
|
||||
{{/with}}
|
||||
|
||||
Reference in New Issue
Block a user