diff --git a/Gemfile b/Gemfile index b50540b5f..d5a704569 100644 --- a/Gemfile +++ b/Gemfile @@ -65,6 +65,8 @@ gem 'browser' gem 'turnout', '~> 2.4.0' gem 'redcarpet' +gem 'rails-assets-markdown-it', source: 'https://rails-assets.org' + group :development, :test do # Call 'byebug' anywhere in the code to stop execution and get a debugger console gem 'byebug' diff --git a/Gemfile.lock b/Gemfile.lock index d787b4a81..836550667 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,5 +1,6 @@ GEM remote: https://rubygems.org/ + remote: https://rails-assets.org/ specs: actionmailer (4.2.7.1) actionpack (= 4.2.7.1) @@ -303,6 +304,7 @@ GEM bundler (>= 1.3.0, < 2.0) railties (= 4.2.7.1) sprockets-rails + rails-assets-markdown-it (8.2.1) rails-deprecated_sanitizer (1.0.3) activesupport (>= 4.2.0.alpha) rails-dom-testing (1.0.7) @@ -504,6 +506,7 @@ DEPENDENCIES poltergeist quiet_assets rails (= 4.2.7.1) + rails-assets-markdown-it! redcarpet responders (~> 2.3.0) rinku (~> 2.0.2) diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index 10339e995..a23c3ed19 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -46,6 +46,8 @@ //= require embed_video //= require banners //= require social_share +//= require markdown-it +//= require markdown_editor //= require custom var initialize_modules = function() { @@ -68,6 +70,7 @@ var initialize_modules = function() { App.EmbedVideo.initialize(); App.Banners.initialize(); App.SocialShare.initialize(); + App.MarkdownEditor.initialize(); }; $(function(){ diff --git a/app/assets/javascripts/markdown_editor.js.coffee b/app/assets/javascripts/markdown_editor.js.coffee new file mode 100644 index 000000000..0afd8c9e9 --- /dev/null +++ b/app/assets/javascripts/markdown_editor.js.coffee @@ -0,0 +1,20 @@ +App.MarkdownEditor = + + refresh_preview: (element, md) -> + textarea_content = element.find('textarea').val() + result = md.render(textarea_content) + element.find('#markdown-preview').html(result) + + initialize: -> + $('.markdown-editor').each -> + md = window.markdownit({ + html: true, + breaks: true, + typographer: true, + }) + App.MarkdownEditor.refresh_preview($(this), md) + $(this).on 'change input paste keyup', -> + App.MarkdownEditor.refresh_preview($(this), md) + return + + diff --git a/app/views/admin/legislation/draft_versions/_form.html.erb b/app/views/admin/legislation/draft_versions/_form.html.erb index 67c21ba00..1363a188d 100644 --- a/app/views/admin/legislation/draft_versions/_form.html.erb +++ b/app/views/admin/legislation/draft_versions/_form.html.erb @@ -59,8 +59,13 @@