diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index 10f108e7b..01e74400a 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -50,8 +50,7 @@ //= require markdown_editor //= require cocoon //= require allegations -//= require legislation_debate -//= require legislation_questions +//= require legislation //= require custom var initialize_modules = function() { @@ -76,8 +75,7 @@ var initialize_modules = function() { App.SocialShare.initialize(); App.MarkdownEditor.initialize(); App.Allegations.initialize(); - App.LegislationDebate.initialize(); - App.LegislationQuestions.initialize(); + App.Legislation.initialize(); }; $(function(){ diff --git a/app/assets/javascripts/legislation.js.coffee b/app/assets/javascripts/legislation.js.coffee new file mode 100644 index 000000000..8ed109482 --- /dev/null +++ b/app/assets/javascripts/legislation.js.coffee @@ -0,0 +1,16 @@ +App.Legislation = + + initialize: -> + $('#js-toggle-debate').on + click: -> + $('#debate-info').toggle() + + $('form#new_legislation_answer input.button').hide() + $('form#new_legislation_answer input[type=radio]').on + click: -> + $('form#new_legislation_answer').submit() + + $('form#draft_version_go_to_version input.button').hide() + $('form#draft_version_go_to_version select').on + change: -> + $('form#draft_version_go_to_version').submit() diff --git a/app/assets/javascripts/legislation_debate.js.coffee b/app/assets/javascripts/legislation_debate.js.coffee deleted file mode 100644 index 17091e946..000000000 --- a/app/assets/javascripts/legislation_debate.js.coffee +++ /dev/null @@ -1,6 +0,0 @@ -App.LegislationDebate = - - initialize: -> - $('#js-toggle-debate').on - click: -> - $('#debate-info').toggle() diff --git a/app/assets/javascripts/legislation_questions.js.coffee b/app/assets/javascripts/legislation_questions.js.coffee deleted file mode 100644 index f8bea46f3..000000000 --- a/app/assets/javascripts/legislation_questions.js.coffee +++ /dev/null @@ -1,8 +0,0 @@ -App.LegislationQuestions = - - initialize: -> - $('form#new_legislation_answer input.button').hide() - $('form#new_legislation_answer input[type=radio]').on - click: -> - $('form#new_legislation_answer').submit() - diff --git a/app/assets/javascripts/markdown_editor.js.coffee b/app/assets/javascripts/markdown_editor.js.coffee index 9065717fc..121f74ce4 100644 --- a/app/assets/javascripts/markdown_editor.js.coffee +++ b/app/assets/javascripts/markdown_editor.js.coffee @@ -4,7 +4,6 @@ App.MarkdownEditor = textarea_content = element.find('textarea').val() result = md.render(textarea_content) element.find('#markdown-preview').html(result) - element.find('#markdown-result input').val(result) initialize: -> $('.markdown-editor').each -> diff --git a/app/controllers/legislation/draft_versions_controller.rb b/app/controllers/legislation/draft_versions_controller.rb index 6956f11b6..0b6af46a6 100644 --- a/app/controllers/legislation/draft_versions_controller.rb +++ b/app/controllers/legislation/draft_versions_controller.rb @@ -6,9 +6,33 @@ class Legislation::DraftVersionsController < Legislation::BaseController end def show + @draft_versions_list = visible_draft_versions + @draft_version = @draft_versions_list.find(params[:id]) end def changes - @draft_version = @process.draft_versions.find(params[:draft_version_id]) + @draft_versions_list = visible_draft_versions + @draft_version = @draft_versions_list.find(params[:draft_version_id]) end + + def go_to_version + version = visible_draft_versions.find(params[:draft_version_id]) + + if params[:redirect_action] == 'changes' + redirect_to legislation_process_draft_version_changes_path(@process, version) + else + redirect_to legislation_process_draft_version_path(@process, version) + end + end + + private + + def visible_draft_versions + if current_user && current_user.administrator? + @process.draft_versions + else + @process.draft_versions.published + end + end + end diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 1f52f0eea..313375e3f 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -18,6 +18,8 @@ module ApplicationHelper end def markdown(text) + return text if text.blank? + # See https://github.com/vmg/redcarpet for options render_options = { filter_html: false, diff --git a/app/models/abilities/everyone.rb b/app/models/abilities/everyone.rb index 466b6a5ba..b71e1f7d5 100644 --- a/app/models/abilities/everyone.rb +++ b/app/models/abilities/everyone.rb @@ -12,7 +12,7 @@ module Abilities can [:search, :read], Annotation can :new, DirectMessage can [:read, :draft_publication, :allegations, :final_version_publication], Legislation::Process - can [:read], Legislation::DraftVersion + can [:read, :changes, :go_to_version], Legislation::DraftVersion can [:read], Legislation::Question can [:create], Legislation::Answer end diff --git a/app/models/legislation/draft_version.rb b/app/models/legislation/draft_version.rb index 562e48cea..29b22e5a6 100644 --- a/app/models/legislation/draft_version.rb +++ b/app/models/legislation/draft_version.rb @@ -10,13 +10,19 @@ class Legislation::DraftVersion < ActiveRecord::Base validates :body, presence: true validates :status, presence: true, inclusion: { in: VALID_STATUSES } - def body_in_html + scope :published, -> { where(status: 'published').order('id DESC') } + + before_save :render_html + + def render_html renderer = Redcarpet::Render::HTML.new(with_toc_data: true) toc_renderer = Redcarpet::Render::HTML_TOC.new(with_toc_data: true) - body_html = Redcarpet::Markdown.new(renderer).render(body) - toc = Redcarpet::Markdown.new(toc_renderer).render(body) + self.body_html = Redcarpet::Markdown.new(renderer).render(body) + self.toc_html = Redcarpet::Markdown.new(toc_renderer).render(body) + end - return toc, body_html + def display_title + status == 'draft' ? "#{title} *" : title end end diff --git a/app/models/legislation/process.rb b/app/models/legislation/process.rb index 995aedb9e..566ff075e 100644 --- a/app/models/legislation/process.rb +++ b/app/models/legislation/process.rb @@ -3,7 +3,7 @@ class Legislation::Process < ActiveRecord::Base include ActsAsParanoidAliases has_many :draft_versions, -> { order(:id) }, class_name: 'Legislation::DraftVersion', foreign_key: 'legislation_process_id' - has_one :final_draft_version, -> { where final_version: true }, class_name: 'Legislation::DraftVersion', foreign_key: 'legislation_process_id' + has_one :final_draft_version, -> { where final_version: true, status: 'published' }, class_name: 'Legislation::DraftVersion', foreign_key: 'legislation_process_id' has_many :questions, -> { order(:id) }, class_name: 'Legislation::Question', foreign_key: 'legislation_process_id' validates :title, presence: true diff --git a/app/views/admin/legislation/draft_versions/_form.html.erb b/app/views/admin/legislation/draft_versions/_form.html.erb index a217580d6..be3c5067f 100644 --- a/app/views/admin/legislation/draft_versions/_form.html.erb +++ b/app/views/admin/legislation/draft_versions/_form.html.erb @@ -69,7 +69,6 @@
Some paragraph.
+ +A list:
+ +Another paragraph.
+ +Something about this.
+BODY_HTML + end + + def toc_html +<<-TOC_HTML + +TOC_HTML + end end