Add control to subscriptions settings to add other users to streams

(imported from commit c013c41f288b438e7462f8024b6c1c6e817e06ee)
This commit is contained in:
Zev Benjamin 2013-01-10 13:33:56 -05:00
parent 83b2696b2f
commit 5ffc646972
3 changed files with 63 additions and 6 deletions

View File

@ -17,9 +17,18 @@
Stream color
</ul>
{{#render_subscribers}}
<span class="sub_settings_title">Subscribers</span>
<div>
<span class="sub_settings_title">Subscribers</span>
<div class="subscriber_list_add">
<form class="form-inline">
<input type="text" name="principal" placeholder="Email address" value="" class="span2" />
<input type="submit" name="add_subscriber" value="Add" class="btn btn-primary" />
</form>
</div>
</div>
<div class="subscriber_list_container">
<div class="alert alert-error hide"></div>
<div class="alert alert-warning hide"></div>
<ul>
</ul>
</div>

View File

@ -295,14 +295,52 @@ $(function () {
ajaxSubscribe($("#streams").val());
});
if (! render_subscribers()) {
return;
}
$("#subscriptions_table").on("show", ".subscription_settings", function (e) {
if (! render_subscribers()) {
return;
}
// From here down is only stuff that happens when we're rendering
// the subscriber settings
$("#subscriptions_table").on("submit", ".subscriber_list_add form", function (e) {
e.preventDefault();
var sub_row = $(e.target).closest('.subscription_row');
var stream = sub_row.find('.subscription_name').text();
var error_elem = sub_row.find('.subscriber_list_container .alert');
var text_box = sub_row.find('input[name="principal"]');
var principal = text_box.val();
// TODO: clean up this error handling
var error_elem = sub_row.find('.subscriber_list_container .alert-error');
var warning_elem = sub_row.find('.subscriber_list_container .alert-warning');
var list = sub_row.find('.subscriber_list_container ul');
$.ajax({
type: "POST",
url: "/json/subscriptions/add",
dataType: 'json',
data: {"subscriptions": JSON.stringify([stream]),
"principal": principal},
success: function (data) {
text_box.val('');
if (data.subscribed.length) {
error_elem.addClass("hide");
warning_elem.addClass("hide");
list.prepend('<li>' + principal);
} else {
error_elem.addClass("hide");
warning_elem.removeClass("hide").text("User already subscribed");
}
},
error: function (xhr) {
warning_elem.addClass("hide");
error_elem.removeClass("hide").text("Could not add user to this stream");
}
});
});
$("#subscriptions_table").on("show", ".subscription_settings", function (e) {
var sub_row = $(e.target).closest('.subscription_row');
var stream = sub_row.find('.subscription_name').text();
var error_elem = sub_row.find('.subscriber_list_container .alert-error');
var list = sub_row.find('.subscriber_list_container ul');
error_elem.addClass('hide');
list.empty();

View File

@ -615,6 +615,11 @@ table.floating_recipient {
.subscription_settings {
margin-left: 35px;
margin-right: 35px;
}
.subscription_settings form {
margin: 0;
}
.subscription_settings ul {
@ -641,6 +646,11 @@ table.floating_recipient {
.subscriber_list_container {
max-height: 200px;
overflow: auto;
margin-top: 10px;
}
.subscriber_list_add {
float: right;
}
#invite_user_form {