Merge branch '134_create_moderator'
This commit is contained in:
@@ -377,6 +377,3 @@ DEPENDENCIES
|
|||||||
uglifier (>= 1.3.0)
|
uglifier (>= 1.3.0)
|
||||||
unicorn
|
unicorn
|
||||||
web-console (~> 2.0)
|
web-console (~> 2.0)
|
||||||
|
|
||||||
BUNDLED WITH
|
|
||||||
1.10.6
|
|
||||||
|
|||||||
18
app/controllers/admin/moderators_controller.rb
Normal file
18
app/controllers/admin/moderators_controller.rb
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
class Admin::ModeratorsController < Admin::BaseController
|
||||||
|
def index
|
||||||
|
@moderators = User.joins(:moderator).page(params[:page])
|
||||||
|
end
|
||||||
|
def search
|
||||||
|
@email = params[:email]
|
||||||
|
@user = User.find_by(email: @email)
|
||||||
|
|
||||||
|
respond_to do |format|
|
||||||
|
format.js
|
||||||
|
end
|
||||||
|
end
|
||||||
|
def toggle
|
||||||
|
@user = User.find(params[:id])
|
||||||
|
@user.toggle_moderator
|
||||||
|
redirect_to admin_moderators_path
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -67,4 +67,8 @@ class User < ActiveRecord::Base
|
|||||||
e.present? ? where(email: e) : none
|
e.present? ? where(email: e) : none
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def toggle_moderator
|
||||||
|
moderator? ? self.moderator.destroy : create_moderator
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -46,7 +46,14 @@
|
|||||||
<% end %>
|
<% end %>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li <%= "class=active" if controller_name == "settings" %>>
|
<li <%= 'class=active' if controller_name == 'moderators' %>>
|
||||||
|
<%= link_to admin_moderators_path do %>
|
||||||
|
<i class="icon-user"></i>
|
||||||
|
<%= t('admin.menu.moderators') %>
|
||||||
|
<% end %>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li <%= 'class=active' if controller_name == 'settings' %>>
|
||||||
<%= link_to admin_settings_path do %>
|
<%= link_to admin_settings_path do %>
|
||||||
<i class="icon-settings"></i>
|
<i class="icon-settings"></i>
|
||||||
<%= t("admin.menu.settings") %>
|
<%= t("admin.menu.settings") %>
|
||||||
|
|||||||
18
app/views/admin/moderators/_moderator.html.erb
Normal file
18
app/views/admin/moderators/_moderator.html.erb
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
<% if moderator %>
|
||||||
|
<span><%= moderator.name %></span>
|
||||||
|
<span class="bullet"> • </span>
|
||||||
|
<span><%= moderator.email %></span>
|
||||||
|
<% if moderator.moderator? %>
|
||||||
|
<%= link_to t('admin.moderators.moderator.delete'),
|
||||||
|
toggle_admin_moderator_path(moderator),
|
||||||
|
method: :post,
|
||||||
|
class: "button tiny radius alert right" %>
|
||||||
|
<% else %>
|
||||||
|
<%= link_to t('admin.moderators.moderator.add'),
|
||||||
|
toggle_admin_moderator_path(moderator),
|
||||||
|
method: :post,
|
||||||
|
class: "button tiny radius success right" %>
|
||||||
|
<% end %>
|
||||||
|
<% else%>
|
||||||
|
<span><%= t('admin.moderators.search.user_not_found') %></span>
|
||||||
|
<% end %>
|
||||||
25
app/views/admin/moderators/index.html.erb
Normal file
25
app/views/admin/moderators/index.html.erb
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
<h2><%= t("admin.moderators.index.title") %></h2>
|
||||||
|
<div class="row">
|
||||||
|
<div class="column">
|
||||||
|
<%= form_tag search_admin_moderators_path, method: :get, remote: true do %>
|
||||||
|
<div class="small-12 medium-6 column">
|
||||||
|
<%= text_field_tag :email, '', placeholder: t('admin.moderators.search.email_placeholder') %>
|
||||||
|
</div>
|
||||||
|
<div class="small-12 medium-6 column">
|
||||||
|
<%= submit_tag t('admin.moderators.search.search'), class: 'button radius' %>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="search-result" class="small">
|
||||||
|
</div>
|
||||||
|
<h3><%= page_entries_info @moderators %></h3>
|
||||||
|
<ul class="admin-list">
|
||||||
|
<% @moderators.each do |moderator| %>
|
||||||
|
<li>
|
||||||
|
<%= render 'moderator', moderator: moderator %>
|
||||||
|
</li>
|
||||||
|
<% end %>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<%= paginate @moderators %>
|
||||||
1
app/views/admin/moderators/search.js.erb
Normal file
1
app/views/admin/moderators/search.js.erb
Normal file
@@ -0,0 +1 @@
|
|||||||
|
$("#search-result").html("<div class=\"panel\"><%= j render 'moderator', moderator: @user %></div>");
|
||||||
@@ -16,6 +16,7 @@ en:
|
|||||||
hidden_users: Hidden users
|
hidden_users: Hidden users
|
||||||
organizations: Organizations
|
organizations: Organizations
|
||||||
officials: Officials
|
officials: Officials
|
||||||
|
moderators: Moderators
|
||||||
stats: Statistics
|
stats: Statistics
|
||||||
organizations:
|
organizations:
|
||||||
index:
|
index:
|
||||||
@@ -104,3 +105,14 @@ en:
|
|||||||
flash:
|
flash:
|
||||||
official_updated: 'Official position saved!'
|
official_updated: 'Official position saved!'
|
||||||
official_destroyed: 'User is not an official anymore'
|
official_destroyed: 'User is not an official anymore'
|
||||||
|
moderators:
|
||||||
|
index:
|
||||||
|
title: Moderators
|
||||||
|
search:
|
||||||
|
email_placeholder: 'Search user by email'
|
||||||
|
search: Search
|
||||||
|
user_not_found: 'User not found'
|
||||||
|
moderator:
|
||||||
|
delete: Delete
|
||||||
|
add: Add
|
||||||
|
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ es:
|
|||||||
hidden_users: Usuarios ocultos
|
hidden_users: Usuarios ocultos
|
||||||
organizations: Organizaciones
|
organizations: Organizaciones
|
||||||
officials: Cargos públicos
|
officials: Cargos públicos
|
||||||
|
moderators: Moderadores
|
||||||
stats: Estadísticas
|
stats: Estadísticas
|
||||||
organizations:
|
organizations:
|
||||||
index:
|
index:
|
||||||
@@ -104,3 +105,13 @@ es:
|
|||||||
flash:
|
flash:
|
||||||
official_updated: 'Datos del cargo público guardados'
|
official_updated: 'Datos del cargo público guardados'
|
||||||
official_destroyed: 'Datos guardados: el usuario ya no es cargo público'
|
official_destroyed: 'Datos guardados: el usuario ya no es cargo público'
|
||||||
|
moderators:
|
||||||
|
index:
|
||||||
|
title: Moderadores
|
||||||
|
search:
|
||||||
|
email_placeholder: 'Buscar usuario por email'
|
||||||
|
search: Buscar
|
||||||
|
user_not_found: 'Usuario no encontrado'
|
||||||
|
moderator:
|
||||||
|
delete: Borrar
|
||||||
|
add: Añadir
|
||||||
|
|||||||
@@ -62,6 +62,10 @@ Rails.application.routes.draw do
|
|||||||
end
|
end
|
||||||
|
|
||||||
resources :settings, only: [:index, :update]
|
resources :settings, only: [:index, :update]
|
||||||
|
resources :moderators, only: [:index] do
|
||||||
|
member { post :toggle }
|
||||||
|
collection { get :search }
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
namespace :moderation do
|
namespace :moderation do
|
||||||
|
|||||||
36
spec/features/admin/moderators_spec.rb
Normal file
36
spec/features/admin/moderators_spec.rb
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
require 'rails_helper'
|
||||||
|
|
||||||
|
feature 'Admin moderators' do
|
||||||
|
background do
|
||||||
|
@user = create(:user, first_name: 'Jose Luis', last_name: 'Balbin' )
|
||||||
|
@moderator = create(:moderator)
|
||||||
|
@admin = create(:administrator)
|
||||||
|
login_as(@admin.user)
|
||||||
|
end
|
||||||
|
|
||||||
|
scenario 'Index' do
|
||||||
|
visit admin_moderators_path
|
||||||
|
expect(page).to have_content @moderator.name
|
||||||
|
expect(page).to have_content @moderator.email
|
||||||
|
expect(page).to_not have_content @user.name
|
||||||
|
end
|
||||||
|
|
||||||
|
scenario 'Create Moderator', :js do
|
||||||
|
visit admin_moderators_path
|
||||||
|
fill_in 'email', with: @user.email
|
||||||
|
click_button 'Search'
|
||||||
|
|
||||||
|
expect(page).to have_content @user.name
|
||||||
|
click_link 'Add'
|
||||||
|
|
||||||
|
expect(page).to have_content @user.name
|
||||||
|
end
|
||||||
|
|
||||||
|
scenario 'Delete Moderator' do
|
||||||
|
visit admin_moderators_path
|
||||||
|
click_link 'Delete'
|
||||||
|
|
||||||
|
expect(page).to_not have_content @moderator.name
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
Reference in New Issue
Block a user