From: Tom Hughes Date: Fri, 26 Feb 2010 16:35:36 +0000 (+0000) Subject: Ajaxify the mark read/unread function for messages so it doesn't X-Git-Tag: live~6324^2~8 X-Git-Url: https://git.openstreetmap.org/rails.git/commitdiff_plain/3851a672e25fd5a29c14b7501404e9a608d67aaa?ds=sidebyside Ajaxify the mark read/unread function for messages so it doesn't reload the whole page each time. --- diff --git a/app/controllers/message_controller.rb b/app/controllers/message_controller.rb index 73abc68cc..435c3fa78 100644 --- a/app/controllers/message_controller.rb +++ b/app/controllers/message_controller.rb @@ -100,8 +100,15 @@ class MessageController < ApplicationController end message.message_read = message_read if message.save - flash[:notice] = notice - redirect_to :controller => 'message', :action => 'inbox', :display_name => @user.display_name + if request.xhr? + render :update do |page| + page.replace "inbox-count", :partial => "message_count" + page.replace "inbox-#{message.id}", :partial => "message_summary", :object => message + end + else + flash[:notice] = notice + redirect_to :controller => 'message', :action => 'inbox', :display_name => @user.display_name + end end end rescue ActiveRecord::RecordNotFound diff --git a/app/views/message/_message_count.html.erb b/app/views/message/_message_count.html.erb new file mode 100644 index 000000000..27b0aa644 --- /dev/null +++ b/app/views/message/_message_count.html.erb @@ -0,0 +1 @@ +

<%= t'message.inbox.you_have', :new_count => @user.new_messages.size, :old_count => (@user.messages.size - @user.new_messages.size) %>

diff --git a/app/views/message/_message_summary.html.erb b/app/views/message/_message_summary.html.erb index 3d9976aab..d4d4f788b 100644 --- a/app/views/message/_message_summary.html.erb +++ b/app/views/message/_message_summary.html.erb @@ -1,13 +1,13 @@ <% this_colour = cycle('lightgrey', 'white') %> -"> +"> <%= link_to h(message_summary.sender.display_name), :controller => 'user', :action => message_summary.sender.display_name %> <%= link_to h(message_summary.title), :controller => 'message', :action => 'read', :message_id => message_summary.id %> <%= l message_summary.sent_on %> <% if message_summary.message_read? %> - <%= button_to t('message.message_summary.unread_button'), :controller => 'message', :action => 'mark', :message_id => message_summary.id, :mark => 'unread' %> + <%= button_to t('message.message_summary.unread_button'), {:controller => 'message', :action => 'mark', :message_id => message_summary.id, :mark => 'unread'}, { :onclick => remote_function(:url => {:controller => 'message', :action => 'mark', :message_id => message_summary.id, :mark => 'unread'}) + "; return false;" } %> <% else %> - <%= button_to t('message.message_summary.read_button'), :controller => 'message', :action => 'mark', :message_id => message_summary.id, :mark => 'read' %> + <%= button_to t('message.message_summary.read_button'), {:controller => 'message', :action => 'mark', :message_id => message_summary.id, :mark => 'read'}, { :onclick => remote_function(:url => {:controller => 'message', :action => 'mark', :message_id => message_summary.id, :mark => 'read'}) + "; return false;" } %> <% end %> <%= button_to t('message.message_summary.reply_button'), :controller => 'message', :action => 'reply', :message_id => message_summary.id %> <%= button_to t('message.message_summary.delete_button'), :controller => 'message', :action => 'delete', :message_id => message_summary.id, :referer => request.request_uri %> diff --git a/app/views/message/inbox.html.erb b/app/views/message/inbox.html.erb index 2a97b7bbd..897fb24ad 100644 --- a/app/views/message/inbox.html.erb +++ b/app/views/message/inbox.html.erb @@ -1,6 +1,6 @@

<%= t'message.inbox.my_inbox'%>/<%= link_to t('message.inbox.outbox'), url_for(:controller => "user", :action => "outbox", :id => @user.display_name) %>

-

<%= t'message.inbox.you_have', :new_count => @user.new_messages.size, :old_count => (@user.messages.size - @user.new_messages.size) %>

+<%= render :partial => "message_count" %> <% if @user.messages.size > 0 %>