Merge branch '134_create_moderator'

This commit is contained in:
Jose Manuel
2015-08-25 00:07:42 +01:00
11 changed files with 137 additions and 4 deletions

View File

@@ -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

View 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

View File

@@ -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

View File

@@ -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") %>

View File

@@ -0,0 +1,18 @@
<% if moderator %>
<span><%= moderator.name %></span>
<span class="bullet">&nbsp;&bullet;&nbsp;</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 %>

View 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 %>

View File

@@ -0,0 +1 @@
$("#search-result").html("<div class=\"panel\"><%= j render 'moderator', moderator: @user %></div>");

View File

@@ -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

View File

@@ -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

View File

@@ -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

View 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