Commit 1e0dca799b847ac3bdaac3c70ae9107fe658e542
Exists in
master
and in
29 other branches
Merge commit 'refs/merge-requests/234' of git://gitorious.org/noosfero/noosfero …
…into merge-requests/234
Showing
10 changed files
with
60 additions
and
13 deletions
Show diff stats
app/controllers/public/profile_controller.rb
| @@ -212,9 +212,9 @@ class ProfileController < PublicController | @@ -212,9 +212,9 @@ class ProfileController < PublicController | ||
| 212 | begin | 212 | begin |
| 213 | scrap = current_user.person.scraps(params[:scrap_id]) | 213 | scrap = current_user.person.scraps(params[:scrap_id]) |
| 214 | scrap.destroy | 214 | scrap.destroy |
| 215 | - render :text => _('Scrap successfully removed.') | 215 | + finish_successful_removal 'Scrap successfully removed.' |
| 216 | rescue | 216 | rescue |
| 217 | - render :text => _('You could not remove this scrap') | 217 | + finish_unsuccessful_removal 'You could not remove this scrap.' |
| 218 | end | 218 | end |
| 219 | end | 219 | end |
| 220 | 220 | ||
| @@ -227,9 +227,9 @@ class ProfileController < PublicController | @@ -227,9 +227,9 @@ class ProfileController < PublicController | ||
| 227 | else | 227 | else |
| 228 | activity.destroy | 228 | activity.destroy |
| 229 | end | 229 | end |
| 230 | - render :text => _('Activity successfully removed.') | 230 | + finish_successful_removal 'Activity successfully removed.' |
| 231 | rescue | 231 | rescue |
| 232 | - render :text => _('You could not remove this activity') | 232 | + finish_unsuccessful_removal 'You could not remove this activity.' |
| 233 | end | 233 | end |
| 234 | end | 234 | end |
| 235 | 235 | ||
| @@ -244,6 +244,24 @@ class ProfileController < PublicController | @@ -244,6 +244,24 @@ class ProfileController < PublicController | ||
| 244 | end | 244 | end |
| 245 | end | 245 | end |
| 246 | 246 | ||
| 247 | + def finish_successful_removal(msg) | ||
| 248 | + if request.xhr? | ||
| 249 | + render :text => {'ok' => true}.to_json, :content_type => 'application/json' | ||
| 250 | + else | ||
| 251 | + session[:notice] = _(msg) | ||
| 252 | + redirect_to :action => :index | ||
| 253 | + end | ||
| 254 | + end | ||
| 255 | + | ||
| 256 | + def finish_unsuccessful_removal(msg) | ||
| 257 | + session[:notice] = _(msg) | ||
| 258 | + if request.xhr? | ||
| 259 | + render :text => {'redirect' => url_for(:action => :index)}.to_json, :content_type => 'application/json' | ||
| 260 | + else | ||
| 261 | + redirect_to :action => :index | ||
| 262 | + end | ||
| 263 | + end | ||
| 264 | + | ||
| 247 | def profile_info | 265 | def profile_info |
| 248 | begin | 266 | begin |
| 249 | @block = profile.blocks.find(params[:block_id]) | 267 | @block = profile.blocks.find(params[:block_id]) |
| @@ -303,9 +321,10 @@ class ProfileController < PublicController | @@ -303,9 +321,10 @@ class ProfileController < PublicController | ||
| 303 | @comment = Comment.find(params[:comment_id]) | 321 | @comment = Comment.find(params[:comment_id]) |
| 304 | if (user == @comment.author || user == profile || user.has_permission?(:moderate_comments, profile)) | 322 | if (user == @comment.author || user == profile || user.has_permission?(:moderate_comments, profile)) |
| 305 | @comment.destroy | 323 | @comment.destroy |
| 306 | - session[:notice] = _('Comment successfully deleted') | 324 | + finish_successful_removal 'Comment successfully removed.' |
| 325 | + else | ||
| 326 | + finish_unsuccessful_removal 'You could not remove this comment.' | ||
| 307 | end | 327 | end |
| 308 | - redirect_to :action => :index | ||
| 309 | end | 328 | end |
| 310 | 329 | ||
| 311 | protected | 330 | protected |
app/views/profile/_comment.rhtml
| @@ -46,7 +46,7 @@ | @@ -46,7 +46,7 @@ | ||
| 46 | 46 | ||
| 47 | <% if logged_in? && (user == profile || user == comment.author || user.has_permission?(:moderate_comments, profile)) %> | 47 | <% if logged_in? && (user == profile || user == comment.author || user.has_permission?(:moderate_comments, profile)) %> |
| 48 | <% button_bar(:style => 'float: right; margin-top: 0px;') do %> | 48 | <% button_bar(:style => 'float: right; margin-top: 0px;') do %> |
| 49 | - <%= icon_button(:delete, _('Remove'), { :action => :remove_comment, :comment_id => comment.id }, :method => :get, :confirm => _('Are you sure you want to remove this comment and all its replies?')) %> | 49 | + <%= link_to_function(_('Remove'), 'remove_item_wall(this, %s, %s, %s); return false ;' % ["'.article-comment'", url_for(:profile => params[:profile], :action => :remove_comment, :comment_id => comment.id, :view => params[:view]).to_json, _('Are you sure you want to remove this comment and all its replies?').to_json], :class => 'button icon-button icon-delete') %> |
| 50 | <% end %> | 50 | <% end %> |
| 51 | <% end %> | 51 | <% end %> |
| 52 | <br style="clear: both;" /> | 52 | <br style="clear: both;" /> |
app/views/profile/_create_article.rhtml
| @@ -15,7 +15,7 @@ | @@ -15,7 +15,7 @@ | ||
| 15 | <p class='profile-activity-time'><%= time_ago_as_sentence(activity.created_at) %></p> | 15 | <p class='profile-activity-time'><%= time_ago_as_sentence(activity.created_at) %></p> |
| 16 | <div class='profile-wall-actions'> | 16 | <div class='profile-wall-actions'> |
| 17 | <%= link_to s_('profile|Comment'), '#', { :class => 'focus-on-comment'} %> | 17 | <%= link_to s_('profile|Comment'), '#', { :class => 'focus-on-comment'} %> |
| 18 | - <%= link_to_remote(content_tag(:span, _('Remove')), :url =>{:action => 'remove_activity', :activity_id => activity.id, :only_hide => true}, :confirm => _('Are you sure?'), :update => "profile-activity-item-#{activity.id}") if logged_in? && current_person == @profile %> | 18 | + <%= link_to_function(_('Remove'), 'remove_item_wall(this, %s, %s, %s); return false ;' % ["'.profile-activity-item'", url_for(:profile => params[:profile], :action => :remove_activity, :activity_id => activity.id, :only_hide => true, :view => params[:view]).to_json, _('Are you sure you want to remove this activity and all its replies?').to_json]) if logged_in? && current_person == @profile %> |
| 19 | </div> | 19 | </div> |
| 20 | </div> | 20 | </div> |
| 21 | 21 |
app/views/profile/_default_activity.rhtml
| @@ -6,7 +6,7 @@ | @@ -6,7 +6,7 @@ | ||
| 6 | <p class='profile-activity-time'><%= time_ago_as_sentence(activity.created_at) %></p> | 6 | <p class='profile-activity-time'><%= time_ago_as_sentence(activity.created_at) %></p> |
| 7 | <div class='profile-wall-actions'> | 7 | <div class='profile-wall-actions'> |
| 8 | <%= link_to s_('profile|Comment'), '#', { :class => 'focus-on-comment'} %> | 8 | <%= link_to s_('profile|Comment'), '#', { :class => 'focus-on-comment'} %> |
| 9 | - <%= link_to_remote(content_tag(:span, _('Remove')), :confirm => _('Are you sure?'), :url =>{:action => 'remove_activity', :activity_id => activity.id}, :update => "profile-activity-item-#{activity.id}") if logged_in? && current_person == @profile %> | 9 | + <%= link_to_function(_('Remove'), 'remove_item_wall(this, %s, %s, %s); return false ;' % ["'.profile-activity-item'", url_for(:profile => params[:profile], :action => :remove_activity, :activity_id => activity.id, :view => params[:view]).to_json, _('Are you sure you want to remove this activity and all its replies?').to_json]) if logged_in? && current_person == @profile %> |
| 10 | </div> | 10 | </div> |
| 11 | </div> | 11 | </div> |
| 12 | 12 |
app/views/profile/_leave_scrap.rhtml
| @@ -5,7 +5,7 @@ | @@ -5,7 +5,7 @@ | ||
| 5 | <p class='profile-activity-text'><%= link_to activity.user.name, activity.user.url %> <%= describe activity %></p> | 5 | <p class='profile-activity-text'><%= link_to activity.user.name, activity.user.url %> <%= describe activity %></p> |
| 6 | <p class='profile-activity-time'><%= time_ago_as_sentence(activity.created_at) %></p> | 6 | <p class='profile-activity-time'><%= time_ago_as_sentence(activity.created_at) %></p> |
| 7 | <div class='profile-wall-actions'> | 7 | <div class='profile-wall-actions'> |
| 8 | - <%= link_to_remote(content_tag(:span, _('Remove')), :confirm => _('Are you sure?'), :url =>{:action => 'remove_activity', :activity_id => activity.id}, :update => "profile-activity-item-#{activity.id}") if logged_in? && current_person == @profile %> | 8 | + <%= link_to_function(_('Remove'), 'remove_item_wall(this, %s, %s, %s); return false ;' % ["'.profile-activity-item'", url_for(:profile => params[:profile], :action => :remove_activity, :activity_id => activity.id, :view => params[:view]).to_json, _('Are you sure you want to remove this activity and all its replies?').to_json]) if logged_in? && current_person == @profile %> |
| 9 | </div> | 9 | </div> |
| 10 | </div> | 10 | </div> |
| 11 | 11 |
app/views/profile/_profile_scrap.rhtml
| @@ -12,7 +12,7 @@ | @@ -12,7 +12,7 @@ | ||
| 12 | <%= link_to_function s_('profile|Comment'), "hide_and_show(['#profile-wall-message-response-#{scrap.id}'],['#profile-wall-reply-#{scrap.id}', '#profile-wall-reply-form-#{scrap.id}']);$('reply_content_#{scrap.id}').value='';$('reply_content_#{scrap.id}').focus();return false", :class => "profile-send-reply" %> | 12 | <%= link_to_function s_('profile|Comment'), "hide_and_show(['#profile-wall-message-response-#{scrap.id}'],['#profile-wall-reply-#{scrap.id}', '#profile-wall-reply-form-#{scrap.id}']);$('reply_content_#{scrap.id}').value='';$('reply_content_#{scrap.id}').focus();return false", :class => "profile-send-reply" %> |
| 13 | </span> | 13 | </span> |
| 14 | <% end %> | 14 | <% end %> |
| 15 | - <%= link_to_remote(content_tag(:span, _('Remove')), :confirm => _('Are you sure?'), :url =>{:action => 'remove_scrap', :scrap_id => scrap.id}, :update => "profile-activity-item-#{scrap.id}") if logged_in? && user.can_control_scrap?(scrap) %> | 15 | + <%= link_to_function(_('Remove'), 'remove_item_wall(this, %s, %s, %s); return false ;' % ["'.profile-activity-item'", url_for(:profile => params[:profile], :action => :remove_scrap, :scrap_id => scrap.id, :view => params[:view]).to_json, _('Are you sure you want to remove this scrap and all its replies?').to_json]) if logged_in? && user.can_control_scrap?(scrap) %> |
| 16 | </div> | 16 | </div> |
| 17 | </div> | 17 | </div> |
| 18 | 18 |
app/views/profile/_upload_image.rhtml
| @@ -6,7 +6,7 @@ | @@ -6,7 +6,7 @@ | ||
| 6 | <p class='profile-activity-text'><%= link_to activity.user.name, activity.user.url %> <%= describe activity %></p> | 6 | <p class='profile-activity-text'><%= link_to activity.user.name, activity.user.url %> <%= describe activity %></p> |
| 7 | <p class='profile-activity-time'><%= time_ago_as_sentence(activity.created_at) %></p> | 7 | <p class='profile-activity-time'><%= time_ago_as_sentence(activity.created_at) %></p> |
| 8 | <div class='profile-wall-actions'> | 8 | <div class='profile-wall-actions'> |
| 9 | - <%= link_to_remote(content_tag(:span, _('Remove')), :confirm => _('Are you sure?'), :url =>{:action => 'remove_activity', :activity_id => activity.id}, :update => "profile-activity-item-#{activity.id}") if logged_in? && current_person == @profile %> | 9 | + <%= link_to_function(_('Remove'), 'remove_item_wall(this, %s, %s, %s); return false ;' % ["'.profile-activity-item'", url_for(:profile => params[:profile], :action => :remove_activity, :activity_id => activity.id, :view => params[:view]).to_json, _('Are you sure you want to remove this activity and all its replies?').to_json]) if logged_in? && current_person == @profile %> |
| 10 | </div> | 10 | </div> |
| 11 | </div> | 11 | </div> |
| 12 | </div> | 12 | </div> |
po/pt/noosfero.po
| @@ -5805,8 +5805,14 @@ msgstr "Remover" | @@ -5805,8 +5805,14 @@ msgstr "Remover" | ||
| 5805 | #: app/views/profile/_create_article.rhtml:18 | 5805 | #: app/views/profile/_create_article.rhtml:18 |
| 5806 | #: app/views/profile/_default_activity.rhtml:9 | 5806 | #: app/views/profile/_default_activity.rhtml:9 |
| 5807 | #: app/views/profile/_leave_scrap_to_self.rhtml:8 | 5807 | #: app/views/profile/_leave_scrap_to_self.rhtml:8 |
| 5808 | -#: app/views/profile/_upload_image.rhtml:10 | 5808 | +#: app/views/profile/_upload_image.rhtml:9 |
| 5809 | +msgid "Are you sure you want to remove this activity and all its replies?" | ||
| 5810 | +msgstr "Você tem certeza que quer remover esta atividade e todas as suas respostas?" | ||
| 5811 | + | ||
| 5809 | #: app/views/profile/_profile_scrap.rhtml:15 | 5812 | #: app/views/profile/_profile_scrap.rhtml:15 |
| 5813 | +msgid "Are you sure you want to remove this scrap and all its replies?" | ||
| 5814 | +msgstr "Você tem certeza que quer remover esta mensagem e todas as suas respostas?" | ||
| 5815 | + | ||
| 5810 | #: plugins/bsc/views/bsc_plugin_myprofile/manage_contracts.html.erb:35 | 5816 | #: plugins/bsc/views/bsc_plugin_myprofile/manage_contracts.html.erb:35 |
| 5811 | msgid "Are you sure?" | 5817 | msgid "Are you sure?" |
| 5812 | msgstr "Você tem certeza?" | 5818 | msgstr "Você tem certeza?" |
public/javascripts/application.js
| @@ -683,6 +683,24 @@ function add_comment_reply_form(button, comment_id) { | @@ -683,6 +683,24 @@ function add_comment_reply_form(button, comment_id) { | ||
| 683 | return f; | 683 | return f; |
| 684 | } | 684 | } |
| 685 | 685 | ||
| 686 | +function remove_item_wall(button, item, url, msg) { | ||
| 687 | + var $ = jQuery; | ||
| 688 | + var $wall_item = $(button).closest(item); | ||
| 689 | + $wall_item.addClass('remove-item-loading'); | ||
| 690 | + if (msg && !confirm(msg)) { | ||
| 691 | + $wall_item.removeClass('remove-item-loading'); | ||
| 692 | + return; | ||
| 693 | + } | ||
| 694 | + $.post(url, function(data) { | ||
| 695 | + if (data.ok) { | ||
| 696 | + $wall_item.slideUp(); | ||
| 697 | + } else { | ||
| 698 | + $wall_item.removeClass('remove-item-loading'); | ||
| 699 | + window.location.replace(data.redirect); | ||
| 700 | + } | ||
| 701 | + }); | ||
| 702 | +} | ||
| 703 | + | ||
| 686 | function original_image_dimensions(src) { | 704 | function original_image_dimensions(src) { |
| 687 | var img = new Image(); | 705 | var img = new Image(); |
| 688 | img.src = src; | 706 | img.src = src; |
public/stylesheets/application.css
| @@ -4778,6 +4778,10 @@ h1#agenda-title { | @@ -4778,6 +4778,10 @@ h1#agenda-title { | ||
| 4778 | color: #000; | 4778 | color: #000; |
| 4779 | } | 4779 | } |
| 4780 | 4780 | ||
| 4781 | +.remove-item-loading { | ||
| 4782 | + background: transparent url(../images/loading-small.gif) no-repeat left center !important; | ||
| 4783 | +} | ||
| 4784 | + | ||
| 4781 | li.profile-activity-item.upload_image .more, | 4785 | li.profile-activity-item.upload_image .more, |
| 4782 | li.profile-activity-item.upload_image .upimg { | 4786 | li.profile-activity-item.upload_image .upimg { |
| 4783 | display: block; | 4787 | display: block; |