First version of blocking feature. Allows both time-based (for map protection) and notice-based (for education) blocks on users. Also introduces user roles and a simple UI for displaying and administering these.
This commit is contained in:
parent
52fa09ecae
commit
daa2496024
33 changed files with 766 additions and 23 deletions
34
app/views/user_blocks/_block.html.erb
Normal file
34
app/views/user_blocks/_block.html.erb
Normal file
|
@ -0,0 +1,34 @@
|
|||
<tr>
|
||||
<% c1 = cycle('table0', 'table1') %>
|
||||
|
||||
<% if show_user_name %>
|
||||
<td class="<%= c1 %>"><%= link_to h(block.user.display_name), :controller => 'user', :action => 'view', :display_name => block.user.display_name %></td>
|
||||
<% end %>
|
||||
<% if show_moderator_name %>
|
||||
<td class="<%= c1 %>"><%= link_to h(block.moderator.display_name), :controller => 'user', :action => 'view', :display_name => block.moderator.display_name %></td>
|
||||
<% end %>
|
||||
<td class="<%= c1 %>"><%=h block.reason %></td>
|
||||
<td class="<%= c1 %>">
|
||||
<% if block.active? %>
|
||||
<% if block.needs_view? %>
|
||||
<%= t'user_block.partial.until_login' %>
|
||||
<% else %>
|
||||
<%= t('user_block.partial.time_future', :time => distance_of_time_in_words_to_now(block.end_at)) %>
|
||||
<% end %>
|
||||
<% else %>
|
||||
<%= t'user_block.partial.not_active' %>
|
||||
<% end %>
|
||||
</td>
|
||||
<td class="<%= c1 %>">
|
||||
<% if block.revoker_id.nil? %>
|
||||
<%= t('user_block.partial.not_revoked') %>
|
||||
<% else %>
|
||||
<%= link_to h(block.revoker.display_name), :controller => 'user', :action => 'view', :display_name => block.revoker.display_name %>
|
||||
<% end %>
|
||||
</td>
|
||||
<td class="<%= c1 %>"><%= link_to t('user_block.partial.show'), block %></td>
|
||||
<td class="<%= c1 %>"><% if @user and @user.id == block.moderator_id and block.active? %><%= link_to t('user_block.partial.edit'), edit_user_block_path(block) %><% end %></td>
|
||||
<% if show_revoke_link %>
|
||||
<td class="<%= c1 %>"><% if block.active? %><%= link_to t('user_block.partial.revoke'), block, :confirm => t('user_block.partial.confirm'), :action => :revoke %><% end %></td>
|
||||
<% end %>
|
||||
</tr>
|
19
app/views/user_blocks/_blocks.html.erb
Normal file
19
app/views/user_blocks/_blocks.html.erb
Normal file
|
@ -0,0 +1,19 @@
|
|||
<table id="block_list" cellpadding="3">
|
||||
<tr>
|
||||
<% if show_user_name %>
|
||||
<th><%= t'user_block.partial.display_name' %></th>
|
||||
<% end %>
|
||||
<% if show_moderator_name %>
|
||||
<th><%= t'user_block.partial.moderator_name' %></th>
|
||||
<% end %>
|
||||
<th><%= t'user_block.partial.reason' %></th>
|
||||
<th><%= t'user_block.partial.status' %></th>
|
||||
<th><%= t'user_block.partial.revoker_name' %></th>
|
||||
<th></th>
|
||||
<th></th>
|
||||
<% if show_revoke_link %>
|
||||
<th></th>
|
||||
<% end %>
|
||||
</tr>
|
||||
<%= render :partial => 'block', :locals => {:show_revoke_link => show_revoke_link, :show_user_name => show_user_name, :show_moderator_name => show_moderator_name }, :collection => @user_blocks unless @user_blocks.nil? %>
|
||||
</table>
|
3
app/views/user_blocks/blocks_by.html.erb
Normal file
3
app/views/user_blocks/blocks_by.html.erb
Normal file
|
@ -0,0 +1,3 @@
|
|||
<h1><%= t('user_block.blocks_by.heading', :name => @this_user.display_name) %></h1>
|
||||
|
||||
<%= render :partial => 'blocks', :locals => { :show_revoke_link => (@user and @user.moderator?), :show_user_name => true, :show_moderator_name => false } %>
|
3
app/views/user_blocks/blocks_on.html.erb
Normal file
3
app/views/user_blocks/blocks_on.html.erb
Normal file
|
@ -0,0 +1,3 @@
|
|||
<h1><%= t('user_block.blocks_on.heading', :name => @this_user.display_name) %></h1>
|
||||
|
||||
<%= render :partial => 'blocks', :locals => { :show_revoke_link => (@user and @user.moderator?), :show_user_name => false, :show_moderator_name => true } %>
|
25
app/views/user_blocks/edit.html.erb
Normal file
25
app/views/user_blocks/edit.html.erb
Normal file
|
@ -0,0 +1,25 @@
|
|||
<h1><%= t('user_block.edit.title', :name => @user_block.user.display_name) %></h1>
|
||||
|
||||
<% form_for(@user_block) do |f| %>
|
||||
<%= f.error_messages %>
|
||||
|
||||
<p>
|
||||
<%= f.label :reason, t('user_block.edit.reason', :name => @user_block.user.display_name) %><br />
|
||||
<%= f.text_area :reason %>
|
||||
</p>
|
||||
<p>
|
||||
<%= label_tag 'user_block_period', t('user_block.edit.period') %><br />
|
||||
<%= hidden_field_tag 'what is the period', params[:user_block_period] %>
|
||||
<%= select_tag('user_block_period', options_for_select(UserBlock::PERIODS.collect { |h| [t('user_block.period', :count => h), h.to_s] }, params[:user_block_period])) %>
|
||||
</p>
|
||||
<p>
|
||||
<%= f.check_box :needs_view %>
|
||||
<%= f.label :needs_view, t('user_block.edit.needs_view') %>
|
||||
</p>
|
||||
<p>
|
||||
<%= f.submit t('user_block.edit.submit') %>
|
||||
</p>
|
||||
<% end %>
|
||||
|
||||
<%= link_to t('user_block.edit.show'), @user_block %> |
|
||||
<%= link_to t('user_block.edit.back'), user_blocks_path %>
|
3
app/views/user_blocks/index.html.erb
Normal file
3
app/views/user_blocks/index.html.erb
Normal file
|
@ -0,0 +1,3 @@
|
|||
<h1><%= t('user_block.index.heading') %></h1>
|
||||
|
||||
<%= render :partial => 'blocks', :locals => { :show_revoke_link => (@user and @user.moderator?), :show_user_name => true, :show_moderator_name => true } %>
|
32
app/views/user_blocks/new.html.erb
Normal file
32
app/views/user_blocks/new.html.erb
Normal file
|
@ -0,0 +1,32 @@
|
|||
<h1><%= t('user_block.new.title', :name => @display_name) %></h1>
|
||||
|
||||
<% form_for(@user_block) do |f| %>
|
||||
<%= f.error_messages %>
|
||||
|
||||
<p>
|
||||
<%= check_box_tag 'tried_contacting', 'yes', (params[:tried_contacting] == "yes") %>
|
||||
<%= label_tag 'tried_contacting', t('user_block.new.tried_contacting') %>
|
||||
</p>
|
||||
<p>
|
||||
<%= check_box_tag 'tried_waiting', 'yes', (params[:tried_waiting] == "yes") %>
|
||||
<%= label_tag 'tried_waiting', t('user_block.new.tried_waiting') %>
|
||||
</p>
|
||||
<p>
|
||||
<%= f.label :reason, t('user_block.new.reason', :name => @display_name) %><br />
|
||||
<%= f.text_area :reason %>
|
||||
</p>
|
||||
<p>
|
||||
<%= label_tag 'user_block_period', t('user_block.new.period') %><br />
|
||||
<%= select_tag('user_block_period', options_for_select(UserBlock::PERIODS.collect { |h| [t('user_block.period', :count => h), h.to_s] }, params[:user_block_period] )) %>
|
||||
</p>
|
||||
<p>
|
||||
<%= f.check_box :needs_view %>
|
||||
<%= f.label :needs_view, t('user_block.new.needs_view') %>
|
||||
</p>
|
||||
<p>
|
||||
<%= hidden_field_tag 'display_name', @display_name %>
|
||||
<%= f.submit t('user_block.new.submit') %>
|
||||
</p>
|
||||
<% end %>
|
||||
|
||||
<%= link_to 'Back', user_blocks_path %>
|
25
app/views/user_blocks/revoke.html.erb
Normal file
25
app/views/user_blocks/revoke.html.erb
Normal file
|
@ -0,0 +1,25 @@
|
|||
<h1><%= t('user_block.revoke.heading',
|
||||
:block_on => @user_block.user.display_name,
|
||||
:block_by => @user_block.moderator.display_name) %></h1>
|
||||
|
||||
<% if @user_block.end_at > Time.now %>
|
||||
<p><b>
|
||||
<%= t('user_block.revoke.time_future', :time => distance_of_time_in_words_to_now(@user_block.end_at)) %>
|
||||
</b></p>
|
||||
|
||||
<% form_for :revoke, :url => { :action => "revoke" } do |f| %>
|
||||
<%= f.error_messages %>
|
||||
<p>
|
||||
<%= check_box_tag 'confirm', 'yes' %>
|
||||
<%= label_tag 'confirm', t('user_block.revoke.confirm') %>
|
||||
</p>
|
||||
<p>
|
||||
<%= submit_tag t('user_block.revoke.revoke') %>
|
||||
</p>
|
||||
<% end %>
|
||||
|
||||
<% else %>
|
||||
<p>
|
||||
<%= t('user_block.revoke.past', :time => distance_of_time_in_words_to_now(@user_block.end_at)) %>
|
||||
</p>
|
||||
<% end %>
|
38
app/views/user_blocks/show.html.erb
Normal file
38
app/views/user_blocks/show.html.erb
Normal file
|
@ -0,0 +1,38 @@
|
|||
<h1><%= t('user_block.show.heading',
|
||||
:block_on => @user_block.user.display_name,
|
||||
:block_by => @user_block.moderator.display_name) %></h1>
|
||||
|
||||
<% if @user_block.revoker %>
|
||||
<p>
|
||||
<b><%= t'user_block.show.revoker' %></b>
|
||||
<%= link_to h(@user_block.revoker.display_name), :controller => 'user', :action => 'view', :display_name => @user_block.revoker.display_name %>
|
||||
</p>
|
||||
<% end %>
|
||||
|
||||
<p>
|
||||
<% if @user_block.end_at > Time.now %>
|
||||
<%= t('user_block.show.time_future', :time => distance_of_time_in_words_to_now(@user_block.end_at)) %>
|
||||
<% else %>
|
||||
<%= t('user_block.show.time_past', :time => distance_of_time_in_words_to_now(@user_block.end_at)) %>
|
||||
<% end %>
|
||||
</p>
|
||||
|
||||
<% if @user_block.needs_view %>
|
||||
<p><%= t'user_block.show.needs_view' %></p>
|
||||
<% end %>
|
||||
|
||||
<p>
|
||||
<b><%= t'user_block.show.reason' %></b>
|
||||
<%=h @user_block.reason %>
|
||||
</p>
|
||||
|
||||
|
||||
<% if @user_block.end_at > Time.now.getutc %>
|
||||
<% if @user and @user.id == @user_block.moderator_id %>
|
||||
<%= link_to t('user_block.show.edit'), edit_user_block_path(@user_block) %> |
|
||||
<% end %>
|
||||
<% if @user and @user.moderator? %>
|
||||
<%= link_to(t('user_block.show.revoke'),{:controller => 'user_blocks', :action => 'revoke', :id => @user_block.id}) %> |
|
||||
<% end %>
|
||||
<% end %>
|
||||
<%= link_to t('user_block.show.back'), user_blocks_path %>
|
Loading…
Add table
Add a link
Reference in a new issue