adds edition/management of officials to admin zone

This commit is contained in:
Juanjo Bazán
2015-08-17 17:04:29 +02:00
parent 635dfba418
commit fabcb42328
12 changed files with 230 additions and 1 deletions

View File

@@ -0,0 +1,32 @@
class Admin::OfficialsController < Admin::BaseController
def index
@officials = User.officials.page(params[:page])
end
def search
@users = User.with_email(params[:email]).page(params[:page])
end
def edit
@user = User.find(params[:id])
end
def update
@user = User.find(params[:id])
@user.update(user_params)
redirect_to admin_officials_path, notice: t("admin.officials.flash.official_updated")
end
def destroy
@official = User.officials.find(params[:id])
@official.remove_official_position!
redirect_to admin_officials_path, notice: t("admin.officials.flash.official_destroyed")
end
private
def user_params
params.require(:user).permit(:official_position, :official_level)
end
end

View File

@@ -4,6 +4,10 @@ module AdminHelper
render "/#{namespace}/menu"
end
def official_level_options
1..5
end
private
def namespace

View File

@@ -41,4 +41,8 @@ class User < ActiveRecord::Base
def remove_official_position!
update official_position: nil, official_level: 0
end
def self.with_email(e)
e.present? ? where(email: e) : none
end
end

View File

@@ -2,4 +2,5 @@
<li><%= link_to t('admin.menu.debate_topics'), admin_tags_path %></li>
<li><%= link_to t('admin.menu.hidden_debates'), admin_debates_path %></li>
<li><%= link_to t('admin.menu.hidden_comments'), admin_comments_path %></li>
<li><%= link_to t('admin.officials.index.title'), admin_officials_path %></li>
</ul>

View File

@@ -0,0 +1,14 @@
<h1><%= t("admin.officials.edit.title") %></h1>
<%= @user.name %> (<%= @user.email %>)
<%= form_for @user, url: admin_official_path(@user) do |f| %>
<%= f.text_field :official_position %>
<%= f.select :official_level, official_level_options %>
<%= f.submit %>
<% if @user.official? %>
<%= link_to t("admin.officials.edit.destroy"), admin_official_path(@user), method: :delete, class: 'button tiny alert' %>
<% else %>
<%= link_to t("admin.officials.edit.cancel"), admin_officials_path, class: 'button tiny alert' %>
<% end %>
<% end %>

View File

@@ -0,0 +1,25 @@
<h1><%= t("admin.officials.index.title") %></h1>
<div>
<%= form_for(User.new, url: search_admin_officials_path, as: :user, method: :get) do |f| %>
<%= text_field_tag :email, "", label: false, placeholder: t("admin.officials.index.search_email_placeholder") %>
<%= f.submit t("admin.officials.index.search") %>
<% end %>
</div>
<div>
<%= page_entries_info @officials %>
</div>
<div>
<% @officials.each do |official| %>
<%= link_to official.name, edit_admin_official_path(official) %>
<%= official.official_position %>
<%= official.official_level %>
<br/><br/>
<% end %>
</div>
<div>
<%= paginate @officials %>
</div>

View File

@@ -0,0 +1,21 @@
<h1><%= t("admin.officials.search.title") %></h1>
<div>
<%= form_for(User.new, url: search_admin_officials_path, as: :user, method: :get) do |f| %>
<%= text_field_tag :email, "", label: false, placeholder: t("admin.officials.index.search_email_placeholder") %>
<%= f.submit t("admin.officials.search.search") %>
<% end %>
</div>
<div>
<%= page_entries_info @users %>
</div>
<div>
<% @users.each do |user| %>
<%= link_to user.name, edit_admin_official_path(user) %>
<%= user.official_position %>
<%= user.official_level %>
<%= link_to user.official? ? t("admin.officials.search.edit_official") : t("admin.officials.search.make_official"), edit_admin_official_path(user) %>
<% end %>
</div>