changeset 402:a18e19139f57

Markdown preview \o/
author nanaya <me@myconan.net>
date Sun, 06 Sep 2015 04:20:50 +0900
parents 6bb805283daf
children e0626046579a
files app/assets/javascripts/application.coffee app/views/pastes/new.html.erb config/locales/en.yml
diffstat 3 files changed, 39 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/app/assets/javascripts/application.coffee	Sun Sep 06 04:01:22 2015 +0900
+++ b/app/assets/javascripts/application.coffee	Sun Sep 06 04:20:50 2015 +0900
@@ -11,7 +11,7 @@
 
 
 pasteText = ->
-  $(".js-paste-pl").text()
+  $(".js-paste-paste").val() || $(".js-paste-pl").text()
 
 
 setHash = (newLocation = window.location.pathname) ->
@@ -21,6 +21,12 @@
   history.replaceState null, "", newLocation
 
 
+markdownfy = (plaintext) ->
+  reader = new commonmark.Parser
+  writer = new commonmark.HtmlRenderer(safe: true)
+  writer.render reader.parse(plaintext)
+
+
 $(document).on "click", ".js-show-tab-pl", ->
   setHash()
 
@@ -43,14 +49,17 @@
   $mdBox = $(".js-paste-md")
   return if $mdBox.data("processed")
 
-  reader = new commonmark.Parser
-  writer = new commonmark.HtmlRenderer(safe: true)
-  parsed = reader.parse pasteText()
-
-  $mdBox.html writer.render(parsed)
+  $mdBox.html markdownfy(pasteText())
   $mdBox.find("a").attr("rel", "nofollow")
   $mdBox.data "processed", true
 
+
+$(document).on "click", ".js-paste-preview-md", ->
+  return if pasteText() == ""
+  $(".js-paste-preview-md-box").html markdownfy(pasteText())
+  $(".js-paste-preview-md-modal").modal "show"
+
+
 $(document).on "ready", ->
   return if $(".js-showing-paste").length < 1
 
--- a/app/views/pastes/new.html.erb	Sun Sep 06 04:01:22 2015 +0900
+++ b/app/views/pastes/new.html.erb	Sun Sep 06 04:20:50 2015 +0900
@@ -1,4 +1,5 @@
 <% provide :title, t(".title") %>
+
 <%= form_for @paste do |f| %>
   <%= render "shared/filter_spam" %>
 
@@ -6,6 +7,13 @@
     <%= f.text_area :paste, :autofocus => true, :class => "form-control paste-paste js-paste-paste", :rows => 20 %>
   </div>
 
+
+  <div class="row"><div class="col-xs-12">
+      <%= link_to t(".preview_md"), "#",
+          :class => "btn btn-default js-paste-preview-md pull-right"
+      %>
+  </div>
+
   <div class="form-horizontal">
     <div class="form-group <%= error_class f.object, :key %>">
       <%= f.label :key, t(".deletion_key"), :class => "col-sm-2 control-label" %>
@@ -36,3 +44,17 @@
     </div></div>
   </div>
 <% end %>
+
+<div class="modal fade js-paste-preview-md-modal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
+  <div class="modal-dialog" role="document">
+    <div class="modal-content">
+      <div class="modal-body js-paste-preview-md-box">
+      </div>
+      <div class="modal-footer">
+        <button type="button" class="btn btn-default" data-dismiss="modal">
+          <%= t(".close") %>
+        </button>
+      </div>
+    </div>
+  </div>
+</div>
--- a/config/locales/en.yml	Sun Sep 06 04:01:22 2015 +0900
+++ b/config/locales/en.yml	Sun Sep 06 04:20:50 2015 +0900
@@ -10,7 +10,9 @@
   pastes:
     new:
       clear: Clear
+      close: Close
       deletion_key: Deletion Key
+      preview_md: Preview Markdown
       privacy:
         label: Privacy
         private: Private