adds admin creation of budgets

This commit is contained in:
Juanjo Bazán
2016-07-29 13:34:41 +02:00
parent 9014de2693
commit 6fce9df451
6 changed files with 67 additions and 135 deletions

View File

@@ -7,6 +7,22 @@ class Admin::BudgetsController < Admin::BaseController
end end
def new def new
@budget = Budget.new
end end
def create
@budget = Budget.new(budget_params)
if @budget.save
redirect_to admin_budgets_path, notice: t('admin.budgets.create.notice')
else
render :new
end
end
private
def budget_params
params.require(:budget).permit(:name, :description, :phase, :currency_symbol)
end
end end

View File

@@ -2,142 +2,29 @@
<div class="small-12 medium-9 column"> <div class="small-12 medium-9 column">
<h2><%= t("admin.budgets.new.title") %></h2> <h2><%= t("admin.budgets.new.title") %></h2>
<form> <%= form_for [:admin, @budget] do |f| %>
<label><%= t("admin.budgets.new.name") %></label>
<input type="text" placeholder="<%= t("admin.budgets.new.name") %>"> <%= f.label :name, t("admin.budgets.new.name") %>
<label><%= t("admin.budgets.new.description") %></label> <%= f.text_field :name,
<textarea rows="3" placeholder="<%= t("admin.budgets.new.description") %>"></textarea> label: false,
maxlength: 30,
placeholder: t("admin.budgets.new.name") %>
<%= f.label :description, t("admin.budgets.new.description") %>
<%= f.text_area :description, rows: 3, maxlength: 6000, label: false, placeholder: t("admin.budgets.new.description") %>
<div class="row"> <div class="row">
<div class="small-12 medium-9 column"> <div class="small-12 medium-9 column">
<select> <%= f.label :description, t("admin.budgets.new.phase") %>
<option><%= t("admin.budgets.new.phase") %></option> <%= f.select :phase, budget_phases_select_options, {label: false} %>
<option>Seleccionando</option>
<option>Votación final</option>
<option>Terminado</option>
</select>
</div> </div>
<div class="small-12 medium-3 column"> <div class="small-12 medium-3 column">
<select> <%= f.label :description, t("admin.budgets.new.currency") %>
<option><%= t("admin.budgets.new.currency") %></option> <%= f.select :currency_symbol, budget_currency_symbol_select_options, {label: false} %>
<option>€</option>
<option>$</option>
<option>£</option>
<option>¥</option>
</select>
</div> </div>
</div> </div>
<input type="submit" value="<%= t("admin.budgets.new.create") %>" class="button success"> <input type="submit" value="<%= t("admin.budgets.new.create") %>" class="button success">
</form> <% end %>
</div> </div>
</div> </div>
<div class="row">
<div class="small-12 column">
<h3 class="inline-block">Nombre del budget</h3>
<%= link_to t("admin.budgets.new.add_group"), "#", class: "button float-right" %>
<form>
<div class="input-group">
<span class="input-group-label">
<label><%= t("admin.budgets.new.group") %></label>
</span>
<input type="text" placeholder="<%= t("admin.budgets.new.group") %>">
<div class="input-group-button">
<input type="submit" value="<%= t("admin.budgets.new.create_group") %>", class="button success">
</div>
</div>
</form>
</div>
</div>
<div class="row">
<div class="small-12 column">
<table>
<thead>
<tr>
<th colspan="3" class="with-button">
Nombre del grupo
<%= link_to t("admin.budgets.new.add_heading"), "#", class: "button float-right" %>
</th>
</tr>
<tr>
<th><%= t("admin.budgets.new.table_heading") %></th>
<th><%= t("admin.budgets.new.table_amount") %></th>
<th><%= t("admin.budgets.new.table_geozone") %></th>
</tr>
</thead>
<tbody>
<!-- if heading == 0 -->
<tr>
<td colspan="3">
<div class="callout primary">
<%= t("admin.budgets.new.no_heading") %>
</div>
</td>
</tr>
<!-- end -->
<!-- new heading form -->
<tr>
<td colspan="3">
<form>
<label><%= t("admin.budgets.new.heading") %></label>
<input type="text" placeholder="<%= t("admin.budgets.new.heading") %>">
<div class="row">
<div class="small-12 medium-6 column">
<label><%= t("admin.budgets.new.amount") %></label>
<input type="text" placeholder="<%= t("admin.budgets.new.amount") %>">
</div>
<div class="small-12 medium-6 column">
<label><%= t("admin.budgets.new.geozone") %></label>
<select>
<option><%= t("admin.budgets.new.no_geozone") %></option>
</select>
</div>
</div>
<input type="submit" value="<%= t("admin.budgets.new.save_heading") %>", class="button success">
</form>
</td>
</tr>
<!-- /. new heading form -->
<!-- headings list -->
<tr>
<td>
Heading 1 name
</td>
<td>
190.000€
</td>
<td>
Geozone B
</td>
</tr>
<tr>
<td>
Heading 2 name
</td>
<td>
24.000.000€
</td>
<td>
Does not apply
</td>
</tr>
<tr>
<td>
Heading 3 name
</td>
<td>
1.265.000€
</td>
<td>
Geozone A
</td>
</tr>
<!-- /. headings list -->
</tbody>
</table>
</div>
</div>

View File

@@ -65,6 +65,8 @@ en:
filters: filters:
open: Open open: Open
finished: Finished finished: Finished
create:
notice: New participatory budget created successfully!
new: new:
title: New participatory budget title: New participatory budget
create: Create budget create: Create budget

View File

@@ -65,6 +65,8 @@ es:
filters: filters:
open: Abiertos open: Abiertos
finished: Terminados finished: Terminados
create:
notice: ¡Nueva campaña de presupuestos participativos creada con éxito!
new: new:
title: Nuevo presupuesto ciudadano title: Nuevo presupuesto ciudadano
create: Crear presupuesto create: Crear presupuesto

View File

@@ -35,7 +35,7 @@ es:
menu: Menú menu: Menú
budget: budget:
phase: phase:
on_hold: Pausa on_hold: En pausa
accepting: Aceptando propuestas accepting: Aceptando propuestas
selecting: Fase de selección selecting: Fase de selección
balloting: Fase de Votación balloting: Fase de Votación

View File

@@ -7,7 +7,7 @@ feature 'Admin budgets' do
login_as(admin.user) login_as(admin.user)
end end
context "Feature flag" do context 'Feature flag' do
xscenario 'Disabled with a feature flag' do xscenario 'Disabled with a feature flag' do
Setting['feature.budgets'] = nil Setting['feature.budgets'] = nil
@@ -16,7 +16,7 @@ feature 'Admin budgets' do
end end
context "Index" do context 'Index' do
scenario 'Displaying budgets' do scenario 'Displaying budgets' do
budget = create(:budget) budget = create(:budget)
@@ -40,14 +40,14 @@ feature 'Admin budgets' do
expect(page).to have_content(budget4.name) expect(page).to have_content(budget4.name)
expect(page).to_not have_content(budget5.name) expect(page).to_not have_content(budget5.name)
click_link "Finished" click_link 'Finished'
expect(page).to_not have_content(budget1.name) expect(page).to_not have_content(budget1.name)
expect(page).to_not have_content(budget2.name) expect(page).to_not have_content(budget2.name)
expect(page).to_not have_content(budget3.name) expect(page).to_not have_content(budget3.name)
expect(page).to_not have_content(budget4.name) expect(page).to_not have_content(budget4.name)
expect(page).to have_content(budget5.name) expect(page).to have_content(budget5.name)
click_link "Open" click_link 'Open'
expect(page).to have_content(budget1.name) expect(page).to have_content(budget1.name)
expect(page).to have_content(budget2.name) expect(page).to have_content(budget2.name)
expect(page).to have_content(budget3.name) expect(page).to have_content(budget3.name)
@@ -56,7 +56,7 @@ feature 'Admin budgets' do
end end
scenario "Current filter is properly highlighted" do scenario 'Current filter is properly highlighted' do
filters_links = {'open' => 'Open', 'finished' => 'Finished'} filters_links = {'open' => 'Open', 'finished' => 'Finished'}
visit admin_budgets_path visit admin_budgets_path
@@ -76,4 +76,29 @@ feature 'Admin budgets' do
end end
end end
context 'New' do
scenario 'Create budget' do
visit admin_budgets_path
click_link 'Create new'
fill_in 'budget_name', with: 'M30 - Summer campaign'
fill_in 'budget_description', with: 'Budgeting for summer 2017 maintenance and improvements of the road M-30'
select 'Accepting proposals', from: 'budget[phase]'
click_button 'Create budget'
expect(page).to have_content 'New participatory budget created successfully!'
expect(page).to have_content 'M30 - Summer campaign'
end
scenario 'Name is mandatory' do
visit new_admin_budget_path
click_button 'Create budget'
expect(page).to_not have_content 'New participatory budget created successfully!'
expect(page).to have_css("label.error", text: "Budget's name")
end
end
end end