dante-editor 0.0.7 → 0.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +11 -3
- data/app/assets/javascripts/dante/editor.js.coffee +151 -33
- data/app/assets/javascripts/dante/menu.js.coffee +3 -0
- data/app/assets/javascripts/dante/tooltip.js.coffee +21 -14
- data/app/assets/stylesheets/dante/_fonts.scss +8 -8
- data/app/assets/stylesheets/dante/_graf.scss +9 -0
- data/app/assets/stylesheets/dante/_utilities.scss +35 -0
- data/bower.json +1 -1
- data/dist/0.0.7/js/dante-editor.js +216 -9
- data/dist/0.0.8/css/dante-editor.css +1116 -0
- data/dist/0.0.8/fonts/dante/dante.eot +0 -0
- data/dist/0.0.8/fonts/dante/dante.svg +14 -0
- data/dist/0.0.8/fonts/dante/dante.ttf +0 -0
- data/dist/0.0.8/fonts/dante/dante.woff +0 -0
- data/dist/0.0.8/fonts/dante/fontello.eot +0 -0
- data/dist/0.0.8/fonts/dante/fontello.svg +36 -0
- data/dist/0.0.8/fonts/dante/fontello.ttf +0 -0
- data/dist/0.0.8/fonts/dante/fontello.woff +0 -0
- data/dist/0.0.8/images/dante/media-loading-placeholder.png +0 -0
- data/dist/0.0.8/js/dante-editor.js +2532 -0
- data/lib/dante-editor/version.rb +1 -1
- data/{icons → source/icons}/dante.json +0 -0
- data/{icons → source/icons}/embed.svg +0 -0
- data/{icons → source/icons}/image.svg +0 -0
- data/{icons → source/icons}/plus.svg +0 -0
- data/{icons → source/icons}/video.svg +0 -0
- data/source/lists.html.erb +18 -0
- data/source/partials/_lists.erb +13 -0
- metadata +20 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: eedf5900c356c7db2f6c2a506a3c36023327a52a
|
4
|
+
data.tar.gz: ece1127158d6ed6c86311f7ca034a81194618778
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 41352cf754791ce8c712c582c8670a5d924c07d56b1313f2cab57e178bcfa36f0d5b59f32ff32605ba791b33ec6d61eb236e39795405b6d22b3be1edd3edd7d7
|
7
|
+
data.tar.gz: 4902b6a415b936025f9f7f26db7a4ff3cf5fc81b1c3fa97b5d6acd1d4fad43ecc7d0a9dfea44bcb5cb2455361ed0805f2a7ed46df1b91a42fbc713582215d5e2
|
data/README.md
CHANGED
@@ -26,6 +26,7 @@ Until now I´ve been able to implement the following features:
|
|
26
26
|
+ Image Uploader with *preview* and caption option.
|
27
27
|
+ Embed data for pasted link through OEmbed services.
|
28
28
|
+ Embed media information for pasted links through OEmbed services.
|
29
|
+
+ List creation with shorcuts ie:. 1. , - , 1) with spacebar or return key
|
29
30
|
+ CSS tries to use the same fonts used in Medium, (if you have already setup those fonts) or fallbacks to open fonts (by Google fonts) or system fonts.
|
30
31
|
+ serif: freight-text-pro fallbacks to Merriweather or Georgia,
|
31
32
|
+ sans: jaf-bernino-sans fallbacks to Open Sans or Lucida Grande
|
@@ -60,7 +61,7 @@ Until now I´ve been able to implement the following features:
|
|
60
61
|
### Configuration options:
|
61
62
|
|
62
63
|
+ **el:** default: #editor
|
63
|
-
+ **
|
64
|
+
+ **debug:** default: false
|
64
65
|
+ **upload_url:** default: /uploads.json
|
65
66
|
+ **oembed_url:** default: http://api.embed.ly/1/oembed?url="
|
66
67
|
+ **extract_url:** default: http://api.embed.ly/1/extract?url="
|
@@ -112,6 +113,7 @@ There is a web app for development to work with the source files and make the pr
|
|
112
113
|
|
113
114
|
+ install ruby
|
114
115
|
+ execute `bundle install`
|
116
|
+
+ execute `bower install`
|
115
117
|
|
116
118
|
### Start app:
|
117
119
|
|
@@ -139,7 +141,13 @@ tests are located in source/tests and /source/assets/spec folder and accessible
|
|
139
141
|
+ [Miguel Michelson](http://github.com/michelson)
|
140
142
|
+ [Cristian Ferrari](http://github.com/cristianferrarig)
|
141
143
|
|
142
|
-
###
|
144
|
+
### CONTRIBUTORS
|
145
|
+
|
146
|
+
Big kudos to our valued contributors. Check them all at:
|
147
|
+
|
148
|
+
https://github.com/michelson/dante/graphs/contributors
|
149
|
+
|
150
|
+
### ALTERNATIVES
|
143
151
|
|
144
152
|
+ https://github.com/sofish/pen
|
145
153
|
+ https://github.com/orthes/medium-editor-insert-plugin
|
@@ -152,4 +160,4 @@ tests are located in source/tests and /source/assets/spec folder and accessible
|
|
152
160
|
|
153
161
|
### LICENSE
|
154
162
|
|
155
|
-
[Licensed under MIT.](./license.md) 2014
|
163
|
+
[Licensed under MIT.](./license.md) 2014
|
@@ -13,6 +13,9 @@ class Dante.Editor extends Dante.View
|
|
13
13
|
"drop" : "handleDrag"
|
14
14
|
"click .graf--figure .aspectRatioPlaceholder" : "handleGrafFigureSelectImg"
|
15
15
|
"click .graf--figure figcaption" : "handleGrafFigureSelectCaption"
|
16
|
+
|
17
|
+
"mouseover .graf--figure.graf--iframe" : "handleGrafFigureSelectIframe"
|
18
|
+
"mouseleave .graf--figure.graf--iframe" : "handleGrafFigureUnSelectIframe"
|
16
19
|
"keyup .graf--figure figcaption" : "handleGrafCaptionTyping"
|
17
20
|
|
18
21
|
"mouseover .markup--anchor" : "displayPopOver"
|
@@ -33,6 +36,7 @@ class Dante.Editor extends Dante.View
|
|
33
36
|
@spell_check = opts.spellcheck || false
|
34
37
|
@disable_title = opts.disable_title || false
|
35
38
|
@store_interval = opts.store_interval || 15000
|
39
|
+
@paste_element_id = "#dante-paste-div"
|
36
40
|
window.debugMode = opts.debug || false
|
37
41
|
$(@el).addClass("debug") if window.debugMode
|
38
42
|
if (localStorage.getItem('contenteditable'))
|
@@ -151,7 +155,7 @@ class Dante.Editor extends Dante.View
|
|
151
155
|
range = range || this.current_range
|
152
156
|
if !range
|
153
157
|
range = this.getRange()
|
154
|
-
range.collapse(false)
|
158
|
+
range.collapse(false) # set to end
|
155
159
|
|
156
160
|
@selection().removeAllRanges()
|
157
161
|
@selection().addRange(range)
|
@@ -233,8 +237,14 @@ class Dante.Editor extends Dante.View
|
|
233
237
|
range = @selection().getRangeAt(0)
|
234
238
|
node = range.commonAncestorContainer
|
235
239
|
return null if not node or node is root
|
236
|
-
|
237
|
-
node = node.parentNode
|
240
|
+
|
241
|
+
#node = node.parentNode while node and (node.nodeType isnt 1) and (node.parentNode isnt root)
|
242
|
+
#node = node.parentNode while node and (node.parentNode isnt root)
|
243
|
+
|
244
|
+
node = node.parentNode while node and (node.nodeType isnt 1 or not $(node).hasClass("graf")) and (node.parentNode isnt root)
|
245
|
+
if not $(node).hasClass("graf--li")
|
246
|
+
node = node.parentNode while node and (node.parentNode isnt root)
|
247
|
+
|
238
248
|
(if root && root.contains(node) then node else null)
|
239
249
|
|
240
250
|
displayMenu: (sel)->
|
@@ -290,6 +300,20 @@ class Dante.Editor extends Dante.View
|
|
290
300
|
$(element).parent(".graf--figure").addClass("is-selected is-mediaFocused")
|
291
301
|
@selection().removeAllRanges()
|
292
302
|
|
303
|
+
handleGrafFigureSelectIframe: (ev)->
|
304
|
+
utils.log "FIGURE IFRAME SELECT"
|
305
|
+
element = ev.currentTarget
|
306
|
+
@iframeSelected = element
|
307
|
+
@markAsSelected( element )
|
308
|
+
$(element).addClass("is-selected is-mediaFocused")
|
309
|
+
@selection().removeAllRanges()
|
310
|
+
|
311
|
+
handleGrafFigureUnSelectIframe: (ev)->
|
312
|
+
utils.log "FIGURE IFRAME UNSELECT"
|
313
|
+
element = ev.currentTarget
|
314
|
+
@iframeSelected = null
|
315
|
+
$(element).removeClass("is-selected is-mediaFocused")
|
316
|
+
|
293
317
|
handleGrafFigureSelectCaption: (ev)->
|
294
318
|
utils.log "FIGCAPTION"
|
295
319
|
element = ev.currentTarget
|
@@ -448,17 +472,20 @@ class Dante.Editor extends Dante.View
|
|
448
472
|
cbd = ev.originalEvent.clipboardData
|
449
473
|
pastedText = if _.isEmpty(cbd.getData('text/html')) then cbd.getData('text/plain') else cbd.getData('text/html')
|
450
474
|
|
451
|
-
utils.log(
|
475
|
+
utils.log("Process and handle text...")
|
452
476
|
#detect if is html
|
453
477
|
if pastedText.match(/<\/*[a-z][^>]+?>/gi)
|
454
478
|
utils.log("HTML DETECTED ON PASTE")
|
455
|
-
|
479
|
+
pastedText = pastedText.replace(/&.*;/g, "")
|
480
|
+
#convert pasted divs in p before copy contents into div
|
481
|
+
pastedText = pastedText.replace(/<div>([\w\W]*?)<\/div>/gi, '<p>$1</p>')
|
456
482
|
|
457
|
-
document.body.appendChild($("<div id='
|
458
|
-
$(
|
459
|
-
|
460
|
-
|
461
|
-
$(
|
483
|
+
document.body.appendChild($("<div id='#{@paste_element_id.replace('#', '')}'></div>")[0])
|
484
|
+
$(@paste_element_id).html("<span>#{pastedText}</span>")
|
485
|
+
|
486
|
+
@setupElementsClasses $(@paste_element_id), ()=>
|
487
|
+
nodes = $($(@paste_element_id).html()).insertAfter($(@aa))
|
488
|
+
$(@paste_element_id).remove()
|
462
489
|
#set caret on newly created node
|
463
490
|
last_node = nodes.last()[0]
|
464
491
|
num = last_node.childNodes.length
|
@@ -481,7 +508,6 @@ class Dante.Editor extends Dante.View
|
|
481
508
|
utils.log ("process image here!")
|
482
509
|
@tooltip_view.uploadExistentImage(image)
|
483
510
|
|
484
|
-
#TODO: remove this, not used
|
485
511
|
handleInmediateDeletion: (element)->
|
486
512
|
@inmediateDeletion = false
|
487
513
|
new_node = $( @baseParagraphTmpl() ).insertBefore( $(element) )
|
@@ -576,6 +602,7 @@ class Dante.Editor extends Dante.View
|
|
576
602
|
utils.log "KEYDOWN"
|
577
603
|
|
578
604
|
anchor_node = @getNode() #current node on which cursor is positioned
|
605
|
+
$node = $(anchor_node);
|
579
606
|
|
580
607
|
@markAsSelected( anchor_node ) if anchor_node
|
581
608
|
|
@@ -593,6 +620,13 @@ class Dante.Editor extends Dante.View
|
|
593
620
|
|
594
621
|
utils.log @isLastChar()
|
595
622
|
|
623
|
+
#smart list support
|
624
|
+
if $node.hasClass("graf--p")
|
625
|
+
li = @handleSmartList($node, e)
|
626
|
+
anchor_node = li if li
|
627
|
+
else if $node.hasClass("graf--li") and ($node.text() is "")
|
628
|
+
@handleListLineBreak($node, e)
|
629
|
+
|
596
630
|
#embeds or extracts
|
597
631
|
if parent.hasClass("is-embedable")
|
598
632
|
@tooltip_view.getEmbedFromNode($(anchor_node))
|
@@ -617,7 +651,6 @@ class Dante.Editor extends Dante.View
|
|
617
651
|
|
618
652
|
@tooltip_view.cleanOperationClasses($(anchor_node))
|
619
653
|
|
620
|
-
|
621
654
|
if (anchor_node && @editor_menu.lineBreakReg.test(anchor_node.nodeName))
|
622
655
|
#new paragraph if it the last character
|
623
656
|
if @isLastChar()
|
@@ -627,6 +660,7 @@ class Dante.Editor extends Dante.View
|
|
627
660
|
|
628
661
|
setTimeout ()=>
|
629
662
|
node = @getNode()
|
663
|
+
return if _.isUndefined(node)
|
630
664
|
#set name on new element
|
631
665
|
@setElementName($(node))
|
632
666
|
|
@@ -656,6 +690,9 @@ class Dante.Editor extends Dante.View
|
|
656
690
|
anchor_node = @getNode()
|
657
691
|
utils_anchor_node = utils.getNode()
|
658
692
|
|
693
|
+
if($node.hasClass("graf--li") and @getCharacterPrecedingCaret().length is 0)
|
694
|
+
return this.handleListBackspace($node, e);
|
695
|
+
|
659
696
|
if $(utils_anchor_node).hasClass("section-content") || $(utils_anchor_node).hasClass("graf--first")
|
660
697
|
utils.log "SECTION DETECTED FROM KEYDOWN #{_.isEmpty($(utils_anchor_node).text())}"
|
661
698
|
return false if _.isEmpty($(utils_anchor_node).text())
|
@@ -665,27 +702,29 @@ class Dante.Editor extends Dante.View
|
|
665
702
|
utils.log("TextNode detected from Down!")
|
666
703
|
#return false
|
667
704
|
|
668
|
-
#supress del into embed if
|
705
|
+
#supress del into & delete embed if empty content found on delete key
|
669
706
|
if $(anchor_node).hasClass("graf--mixtapeEmbed") or $(anchor_node).hasClass("graf--iframe")
|
670
|
-
if _.isEmpty $(anchor_node).text().trim()
|
671
|
-
utils.log
|
707
|
+
if _.isEmpty $(anchor_node).text().trim() or @isFirstChar()
|
708
|
+
utils.log("Check for inmediate deletion on empty embed text")
|
709
|
+
@inmediateDeletion = @isSelectingAll(anchor_node)
|
710
|
+
@handleInmediateDeletion($(anchor_node)) if @inmediateDeletion
|
672
711
|
return false
|
673
|
-
else
|
674
|
-
if @isFirstChar()
|
675
|
-
utils.log "FIRST CHAR"
|
676
|
-
@inmediateDeletion = true if @isSelectingAll(anchor_node)
|
677
|
-
return false
|
678
712
|
|
679
713
|
#TODO: supress del when the prev el is embed and current_node is at first char
|
680
714
|
if $(anchor_node).prev().hasClass("graf--mixtapeEmbed")
|
681
715
|
return false if @isFirstChar() && !_.isEmpty( $(anchor_node).text().trim() )
|
682
716
|
|
683
|
-
|
684
|
-
if $(".is-selected").hasClass("graf--figure")
|
717
|
+
#remove graf figure is is selected but not in range (not focus on caption)
|
718
|
+
if $(".is-selected").hasClass("graf--figure") && !anchor_node?
|
685
719
|
@replaceWith("p", $(".is-selected"))
|
686
720
|
@setRangeAt($(".is-selected")[0])
|
687
721
|
return false
|
688
722
|
|
723
|
+
#spacebar
|
724
|
+
if (e.which == 32)
|
725
|
+
utils.log("SPACEBAR")
|
726
|
+
if ($node.hasClass("graf--p"))
|
727
|
+
@handleSmartList($node, e)
|
689
728
|
#arrows key
|
690
729
|
#if _.contains([37,38,39,40], e.which)
|
691
730
|
#up & down
|
@@ -790,10 +829,11 @@ class Dante.Editor extends Dante.View
|
|
790
829
|
displayTooltipAt: (element)->
|
791
830
|
utils.log ("POSITION FOR TOOLTIP")
|
792
831
|
#utils.log $(element)
|
793
|
-
|
832
|
+
element = $(element)
|
833
|
+
return if !element || _.isEmpty(element) || element[0].tagName is "LI"
|
794
834
|
@tooltip_view.hide()
|
795
|
-
return unless _.isEmpty(
|
796
|
-
@positions =
|
835
|
+
return unless _.isEmpty( element.text() )
|
836
|
+
@positions = element.offset()
|
797
837
|
@tooltip_view.render()
|
798
838
|
@tooltip_view.move(@positions)
|
799
839
|
|
@@ -816,7 +856,6 @@ class Dante.Editor extends Dante.View
|
|
816
856
|
name = n.nodeName.toLowerCase()
|
817
857
|
switch name
|
818
858
|
when "p", "pre", "div"
|
819
|
-
#utils.log n
|
820
859
|
unless $(n).hasClass("graf--mixtapeEmbed")
|
821
860
|
$(n).removeClass().addClass("graf graf--#{name}")
|
822
861
|
|
@@ -837,10 +876,10 @@ class Dante.Editor extends Dante.View
|
|
837
876
|
n = $(n).parent()
|
838
877
|
|
839
878
|
when "ol", "ul"
|
840
|
-
|
879
|
+
utils.log "lists"
|
841
880
|
$(n).removeClass().addClass("postList")
|
842
881
|
_.each $(n).find("li"), (li)->
|
843
|
-
$(
|
882
|
+
$(li).removeClass().addClass("graf graf--li")
|
844
883
|
#postList , and li as graf
|
845
884
|
|
846
885
|
when "img"
|
@@ -881,11 +920,11 @@ class Dante.Editor extends Dante.View
|
|
881
920
|
#clean context and wrap text nodes
|
882
921
|
@cleanContents(@element)
|
883
922
|
@wrapTextNodes(@element)
|
923
|
+
|
884
924
|
#setup classes
|
885
925
|
_.each @element.children(), (n)=>
|
886
926
|
name = $(n).prop("tagName").toLowerCase()
|
887
927
|
n = @addClassesToElement(n)
|
888
|
-
|
889
928
|
@setElementName(n)
|
890
929
|
|
891
930
|
@setupLinks(@element.find("a"))
|
@@ -902,7 +941,7 @@ class Dante.Editor extends Dante.View
|
|
902
941
|
@element = element
|
903
942
|
|
904
943
|
s = new Sanitize
|
905
|
-
elements: ['strong','img', 'em', 'br', 'a', 'blockquote', 'b', 'u', 'i', 'pre', 'p', 'h1', 'h2', 'h3', 'h4']
|
944
|
+
elements: ['strong','img', 'em', 'br', 'a', 'blockquote', 'b', 'u', 'i', 'pre', 'p', 'h1', 'h2', 'h3', 'h4', 'ul', 'ol', 'li']
|
906
945
|
|
907
946
|
attributes:
|
908
947
|
'__ALL__': ['class']
|
@@ -966,7 +1005,7 @@ class Dante.Editor extends Dante.View
|
|
966
1005
|
]
|
967
1006
|
|
968
1007
|
if @element.exists()
|
969
|
-
utils.log "CLEAN HTML"
|
1008
|
+
utils.log "CLEAN HTML #{@element[0].tagName}"
|
970
1009
|
@element.html(s.clean_node( @element[0] ))
|
971
1010
|
|
972
1011
|
setupLinks: (elems)->
|
@@ -981,7 +1020,7 @@ class Dante.Editor extends Dante.View
|
|
981
1020
|
|
982
1021
|
preCleanNode: (element)->
|
983
1022
|
s = new Sanitize
|
984
|
-
elements: ['strong', 'em', 'br', 'a', 'b', 'u', 'i']
|
1023
|
+
elements: ['strong', 'em', 'br', 'a', 'b', 'u', 'i', 'ul', 'ol', 'li']
|
985
1024
|
|
986
1025
|
attributes:
|
987
1026
|
a: ['href', 'title', 'target']
|
@@ -1012,4 +1051,83 @@ class Dante.Editor extends Dante.View
|
|
1012
1051
|
).wrap "<p class='graf grap--p'></p>"
|
1013
1052
|
|
1014
1053
|
setElementName: (element)->
|
1015
|
-
$(element).attr("name", utils.generateUniqueName())
|
1054
|
+
$(element).attr("name", utils.generateUniqueName())
|
1055
|
+
|
1056
|
+
#LIST METHODS
|
1057
|
+
|
1058
|
+
listify: ($paragraph, listType, tagLength)->
|
1059
|
+
utils.log "LISTIFY PARAGRAPH"
|
1060
|
+
content = $paragraph.html().replace(/ /g, " ")
|
1061
|
+
utils.log(tagLength)
|
1062
|
+
|
1063
|
+
content = content.slice(tagLength, content.length)
|
1064
|
+
|
1065
|
+
switch(listType)
|
1066
|
+
when "ul" then $list = $("<ul></ul>")
|
1067
|
+
when "ol" then $list = $("<ol></ol>")
|
1068
|
+
else return false
|
1069
|
+
|
1070
|
+
@addClassesToElement($list[0])
|
1071
|
+
@replaceWith("li", $paragraph)
|
1072
|
+
$li = $(".is-selected")
|
1073
|
+
|
1074
|
+
@setElementName($li[0])
|
1075
|
+
|
1076
|
+
$li.html(content).wrap($list)
|
1077
|
+
|
1078
|
+
if($li.find("br").length == 0)
|
1079
|
+
$li.append("<br/>")
|
1080
|
+
@setRangeAt($li[0])
|
1081
|
+
|
1082
|
+
$li[0]
|
1083
|
+
|
1084
|
+
handleSmartList: ($item, e)->
|
1085
|
+
utils.log("HANDLE A SMART LIST")
|
1086
|
+
match = $item.text().match(/^\s*(\-|\*)\s*/)
|
1087
|
+
|
1088
|
+
if match
|
1089
|
+
utils.log("CREATING UL LIST ITEM")
|
1090
|
+
e.preventDefault()
|
1091
|
+
$li = @listify($item, "ul", match[0].length)
|
1092
|
+
else if match = $item.text().match(/^\s*1(\.|\))\s*/)
|
1093
|
+
utils.log("CREATING OL LIST ITEM")
|
1094
|
+
e.preventDefault()
|
1095
|
+
$li = @listify($item, "ol", match[0].length)
|
1096
|
+
|
1097
|
+
$li
|
1098
|
+
|
1099
|
+
handleListLineBreak: ($li, e)->
|
1100
|
+
utils.log("LIST LINE BREAK")
|
1101
|
+
e.preventDefault()
|
1102
|
+
@tooltip_view.hide()
|
1103
|
+
$list = $li.parent("ol, ul")
|
1104
|
+
$paragraph = $("<p></p>")
|
1105
|
+
if($list.children().length == 1)
|
1106
|
+
@replaceWith("p", $list)
|
1107
|
+
else if ($li.next().length == 0 and $li.text() == "")
|
1108
|
+
$list.after($paragraph)
|
1109
|
+
$li.remove()
|
1110
|
+
|
1111
|
+
@addClassesToElement($paragraph[0])
|
1112
|
+
@setRangeAt($paragraph[0])
|
1113
|
+
@markAsSelected($paragraph[0])
|
1114
|
+
@scrollTo($paragraph)
|
1115
|
+
|
1116
|
+
handleListBackspace: ($li, e)->
|
1117
|
+
|
1118
|
+
$list = $li.parent("ol, ul")
|
1119
|
+
utils.log("LIST BACKSPACE")
|
1120
|
+
|
1121
|
+
if($li.prev().length is 0)
|
1122
|
+
e.preventDefault()
|
1123
|
+
|
1124
|
+
$list.before($li)
|
1125
|
+
content = $li.html()
|
1126
|
+
@replaceWith("p", $li)
|
1127
|
+
$paragraph = $(".is-selected")
|
1128
|
+
$paragraph.removeClass("graf--empty").html(content)
|
1129
|
+
|
1130
|
+
if($list.children().length is 0)
|
1131
|
+
$list.remove()
|
1132
|
+
|
1133
|
+
@setupFirstAndLast()
|
@@ -196,6 +196,9 @@ class Dante.Editor.Menu extends Dante.View
|
|
196
196
|
if tag.match /(?:h[1-6])/i
|
197
197
|
$(@el).find(".icon-bold, .icon-italic, .icon-blockquote")
|
198
198
|
.parent("li").remove()
|
199
|
+
else if tag is "indent"
|
200
|
+
$(@el).find(".icon-h2, .icon-h3, .icon-h4, .icon-blockquote")
|
201
|
+
.parent("li").remove()
|
199
202
|
#.parent("li").hide()
|
200
203
|
#.addClass("hidden")
|
201
204
|
|
@@ -310,19 +310,23 @@ class Dante.Editor.Tooltip extends Dante.View
|
|
310
310
|
false
|
311
311
|
|
312
312
|
getEmbedFromNode: (node)=>
|
313
|
-
@
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
313
|
+
@node = $(node)
|
314
|
+
@node_name = @node.attr("name")
|
315
|
+
@node.addClass("spinner")
|
316
|
+
|
317
|
+
$.getJSON("#{@current_editor.oembed_url}#{$(@node).text()}")
|
318
|
+
.success (data)=>
|
319
|
+
@node = $("[name=#{@node_name}]")
|
320
|
+
iframe_src = $(data.html).prop("src")
|
321
|
+
tmpl = $(@embedTemplate())
|
322
|
+
tmpl.attr("name", @node.attr("name"))
|
323
|
+
$(@node).replaceWith(tmpl)
|
324
|
+
replaced_node = $(".graf--iframe[name=#{@node.attr("name")}]")
|
325
|
+
replaced_node.find("iframe").attr("src", iframe_src)
|
326
|
+
url = data.url || data.author_url
|
327
|
+
utils.log "URL IS #{url}"
|
328
|
+
replaced_node.find(".markup--anchor").attr("href", url ).text(url)
|
329
|
+
@hide()
|
326
330
|
|
327
331
|
##EXTRACT
|
328
332
|
displayExtractPlaceHolder: ()->
|
@@ -335,7 +339,10 @@ class Dante.Editor.Tooltip extends Dante.View
|
|
335
339
|
false
|
336
340
|
|
337
341
|
getExtractFromNode: (node)=>
|
338
|
-
@
|
342
|
+
@node = $(node)
|
343
|
+
@node_name = @node.attr("name")
|
344
|
+
@node.addClass("spinner")
|
345
|
+
|
339
346
|
$.getJSON("#{@current_editor.extract_url}#{$(@node).text()}").success (data)=>
|
340
347
|
@node = $("[name=#{@node_name}]")
|
341
348
|
iframe_src = $(data.html).prop("src")
|