adds index and create of valuators
This commit is contained in:
27
app/controllers/admin/valuators_controller.rb
Normal file
27
app/controllers/admin/valuators_controller.rb
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
class Admin::ValuatorsController < Admin::BaseController
|
||||||
|
load_and_authorize_resource
|
||||||
|
|
||||||
|
def index
|
||||||
|
@valuators = @valuators.page(params[:page])
|
||||||
|
end
|
||||||
|
|
||||||
|
def search
|
||||||
|
@user = User.find_by(email: params[:email])
|
||||||
|
|
||||||
|
respond_to do |format|
|
||||||
|
if @user
|
||||||
|
@valuator = Valuator.find_or_initialize_by(user: @user)
|
||||||
|
format.js
|
||||||
|
else
|
||||||
|
format.js { render "user_not_found" }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def create
|
||||||
|
@valuator.user_id = params[:user_id]
|
||||||
|
@valuator.save
|
||||||
|
|
||||||
|
redirect_to admin_valuators_path
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -32,6 +32,7 @@ module Abilities
|
|||||||
can :comment_as_administrator, [Debate, Comment, Proposal]
|
can :comment_as_administrator, [Debate, Comment, Proposal]
|
||||||
|
|
||||||
can [:search, :create, :index, :destroy], ::Moderator
|
can [:search, :create, :index, :destroy], ::Moderator
|
||||||
|
can [:search, :create, :index], ::Valuator
|
||||||
|
|
||||||
can :manage, Annotation
|
can :manage, Annotation
|
||||||
|
|
||||||
|
|||||||
@@ -78,6 +78,13 @@
|
|||||||
<% end %>
|
<% end %>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
<li <%= 'class=active' if controller_name == 'valuators' %>>
|
||||||
|
<%= link_to admin_valuators_path do %>
|
||||||
|
<i class="icon-user"></i>
|
||||||
|
<%= t('admin.menu.valuators') %>
|
||||||
|
<% end %>
|
||||||
|
</li>
|
||||||
|
|
||||||
<li <%= 'class=active' if controller_name == 'activity' %>>
|
<li <%= 'class=active' if controller_name == 'activity' %>>
|
||||||
<%= link_to admin_activity_path do %>
|
<%= link_to admin_activity_path do %>
|
||||||
<i class="icon-eye"></i>
|
<i class="icon-eye"></i>
|
||||||
|
|||||||
7
app/views/admin/valuators/_valuator.html.erb
Normal file
7
app/views/admin/valuators/_valuator.html.erb
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
<span><%= valuator.name %></span>
|
||||||
|
<span class="bullet"> • </span>
|
||||||
|
<span><%= valuator.email %></span>
|
||||||
|
<% unless valuator.persisted? %>
|
||||||
|
<%= link_to t('admin.valuators.valuator.add'),{ controller: "admin/valuators", action: :create, user_id: valuator.user_id },
|
||||||
|
method: :post, class: "button tiny radius success right" %>
|
||||||
|
<% end %>
|
||||||
24
app/views/admin/valuators/index.html.erb
Normal file
24
app/views/admin/valuators/index.html.erb
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
<h2><%= t("admin.valuators.index.title") %></h2>
|
||||||
|
<div class="row">
|
||||||
|
<div class="column">
|
||||||
|
<%= form_tag search_admin_valuators_path, method: :get, remote: true do %>
|
||||||
|
<div class="small-12 medium-6 column">
|
||||||
|
<%= text_field_tag :email, '', placeholder: t('admin.valuators.search.email_placeholder') %>
|
||||||
|
</div>
|
||||||
|
<div class="small-12 medium-6 column">
|
||||||
|
<%= submit_tag t('admin.valuators.search.search'), class: 'button radius' %>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="search-result" class="row small"></div>
|
||||||
|
<h3><%= page_entries_info @valuators %></h3>
|
||||||
|
<ul id="valuators" class="admin-list">
|
||||||
|
<% @valuators.each do |valuator| %>
|
||||||
|
<li>
|
||||||
|
<%= render 'valuator', valuator: valuator %>
|
||||||
|
</li>
|
||||||
|
<% end %>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<%= paginate @valuators %>
|
||||||
1
app/views/admin/valuators/search.js.erb
Normal file
1
app/views/admin/valuators/search.js.erb
Normal file
@@ -0,0 +1 @@
|
|||||||
|
$("#search-result").html("<div class=\"panel column\"><%= j render 'valuator', valuator: @valuator %></div>");
|
||||||
1
app/views/admin/valuators/user_not_found.js.erb
Normal file
1
app/views/admin/valuators/user_not_found.js.erb
Normal file
@@ -0,0 +1 @@
|
|||||||
|
$("#search-result").html("<div class=\"panel column\"><%= j t('admin.valuators.search.user_not_found') %></div>");
|
||||||
@@ -54,6 +54,7 @@ en:
|
|||||||
hidden_users: Hidden users
|
hidden_users: Hidden users
|
||||||
incomplete_verifications: Incomplete verifications
|
incomplete_verifications: Incomplete verifications
|
||||||
moderators: Moderators
|
moderators: Moderators
|
||||||
|
valuators: Valuators
|
||||||
officials: Officials
|
officials: Officials
|
||||||
organizations: Organisations
|
organizations: Organisations
|
||||||
settings: Configuration settings
|
settings: Configuration settings
|
||||||
@@ -69,6 +70,17 @@ en:
|
|||||||
email_placeholder: Search user by email
|
email_placeholder: Search user by email
|
||||||
search: Search
|
search: Search
|
||||||
user_not_found: User not found
|
user_not_found: User not found
|
||||||
|
valuators:
|
||||||
|
index:
|
||||||
|
title: Valuators
|
||||||
|
moderator:
|
||||||
|
add: Add
|
||||||
|
delete: Delete
|
||||||
|
show: Show
|
||||||
|
search:
|
||||||
|
email_placeholder: Search user by email
|
||||||
|
search: Search
|
||||||
|
user_not_found: User not found
|
||||||
officials:
|
officials:
|
||||||
edit:
|
edit:
|
||||||
back: Back
|
back: Back
|
||||||
@@ -139,6 +151,7 @@ en:
|
|||||||
spending_proposals:
|
spending_proposals:
|
||||||
index:
|
index:
|
||||||
geozone_filter_all: All zones
|
geozone_filter_all: All zones
|
||||||
|
valuator_filter_all: All valuators
|
||||||
filters:
|
filters:
|
||||||
all: All
|
all: All
|
||||||
without_admin: Without assigned admin
|
without_admin: Without assigned admin
|
||||||
|
|||||||
@@ -54,6 +54,7 @@ es:
|
|||||||
hidden_users: Usuarios bloqueados
|
hidden_users: Usuarios bloqueados
|
||||||
incomplete_verifications: Verificaciones incompletas
|
incomplete_verifications: Verificaciones incompletas
|
||||||
moderators: Moderadores
|
moderators: Moderadores
|
||||||
|
valuators: Evaluadores
|
||||||
officials: Cargos públicos
|
officials: Cargos públicos
|
||||||
organizations: Organizaciones
|
organizations: Organizaciones
|
||||||
settings: Configuración global
|
settings: Configuración global
|
||||||
@@ -69,6 +70,17 @@ es:
|
|||||||
email_placeholder: Buscar usuario por email
|
email_placeholder: Buscar usuario por email
|
||||||
search: Buscar
|
search: Buscar
|
||||||
user_not_found: Usuario no encontrado
|
user_not_found: Usuario no encontrado
|
||||||
|
valuators:
|
||||||
|
index:
|
||||||
|
title: Evaluadores
|
||||||
|
moderator:
|
||||||
|
add: Añadir
|
||||||
|
delete: Borrar
|
||||||
|
show: Mostrar
|
||||||
|
search:
|
||||||
|
email_placeholder: Buscar usuario por email
|
||||||
|
search: Buscar
|
||||||
|
user_not_found: Usuario no encontrado
|
||||||
officials:
|
officials:
|
||||||
edit:
|
edit:
|
||||||
back: Volver
|
back: Volver
|
||||||
@@ -139,6 +151,7 @@ es:
|
|||||||
spending_proposals:
|
spending_proposals:
|
||||||
index:
|
index:
|
||||||
geozone_filter_all: Todos los ámbitos de actuación
|
geozone_filter_all: Todos los ámbitos de actuación
|
||||||
|
valuator_filter_all: Todos los evaluadores
|
||||||
filters:
|
filters:
|
||||||
all: Todas
|
all: Todas
|
||||||
without_admin: Sin administrador asignado
|
without_admin: Sin administrador asignado
|
||||||
|
|||||||
@@ -155,6 +155,10 @@ Rails.application.routes.draw do
|
|||||||
collection { get :search }
|
collection { get :search }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
resources :valuators, only: [:index, :create] do
|
||||||
|
collection { get :search }
|
||||||
|
end
|
||||||
|
|
||||||
resources :verifications, controller: :verifications, only: :index do
|
resources :verifications, controller: :verifications, only: :index do
|
||||||
collection { get :search}
|
collection { get :search}
|
||||||
end
|
end
|
||||||
|
|||||||
30
spec/features/admin/valuators_spec.rb
Normal file
30
spec/features/admin/valuators_spec.rb
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
require 'rails_helper'
|
||||||
|
|
||||||
|
feature 'Admin valuators' do
|
||||||
|
background do
|
||||||
|
@admin = create(:administrator)
|
||||||
|
@user = create(:user, username: 'Jose Luis Balbin')
|
||||||
|
@valuator = create(:valuator)
|
||||||
|
login_as(@admin.user)
|
||||||
|
visit admin_valuators_path
|
||||||
|
end
|
||||||
|
|
||||||
|
scenario 'Index' do
|
||||||
|
expect(page).to have_content @valuator.name
|
||||||
|
expect(page).to have_content @valuator.email
|
||||||
|
expect(page).to_not have_content @user.name
|
||||||
|
end
|
||||||
|
|
||||||
|
scenario 'Create Valuator', :js do
|
||||||
|
fill_in 'email', with: @user.email
|
||||||
|
click_button 'Search'
|
||||||
|
|
||||||
|
expect(page).to have_content @user.name
|
||||||
|
click_link 'Add'
|
||||||
|
within("#valuators") do
|
||||||
|
expect(page).to have_content @user.name
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
Reference in New Issue
Block a user