adds settings area to admin

This commit is contained in:
Juanjo Bazán
2015-08-17 18:38:57 +02:00
parent 1f0be14c0d
commit 5c630ac41d
10 changed files with 87 additions and 3 deletions

View File

@@ -0,0 +1,17 @@
class Admin::SettingsController < Admin::BaseController
def index
@settings = Setting.all
end
def update
@setting = Setting.find(params[:id])
@setting.update(settings_params)
redirect_to admin_settings_path, notice: t("admin.settings.flash.updated")
end
private
def settings_params
params.require(:setting).permit(:value)
end
end

View File

@@ -1,6 +1,7 @@
<ul id="admin_menu">
<li><%= link_to t('admin.menu.settings'), admin_settings_path %></li>
<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>
<li><%= link_to t('admin.menu.officials'), admin_officials_path %></li>
</ul>

View File

@@ -15,7 +15,7 @@
<% @officials.each do |official| %>
<%= link_to official.name, edit_admin_official_path(official) %>
<%= official.official_position %>
<%= official.official_level %>
<%= t("admin.officials.level_#{official.official_level}") %>
<br/><br/>
<% end %>
</div>

View File

@@ -15,7 +15,7 @@
<% @users.each do |user| %>
<%= link_to user.name, edit_admin_official_path(user) %>
<%= user.official_position %>
<%= user.official_level %>
<%= t("admin.officials.level_#{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>

View File

@@ -0,0 +1,15 @@
<h1><%= t("admin.settings.index.title") %></h1>
<ul>
<% @settings.each do |setting| %>
<li>
<strong><%= setting.key.classify %></strong>
<%= form_for(setting, url: admin_setting_path(setting), html: { id: "edit_#{dom_id(setting)}"}) do |f| %>
<%= f.text_field :value, label: false, id: dom_id(setting) %>
<%= f.submit(class: "button radius tiny") %>
<% end %>
</li>
<% end %>
</ul>

View File

@@ -1,12 +1,19 @@
en:
admin:
settings:
index:
title: Global settings
flash:
updated: 'Setting updated!'
dashboard:
index:
title: Administration
menu:
settings: Global settings
debate_topics: Debate topics
hidden_debates: Hidden debates
hidden_comments: Hidden comments
officials: Officials
actions:
hide: Hide
restore: Restore

View File

@@ -1,12 +1,19 @@
es:
admin:
settings:
index:
title: Configuración global
flash:
updated: 'Valor actualizado'
dashboard:
index:
title: Administración
menu:
settings: Configuración global
debate_topics: Temas de debate
hidden_debates: Debates ocultos
hidden_comments: Comentarios ocultos
officials: Cargos públicos
actions:
hide: Ocultar
restore: Permitir

View File

@@ -32,6 +32,8 @@ Rails.application.routes.draw do
resources :officials, only: [:index, :edit, :update, :destroy] do
collection { get :search}
end
resources :settings, only: [:index, :update]
end
namespace :moderation do

View File

@@ -55,4 +55,9 @@ FactoryGirl.define do
end
end
factory :setting do
sequence(:key) { |n| "setting key number #{n}" }
sequence(:value) { |n| "setting number #{n} value" }
end
end

View File

@@ -0,0 +1,30 @@
require 'rails_helper'
feature 'Admin settings' do
background do
@setting1 = create(:setting)
@setting2 = create(:setting)
@setting3 = create(:setting)
login_as(create(:administrator).user)
end
scenario 'Index' do
visit admin_settings_path
expect(page).to have_content @setting1.key.classify
expect(page).to have_content @setting2.key.classify
expect(page).to have_content @setting3.key.classify
end
scenario 'Update' do
visit admin_settings_path
within("#edit_setting_#{@setting2.id}") do
fill_in "setting_#{@setting2.id}", with: 'Super Users of level 2'
click_button 'Update Setting'
end
expect(page).to have_content 'Setting updated!'
end
end