From 14b471a29f1736d60e73177d3dff9b609b89c8b8 Mon Sep 17 00:00:00 2001 From: Brock Whittaker Date: Fri, 16 Dec 2016 18:53:12 -0800 Subject: [PATCH] Stream Name to Content Editable. This changes the stream name component to be content editable. --- static/js/click_handlers.js | 13 +++-- static/js/subs.js | 54 ++++++++++--------- .../subscription_settings.handlebars | 12 ++--- 3 files changed, 41 insertions(+), 38 deletions(-) diff --git a/static/js/click_handlers.js b/static/js/click_handlers.js index 33a82de911..0db9a354ee 100644 --- a/static/js/click_handlers.js +++ b/static/js/click_handlers.js @@ -423,9 +423,8 @@ $(function () { (function () { var map = { - ".stream-description-editable": function (e) { - subs.change_stream_description(e); - }, + ".stream-description-editable": subs.change_stream_description, + ".stream-name-editable": subs.change_stream_name }; $(document).on("keydown", ".editable-section", function (e) { @@ -461,9 +460,13 @@ $(function () { edit_area.text(edit_area.attr("data-prev-text")); $(this).html(""); } else { - $(edit_area).attr("data-prev-text", edit_area.text().trim()); $("[data-finish-editing='" + selector + "']").show(); - edit_area.attr("contenteditable", true).focus().select(); + + edit_area.attr("data-prev-text", edit_area.text().trim()) + .attr("contenteditable", true); + + place_caret_at_end(edit_area[0]); + $(this).html("×"); } }); diff --git a/static/js/subs.js b/static/js/subs.js index 10db1b0926..b647874093 100644 --- a/static/js/subs.js +++ b/static/js/subs.js @@ -198,7 +198,7 @@ function update_stream_name(stream_id, new_name) { // Update the stream settings var sub_settings = settings_for_sub(stream_data.get_sub_by_id(stream_id)); sub_settings.find(".email-address").text(sub.email_address); - sub_settings.find(".stream-name").text(new_name); + sub_settings.find(".stream-name-editable").text(new_name); // Update the subscriptions page var sub_row = $(".stream-row[data-stream-id='" + sub.stream_id + "']"); @@ -690,7 +690,7 @@ exports.update_subscription_properties = function (stream_name, property, value) update_stream_name(sub.stream_id, value); break; case 'description': - exports.update_stream_description(sub, value); + update_stream_description(sub, value); break; case 'email_address': sub.email_address = value; @@ -875,6 +875,32 @@ exports.change_stream_description = function (e) { }); }; +exports.change_stream_name = function (e) { + e.preventDefault(); + var sub_settings = $(e.target).closest('.subscription_settings'); + var stream_id = $(e.target).closest(".subscription_settings").attr("data-stream-id"); + var sub = stream_data.get_sub_by_id(stream_id); + var new_name_box = sub_settings.find('.stream-name-editable'); + var new_name = $.trim(new_name_box.text()); + + $("#subscriptions-status").hide(); + + channel.patch({ + // Stream names might contain unsafe characters so we must encode it first. + url: "/json/streams/" + stream_id, + data: {new_name: JSON.stringify(new_name)}, + success: function () { + new_name_box.val(''); + ui.report_success(i18n.t("The stream has been renamed!"), $("#subscriptions-status "), + 'subscriptions-status'); + }, + error: function (xhr) { + ui.report_error(i18n.t("Error renaming stream"), xhr, + $("#subscriptions-status"), 'subscriptions-status'); + } + }); +}; + $(function () { stream_data.initialize_from_page_params(); @@ -1253,30 +1279,6 @@ $(function () { removal_failure); }); - $("#subscriptions_table").on("submit", ".rename-stream form", function (e) { - e.preventDefault(); - var sub_settings = $(e.target).closest('.subscription_settings'); - var stream_id = $(e.target).closest(".subscription_settings").attr("data-stream-id"); - var new_name_box = sub_settings.find('input[name="new-name"]'); - var new_name = $.trim(new_name_box.val()); - - $("#subscriptions-status").hide(); - - channel.patch({ - url: "/json/streams/" + stream_id, - data: {new_name: JSON.stringify(new_name)}, - success: function () { - new_name_box.val(''); - ui.report_success(i18n.t("The stream has been renamed!"), $("#subscriptions-status "), - 'subscriptions-status'); - }, - error: function (xhr) { - ui.report_error(i18n.t("Error renaming stream"), xhr, - $("#subscriptions-status"), 'subscriptions-status'); - }, - }); - }); - function redraw_privacy_related_stuff(sub_row, sub) { var stream_settings = settings_for_sub(sub); var html; diff --git a/static/templates/subscription_settings.handlebars b/static/templates/subscription_settings.handlebars index cba3df757d..2bcbaa4df4 100644 --- a/static/templates/subscription_settings.handlebars +++ b/static/templates/subscription_settings.handlebars @@ -10,7 +10,11 @@
{{/if}}
- {{name}} + {{name}} + {{#if is_admin}} + + + {{/if}}
@@ -77,12 +81,6 @@ {{#if is_admin}}
{{t "Administrator settings" }}
-
-
- - -
-
{{partial "change_stream_privacy"}}