DraftVersion base model and very basic admin pages
This commit is contained in:
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
12
app/models/legislation/draft_version.rb
Normal file
12
app/models/legislation/draft_version.rb
Normal 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
|
||||
@@ -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
|
||||
|
||||
72
app/views/admin/legislation/draft_versions/_form.html.erb
Normal file
72
app/views/admin/legislation/draft_versions/_form.html.erb
Normal 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">×</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 %>
|
||||
21
app/views/admin/legislation/draft_versions/edit.html.erb
Normal file
21
app/views/admin/legislation/draft_versions/edit.html.erb
Normal 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>
|
||||
38
app/views/admin/legislation/draft_versions/index.html.erb
Normal file
38
app/views/admin/legislation/draft_versions/index.html.erb
Normal 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>
|
||||
17
app/views/admin/legislation/draft_versions/new.html.erb
Normal file
17
app/views/admin/legislation/draft_versions/new.html.erb
Normal 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>
|
||||
8
app/views/admin/legislation/processes/_subnav.html.erb
Normal file
8
app/views/admin/legislation/processes/_subnav.html.erb
Normal 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>
|
||||
@@ -8,6 +8,8 @@
|
||||
|
||||
<h1><%= @process.title %></h1>
|
||||
|
||||
<%= render 'subnav', process: @process, active: 'info' %>
|
||||
|
||||
<%= render "form" %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -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' %>
|
||||
|
||||
Reference in New Issue
Block a user