DraftVersion base model and very basic admin pages

This commit is contained in:
Amaia Castro
2016-12-06 12:10:20 +01:00
parent ea799169a0
commit e4fe499e66
24 changed files with 453 additions and 23 deletions

View File

@@ -0,0 +1,43 @@
class Admin::Legislation::DraftVersionsController < Admin::Legislation::BaseController
load_and_authorize_resource :process, class: "Legislation::Process"
load_and_authorize_resource :draft_version, class: "Legislation::DraftVersion", through: :process
def index
@draft_versions = @process.draft_versions
end
def create
@draft_version = @process.draft_versions.new(draft_version_params)
if @process.save
redirect_to admin_legislation_process_draft_versions_path
else
render :new
end
end
def update
if @draft_version.update(draft_version_params)
redirect_to admin_legislation_process_draft_versions_path
else
render :edit
end
end
def destroy
@draft_version.destroy
redirect_to admin_legislation_process_draft_versions_path
end
private
def draft_version_params
params.require(:legislation_draft_version).permit(
:legislation_process_id,
:title,
:changelog,
:status,
:final_version,
:body
)
end
end

View File

@@ -17,7 +17,6 @@ class Admin::Legislation::ProcessesController < Admin::Legislation::BaseControll
end
def update
@process.assign_attributes(process_params)
if @process.update(process_params)
redirect_to admin_legislation_processes_path
else

View File

@@ -45,6 +45,7 @@ module Abilities
can [:search, :edit, :update, :create, :index, :destroy], Banner
can [:manage], ::Legislation::Process
can [:manage], ::Legislation::DraftVersion
end
end
end

View File

@@ -0,0 +1,12 @@
class Legislation::DraftVersion < ActiveRecord::Base
VALID_STATUSES = %w(draft published)
acts_as_paranoid column: :hidden_at
include ActsAsParanoidAliases
belongs_to :process, class_name: 'Legislation::Process', foreign_key: 'legislation_process_id'
validates :title, presence: true
validates :body, presence: true
validates :status, presence: true, inclusion: { in: VALID_STATUSES }
end

View File

@@ -2,6 +2,8 @@ class Legislation::Process < ActiveRecord::Base
acts_as_paranoid column: :hidden_at
include ActsAsParanoidAliases
has_many :draft_versions, class_name: 'Legislation::DraftVersion', foreign_key: 'legislation_process_id'
validates :title, presence: true
validates :description, presence: true
validates :target, presence: true

View File

@@ -0,0 +1,72 @@
<%= form_for [:admin, @process, @draft_version], url: url do |f| %>
<% if @draft_version.errors.any? %>
<div id="error_explanation" data-alert class="callout alert" data-closable>
<button class="close-button" aria-label="<%= t("application.close") %>" type="button" data-close>
<span aria-hidden="true">&times;</span>
</button>
<strong>
<%= @draft_version.errors.count %>
<%= t("admin.legislation.draft_versions.errors.form.error", count: @process.errors.count) %>
</strong>
</div>
<% end %>
<div class="row">
<div class="small-12 medium-4 column">
<%= f.label :title %>
</div>
<div class="small-12 medium-8 column">
<%= f.text_field :title, label: false %>
</div>
</div>
<div class="row">
<div class="small-12 medium-4 column">
<%= f.label :changelog %>
</div>
<div class="small-12 medium-8 column">
<%= f.text_area :changelog, label: false, rows: 5 %>
</div>
</div>
<div class="row">
<div class="small-12 medium-4 column">
<%= f.label :status %>
</div>
<div class="small-12 medium-8 column">
<% ::Legislation::DraftVersion::VALID_STATUSES.each do |status| %>
<%= f.radio_button :status, status, label: false %>
<%= f.label t("admin.legislation.draft_versions.statuses.#{status}") %>
<br/>
<% end %>
</div>
</div>
<div class="row">
<div class="small-12 medium-4 column">
<%= f.label :final_version %>
</div>
<div class="small-12 medium-8 column">
<%= f.check_box :final_version, label: false %>
</div>
</div>
<div class="row">
<div class="small-12 medium-4 column">
<%= f.label :body %>
</div>
<div class="small-12 medium-8 column">
<%= f.text_area :body, label: false, rows: 15 %>
</div>
</div>
<div class="row">
<div class="actions small-12 medium-3 column">
<%= f.submit(class: "button expanded", value: t("admin.legislation.draft_versions.#{admin_submit_action(@draft_version)}.submit_button")) %>
</div>
</div>
<% end %>

View File

@@ -0,0 +1,21 @@
<div class="legislation-draft-versions-index row">
<div class="small-12 column">
<%= link_to admin_legislation_processes_path, class: "back" do %>
<span class="icon-angle-left"></span>
<%= t("admin.legislation.draft_versions.edit.back") %>
<% end %>
<h1><%= @process.title %></h1>
<%= render 'admin/legislation/processes/subnav', process: @process, active: 'draft_versions' %>
<h3><%= @draft_version.title %></h3>
<%= render 'form', url: admin_legislation_process_draft_version_path(@process, @draft_version) %>
<%= link_to t("admin.legislation.processes.index.delete"), admin_legislation_process_draft_version_path(@process, @draft_version),
method: :delete,
class: 'button hollow alert' %>
</div>
</div>

View File

@@ -0,0 +1,38 @@
<div class="legislation-draft-versions-index row">
<div class="small-12 column">
<%= link_to admin_legislation_processes_path, class: "back" do %>
<span class="icon-angle-left"></span>
<%= t("admin.legislation.processes.edit.back") %>
<% end %>
<h1><%= @process.title %></h1>
<%= render 'admin/legislation/processes/subnav', process: @process, active: 'draft_versions' %>
<%= link_to t("admin.legislation.draft_versions.index.create"),
new_admin_legislation_process_draft_version_path, class: "button float-right" %>
<h3><%= t("admin.legislation.draft_versions.index.title") %></h3>
<table>
<tr>
<th><%= t("admin.legislation.draft_versions.table.title") %></th>
<th><%= t("admin.legislation.draft_versions.table.created_at") %></th>
<th><%= t("admin.legislation.draft_versions.table.status") %></th>
<th><%= t("admin.legislation.draft_versions.table.comments") %></th>
<th><%= t("admin.legislation.draft_versions.table.final_version") %></th>
</tr>
<% @process.draft_versions.each do |draft_version| %>
<tr id="<%= dom_id(draft_version) %>">
<td>
<%= link_to draft_version.title, edit_admin_legislation_process_draft_version_path(@process, draft_version) %>
</td>
<td><%= draft_version.created_at.to_date %></td>
<td><%= draft_version.status %></td>
<td><%#= draft_version.comments %></td>
<td><%= draft_version.final_version %></td>
</tr>
<% end %>
</table>
</div>
</div>

View File

@@ -0,0 +1,17 @@
<div class="legislation-draft-versions-index row">
<div class="small-12 column">
<%= link_to admin_legislation_processes_path, class: "back" do %>
<span class="icon-angle-left"></span>
<%= t("admin.legislation.draft_versions.new.back") %>
<% end %>
<h1><%= @process.title %></h1>
<%= render 'admin/legislation/processes/subnav', process: @process, active: 'draft_versions' %>
<h3><%= t("admin.legislation.draft_versions.new.title") %></h3>
<%= render 'form', url: admin_legislation_process_draft_versions_path(@process) %>
</div>
</div>

View File

@@ -0,0 +1,8 @@
<ul class="menu simple clear">
<li <%= "class=active" if active == 'info' %>>
<%= link_to t("admin.legislation.processes.subnav.info"), edit_admin_legislation_process_path(process) %>
</li>
<li <%= "class=active" if active == 'draft_versions' %>>
<%= link_to t("admin.legislation.processes.subnav.draft_texts"), admin_legislation_process_draft_versions_path(process) %>
</li>
</ul>

View File

@@ -8,6 +8,8 @@
<h1><%= @process.title %></h1>
<%= render 'subnav', process: @process, active: 'info' %>
<%= render "form" %>
</div>
</div>

View File

@@ -19,9 +19,6 @@
</td>
<td class="text-right">
<%= link_to t("admin.legislation.processes.index.edit"), edit_admin_legislation_process_path(process),
class: 'edit-banner button hollow' %>
<%= link_to t("admin.legislation.processes.index.delete"), admin_legislation_process_path(process),
method: :delete,
class: 'button hollow alert' %>