From: Tom Hughes Date: Wed, 30 May 2018 14:30:23 +0000 (+0100) Subject: Avoid using inline javascript to update message list X-Git-Tag: live~2973 X-Git-Url: https://git.openstreetmap.org/rails.git/commitdiff_plain/4a6779abf78fed3e4be88a859ca5909b88348f89 Avoid using inline javascript to update message list --- diff --git a/app/assets/javascripts/messages.js b/app/assets/javascripts/messages.js new file mode 100644 index 000000000..0cae79a58 --- /dev/null +++ b/app/assets/javascripts/messages.js @@ -0,0 +1,30 @@ +$(document).ready(function () { + $(".inbox-mark-unread").on("ajax:success", function (event, data) { + $("#inboxanchor").remove(); + $(".user-button").before(data.inboxanchor); + + $("#inbox-count").replaceWith(data.inbox_count); + + $(this).parents(".inbox-row").removeClass("inbox-row").addClass("inbox-row-unread"); + }); + + $(".inbox-mark-read").on("ajax:success", function (event, data) { + $("#inboxanchor").remove(); + $(".user-button").before(data.inboxanchor); + + $("#inbox-count").replaceWith(data.inbox_count); + + $(this).parents(".inbox-row-unread").removeClass("inbox-row-unread").addClass("inbox-row"); + }); + + $(".inbox-destroy").on("ajax:success", function (event, data) { + $("#inboxanchor").remove(); + $(".user-button").before(data.inboxanchor); + + $("#inbox-count").replaceWith(data.inbox_count); + + $(this).parents(".inbox-row, .inbox-row-unread").fadeOut(800, "linear", function () { + $(this).remove(); + }); + }); +}); diff --git a/app/views/messages/_sent_message_summary.html.erb b/app/views/messages/_sent_message_summary.html.erb index 5a64ea8db..a9346fb5e 100644 --- a/app/views/messages/_sent_message_summary.html.erb +++ b/app/views/messages/_sent_message_summary.html.erb @@ -2,5 +2,5 @@ <%= link_to h(sent_message_summary.recipient.display_name), user_path(sent_message_summary.recipient) %> <%= link_to h(sent_message_summary.title), message_path(sent_message_summary) %> <%= l sent_message_summary.sent_on, :format => :friendly %> - <%= button_to t('.destroy_button'), destroy_message_path(sent_message_summary, :referer => request.fullpath) %> + <%= button_to t('.destroy_button'), destroy_message_path(sent_message_summary, :referer => request.fullpath), { :remote => true } %> diff --git a/app/views/messages/destroy.js.erb b/app/views/messages/destroy.js.erb deleted file mode 100644 index 86677ab4a..000000000 --- a/app/views/messages/destroy.js.erb +++ /dev/null @@ -1,5 +0,0 @@ -$("#inboxanchor").replaceWith("<%=j render :partial => "layouts/inbox" %>"); -$("#inbox-count").replaceWith("<%=j render :partial => "message_count" %>"); -$("#inbox-<%= @message.id %>").fadeOut(800, "linear", function () { - $(this).remove(); -}); diff --git a/app/views/messages/destroy.json.jsonify b/app/views/messages/destroy.json.jsonify new file mode 100644 index 000000000..3403ac888 --- /dev/null +++ b/app/views/messages/destroy.json.jsonify @@ -0,0 +1,2 @@ +json.inboxanchor render(:partial => "layouts/inbox") +json.inbox_count render(:partial => "message_count") diff --git a/app/views/messages/inbox.html.erb b/app/views/messages/inbox.html.erb index 56ed53c6d..b51815b4c 100644 --- a/app/views/messages/inbox.html.erb +++ b/app/views/messages/inbox.html.erb @@ -1,3 +1,7 @@ +<% content_for :head do %> + <%= javascript_include_tag "messages" %> +<% end %> + <% content_for :heading do %>

<%= t '.my_inbox'%>/<%= link_to t('.outbox'), outbox_path(current_user.display_name) %>

<% end %> diff --git a/app/views/messages/mark.js.erb b/app/views/messages/mark.js.erb deleted file mode 100644 index d67e74ace..000000000 --- a/app/views/messages/mark.js.erb +++ /dev/null @@ -1,7 +0,0 @@ -$("#inboxanchor").replaceWith("<%=j render :partial => "layouts/inbox" %>"); -$("#inbox-count").replaceWith("<%=j render :partial => "message_count" %>"); -<% if @message.message_read? -%> -$("#inbox-<%= @message.id %>").removeClass("inbox-row-unread").addClass("inbox-row"); -<% else -%> -$("#inbox-<%= @message.id %>").removeClass("inbox-row").addClass("inbox-row-unread"); -<% end -%> diff --git a/app/views/messages/mark.json.jsonify b/app/views/messages/mark.json.jsonify new file mode 100644 index 000000000..3403ac888 --- /dev/null +++ b/app/views/messages/mark.json.jsonify @@ -0,0 +1,2 @@ +json.inboxanchor render(:partial => "layouts/inbox") +json.inbox_count render(:partial => "message_count") diff --git a/app/views/messages/outbox.html.erb b/app/views/messages/outbox.html.erb index 38639cd99..c9688de51 100644 --- a/app/views/messages/outbox.html.erb +++ b/app/views/messages/outbox.html.erb @@ -1,3 +1,7 @@ +<% content_for :head do %> + <%= javascript_include_tag "messages" %> +<% end %> + <% content_for :heading do %>

<%= raw(t '.my_inbox', :inbox_link => link_to(t('.inbox'), inbox_path(current_user.display_name))) %>/<%= t'.outbox' %>

<% end %> diff --git a/config/initializers/assets.rb b/config/initializers/assets.rb index 5d908041f..161097530 100644 --- a/config/initializers/assets.rb +++ b/config/initializers/assets.rb @@ -12,7 +12,7 @@ Rails.application.config.assets.paths << Rails.root.join("config") # Precompile additional assets. # application.js, application.css, and all non-JS/CSS in app/assets folder are already added. Rails.application.config.assets.precompile += %w[index.js browse.js welcome.js fixthemap.js] -Rails.application.config.assets.precompile += %w[user.js login.js diary_entry.js edit/*.js] +Rails.application.config.assets.precompile += %w[user.js login.js diary_entry.js messages.js edit/*.js] Rails.application.config.assets.precompile += %w[screen-ltr.css print-ltr.css] Rails.application.config.assets.precompile += %w[screen-rtl.css print-rtl.css] Rails.application.config.assets.precompile += %w[leaflet-all.css leaflet.ie.css]