mirror of https://github.com/zulip/zulip.git
277 lines
16 KiB
Handlebars
277 lines
16 KiB
Handlebars
<div class="row-fluid">
|
||
<div class="span12">
|
||
<div class="administration">
|
||
<div class="alert" id="administration-status"></div>
|
||
<h1><i class="icon-vector-bolt administration-icon"></i>{{t "Administration" }}</h1>
|
||
<ul class="nav nav-tabs" role="tablist">
|
||
<li role="presentation" class="active">
|
||
<a href="#organization" aria-controls="organization" role="tab" data-toggle="tab"><i class="icon-vector-gear settings-section-icon"></i> {{t "Organization settings" }}</a>
|
||
</li>
|
||
<li role="presentation">
|
||
<a href="#users" aria-controls="users" role="tab" data-toggle="tab"><i class="icon-vector-user settings-section-icon"></i> {{t "Users" }}</a>
|
||
</li>
|
||
<li role="presentation">
|
||
<a href="#deactivated-users" aria-controls="deactivated-users" role="tab" data-toggle="tab"><i class="icon-vector-trash settings-section-icon"></i> {{t "Deactivated Users" }}</a>
|
||
</li>
|
||
<li role="presentation">
|
||
<a href="#bots" aria-controls="bots" role="tab" data-toggle="tab"><i class="icon-vector-github settings-section-icon"></i> {{t "Bots" }}</a>
|
||
</li>
|
||
<li role="presentation">
|
||
<a href="#streams" aria-controls="streams" role="tab" data-toggle="tab"><i class="icon-vector-exchange settings-section-icon"></i> {{t "Streams Deletion" }}</a>
|
||
</li>
|
||
<li role="presentation">
|
||
<a href="#default-streams" aria-controls="default-streams" role="tab" data-toggle="tab"><i class="icon-vector-exchange settings-section-icon"></i> {{t "Default Streams" }}</a>
|
||
</li>
|
||
</ul>
|
||
<div class="tab-content">
|
||
<div role="tabpanel" class="tab-pane active" id="organization">
|
||
<div id="organization-settings" class="settings-section">
|
||
<div class="settings-section-title"><i class="icon-vector-gear settings-section-icon"></i>
|
||
{{t "Organization settings" }}</div>
|
||
<form class="form-horizontal admin-realm-form">
|
||
<div class="control-group admin-realm">
|
||
<div class="alert" id="admin-realm-name-status"></div>
|
||
<div class="alert" id="admin-realm-restricted-to-domain-status"></div>
|
||
<div class="alert" id="admin-realm-invite-required-status"></div>
|
||
<div class="alert" id="admin-realm-invite-by-admins-only-status"></div>
|
||
<div class="alert" id="admin-realm-create-stream-by-admins-only-status"></div>
|
||
<div class="alert" id="admin-realm-message-editing-status"></div>
|
||
<label for="realm_name" class="control-label">{{t "Your organization's name" }}</label>
|
||
<div class="controls">
|
||
<input type="text" id="id_realm_name" name="realm_name" class="admin-realm-name"
|
||
value="{{ realm_name }}" />
|
||
</div>
|
||
</div>
|
||
<div class="control-group">
|
||
<label for="realm_restricted_to_domain"
|
||
title="{{#tr this}}If checked, only users with an @__domain__ e-mail address will be able to join the organization.{{/tr}}"
|
||
class="control-label">
|
||
{{#tr this}}Users restricted to __domain__{{/tr}}
|
||
</label>
|
||
<div class="controls">
|
||
<input type="checkbox" id="id_realm_restricted_to_domain" name="realm_restricted_to_domain"
|
||
{{#if realm_restricted_to_domain}}checked="checked"{{/if}} />
|
||
</div>
|
||
</div>
|
||
<div class="control-group">
|
||
<label for="realm_invite_required"
|
||
title="{{t 'If checked, users must be invited in order to join your organization.' }}"
|
||
class="control-label">
|
||
{{t "E-mail invitation required" }}
|
||
</label>
|
||
<div class="controls">
|
||
<input type="checkbox" id="id_realm_invite_required" name="realm_invite_required"
|
||
{{#if realm_invite_required}}checked="checked"{{/if}} />
|
||
</div>
|
||
</div>
|
||
<div class="control-group">
|
||
<label for="realm_invite_by_admins_only"
|
||
id="id_realm_invite_by_admins_only_label"
|
||
title="{{t 'If checked, only administrators may invite new users.' }}"
|
||
class="control-label{{#unless realm_invite_required}} control-label-disabled{{/unless}}">
|
||
{{t "Only admins may invite" }}
|
||
</label>
|
||
<div class="controls">
|
||
<input type="checkbox" id="id_realm_invite_by_admins_only" name="realm_invite_by_admins_only"
|
||
{{#unless realm_invite_required}}disabled="disabled"{{/unless}}
|
||
{{#if realm_invite_by_admins_only}}checked="checked"{{/if}} />
|
||
</div>
|
||
</div>
|
||
<div class="control-group">
|
||
<label for="realm_create_stream_by_admins_only"
|
||
id="id_realm_create_stream_by_admins_only_label"
|
||
title="{{t 'If checked, only administrators may create new streams.'}}"
|
||
class="control-label">
|
||
{{t "Only admins may create streams" }}
|
||
</label>
|
||
<div class="controls">
|
||
<input type="checkbox" id="id_realm_create_stream_by_admins_only"
|
||
name="realm_create_stream_by_admins_only"
|
||
{{#if realm_create_stream_by_admins_only}}checked="checked"{{/if}} />
|
||
</div>
|
||
</div>
|
||
<div class="control-group">
|
||
<label for="realm_allow_message_editing"
|
||
title="{{t 'If checked, users can edit the content and topics of their old messages.' }}"
|
||
class="control-label">
|
||
{{t "Users can edit old messages" }}
|
||
</label>
|
||
<div class="controls">
|
||
<input type="checkbox" id="id_realm_allow_message_editing" name="realm_allow_message_editing"
|
||
{{#if realm_allow_message_editing}}checked="checked"{{/if}} />
|
||
</div>
|
||
</div>
|
||
<div class="control-group">
|
||
<label for="realm_message_content_edit_limit_minutes"
|
||
id="id_realm_message_content_edit_limit_minutes_label"
|
||
title="{{t 'If non-zero, users can edit their message for this many minutes after it is sent. If zero, users can edit all their past messages.' }}"
|
||
class="control-label{{#unless realm_allow_message_editing}} control-label-disabled{{/unless}}">
|
||
{{t 'Message edit limit in minutes (0 for no limit)' }}
|
||
</label>
|
||
<div class="controls">
|
||
<input type="text" id="id_realm_message_content_edit_limit_minutes"
|
||
name="realm_message_content_edit_limit_minutes"
|
||
class="admin-realm-message-content-edit-limit-minutes"
|
||
value="{{ realm_message_content_edit_limit_minutes }}"
|
||
{{#unless realm_allow_message_editing}}disabled="disabled"{{/unless}} />
|
||
</div>
|
||
</div>
|
||
<div class="controls organization-submission">
|
||
<input type="submit" class="btn btn-big btn-primary" value="{{t 'Save changes' }}" />
|
||
</div>
|
||
</form>
|
||
</div>
|
||
<div id="emoji-settings" class="settings-section">
|
||
<div class="settings-section-title"><i class="icon-vector-smile settings-section-icon"></i>
|
||
{{t "Custom emoji" }}</div>
|
||
<div class="admin-table-wrapper">
|
||
<p>{{#tr this}}Add extra emoji for members of the __realm_name__ organization.{{/tr}}</p>
|
||
<table class="table table-condensed table-striped admin_emoji_table">
|
||
<tbody id="admin_emoji_table">
|
||
<th>{{t "Name" }}</th>
|
||
<th class="image">{{t "Image" }}</th>
|
||
<th class="actions">{{t "Actions" }}</th>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
<form class="form-horizontal admin-emoji-form">
|
||
<div class="add-new-emoji-box">
|
||
<div class="new-emoji-form">
|
||
<div class="settings-section-title new-emoji-section-title">{{t "Add a New Emoji" }}</div>
|
||
<div class="alert" id="admin-emoji-status"></div>
|
||
<div class="control-group">
|
||
<label for="emoji_name" class="control-label">{{t "Emoji name" }}</label>
|
||
<input type="text" name="name" id="emoji_name" placeholder="{{t 'mouse_face' }}" />
|
||
<div class="alert" id="admin-emoji-name-status"></div>
|
||
</div>
|
||
<div class="control-group">
|
||
<label for="emoji_url" class="control-label">{{t "Emoji URL" }}</label>
|
||
<input type="text" name="url" id="emoji_url" placeholder="http://emojipedia-us.s3.amazonaws.com/cache/46/7f/467fe69069c408e07517621f263ea9b5.png" />
|
||
<div class="alert" id="admin-emoji-url-status"></div>
|
||
</div>
|
||
<div class="control-group">
|
||
<div class="controls">
|
||
<input type="submit" class="btn btn-big btn-primary" value="{{t 'Add emoji' }}" />
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</form>
|
||
</div>
|
||
</div>
|
||
<div role="tabpanel" class="tab-pane" id="users">
|
||
<div id="admin-user-list" class="settings-section">
|
||
<div class="settings-section-title"><i class="icon-vector-user settings-section-icon"></i>
|
||
{{t "Users" }}</div>
|
||
<table class="table table-condensed table-striped">
|
||
<tbody id="admin_users_table" class="admin_user_table">
|
||
<th>{{t "Name" }}</th>
|
||
<th>{{t "Email" }}</th>
|
||
<th>{{t "Actions" }}</th>
|
||
</tbody>
|
||
</table>
|
||
<div id="admin_page_users_loading_indicator"></div>
|
||
</div>
|
||
</div>
|
||
<div role="tabpanel" class="tab-pane" id="deactivated-users">
|
||
<div id="admin-deactivated-users-list" class="settings-section">
|
||
<div class="settings-section-title"><i class="icon-vector-trash settings-section-icon"></i>
|
||
{{t "Deactivated Users" }}</div>
|
||
<table class="table table-condensed table-striped">
|
||
<tbody id="admin_deactivated_users_table" class="admin_user_table">
|
||
<th>{{t "Name" }}</th>
|
||
<th>{{t "Email" }}</th>
|
||
<th>{{t "Actions" }}</th>
|
||
</tbody>
|
||
</table>
|
||
<div id="admin_page_deactivated_users_loading_indicator"></div>
|
||
</div>
|
||
</div>
|
||
<div role="tabpanel" class="tab-pane" id="bots">
|
||
<div id="admin-user-list" class="settings-section">
|
||
<div class="settings-section-title"><i class="icon-vector-github settings-section-icon"></i>
|
||
{{t "Bots" }}</div>
|
||
<table class="table table-condensed table-striped">
|
||
<tbody id="admin_bots_table" class="admin_bot_table">
|
||
<th>{{t "Name" }}</th>
|
||
<th>{{t "Email" }}</th>
|
||
<th>{{t "Owner" }}</th>
|
||
<th>{{t "Actions" }}</th>
|
||
</tbody>
|
||
</table>
|
||
<div id="admin_page_bots_loading_indicator"></div>
|
||
</div>
|
||
</div>
|
||
<div role="tabpanel" class="tab-pane" id="streams">
|
||
<div id="admin-streams-list" class="settings-section">
|
||
<div class="settings-section-title"><i class="icon-vector-exchange settings-section-icon"></i>
|
||
{{t "Streams Deletion" }}</div>
|
||
<p class="admin-streams-note">Most stream administration is done on the <a href="/#subscriptions">subscriptions page</a>.</p>
|
||
|
||
<table class="table table-condensed table-striped">
|
||
<tbody id="admin_streams_table" class="admin_stream_table">
|
||
<th>{{t "Name" }}</th>
|
||
<th>{{t "Actions" }}</th>
|
||
</tbody>
|
||
</table>
|
||
<div id="admin_page_streams_loading_indicator"></div>
|
||
</div>
|
||
</div>
|
||
<div role="tabpanel" class="tab-pane" id="default-streams">
|
||
<div id="admin-default-streams-list" class="settings-section">
|
||
<div class="settings-section-title"><i class="icon-vector-exchange settings-section-icon"></i>
|
||
{{t "Default Streams"}}</div>
|
||
<div class="admin-table-wrapper">
|
||
<p>{{#tr this}}Configure the default streams new users are subscribed to when joining the {{domain}} organization.{{/tr}}</p>
|
||
<table class="table table-condensed table-striped">
|
||
<tbody id="admin_default_streams_table" class="admin_default_stream_table">
|
||
<th>{{t "Name" }}</th>
|
||
<th class="actions">{{t "Actions" }}</th>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
<div id="admin_page_default_streams_loading_indicator"></div>
|
||
<form class="form-horizontal default-stream-form">
|
||
<div class="add-new-default-stream-box">
|
||
<div class="new-default-stream-section-title">{{t "Add New Default Stream" }}</div>
|
||
<div class="control-group" id="default_stream_inputs">
|
||
<label for="default_stream_name" class="control-label">{{t "Stream Name" }}</label>
|
||
<input class="create_default_stream" type="text" placeholder="{{t "Stream Name" }}" name="stream_name" autocomplete="off"></input>
|
||
</div>
|
||
</div>
|
||
</form>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="deactivation_user_modal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="deactivation_user_modal_label" aria-hidden="true">
|
||
<div class="modal-header">
|
||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
||
<h3 id="deactivation_user_modal_label">{{t "Deactivate" }} <span class="email"></span></h3>
|
||
</div>
|
||
<div class="modal-body">
|
||
<p>{{#tr this}}By deactivating <strong><span class="user_name"></span></strong> <<span class="email"></span>>, they will be logged out immediately.{{/tr}}</p>
|
||
<p>{{t "Their password will be cleared from our systems, and any bots they maintain will be disabled." }}</p>
|
||
</div>
|
||
<div class="modal-footer">
|
||
<button class="btn btn-default" data-dismiss="modal" aria-hidden="true">{{t "Cancel" }}</button>
|
||
<button class="btn btn-danger" id="do_deactivate_user_button">{{t "Deactivate now" }}</button>
|
||
</div>
|
||
</div>
|
||
<div id="deactivation_stream_modal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="deactivation_stream_modal_label" aria-hidden="true">
|
||
<div class="modal-header">
|
||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
||
<h3 id="deactivation_stream_modal_label">{{t "Delete stream" }} <span class="stream_name"></span></h3>
|
||
</div>
|
||
<div class="modal-body">
|
||
<p>{{t "Deleting this stream will immediately unsubscribe everyone, and the stream's content will not be recoverable." }} <strong>{{t "Are you sure you want to do this?" }}</strong></p>
|
||
</div>
|
||
<div class="modal-footer">
|
||
<button class="btn btn-default" data-dismiss="modal" aria-hidden="true">{{t "Cancel" }}</button>
|
||
<button class="btn btn-danger" id="do_deactivate_stream_button">{{t "Yes, delete this stream" }}</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|