scrivito_editors 0.65.1 → 0.65.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 34c0ac31d943aa0a583abfe35218dd9bd1f06c1e
4
- data.tar.gz: 56a1b50352309ff1cd84626b21b30ff5ad910945
3
+ metadata.gz: bffe1f32ebdd4464332854c6f67d013f00446684
4
+ data.tar.gz: 90441a854af2de652b9632e9e7ffcf395b45b864
5
5
  SHA512:
6
- metadata.gz: 42563ee7fe7bf43abd394e19c1b0e3d8d4386e643d332755897ab5c5550a0136122a4731037a89ff201adcf86a0222845ac40b1fdddec024398472819a7e9f9f
7
- data.tar.gz: 3f7b080d9a1b01538a745f271c2d7a0634252d1ebc5af633ea2bca33e14d686426c3931254d5af88706aa9d72fb61176226b9129c8f2be4c6e40b96b88c20b52
6
+ metadata.gz: dfdb048fb70e226ca98480e5aff620266a7c512edd0e53b7e1ac3af94e4d287e61c797c4efc561c2d3e63a7f3b98a768987b80d7366aa9cf113ef25a76a9e293
7
+ data.tar.gz: 397fb96b61ef6912e37205d73c16fb308b53beb6e504bcf7d5a05aee3a4d07d0192756cad69392c7c44f61e08ef89e62703c6ef9d7dd08ff8bfa0372e965fb47
@@ -43,10 +43,11 @@ $ ->
43
43
  replaceDivs: false
44
44
  tabifier: false
45
45
 
46
- blurCallback: -> closeEditor @
46
+ blurCallback: -> closeEditor @ if @_everHadFocus
47
47
  changeCallback: -> saveContents @
48
48
  destroyCallback: -> saveContents @
49
49
  dropdownShowCallback: -> saveContents @
50
+ focusCallback: -> @_everHadFocus = true if @_isInitialized
50
51
  modalOpenedCallback: -> saveContents @
51
52
 
52
53
  keyupCallback: (event) ->
@@ -79,8 +80,14 @@ $ ->
79
80
  @selection.restore()
80
81
 
81
82
  @_initialRedactorContent = html
83
+ @_isInitialized = true
82
84
 
83
85
  startCallback: ->
86
+ @_everHadFocus = undefined
87
+ @_initialRedactorContent = undefined
88
+ @_initialScrivitoContent = undefined
89
+ @_isInitialized = undefined
90
+
84
91
  if document.getSelection().anchorNode
85
92
  # see http://imperavi.com/redactor/examples/click-to-edit/
86
93
  @insert.node @selection.getMarker(), false
@@ -19,7 +19,7 @@ $ ->
19
19
  save = (event) ->
20
20
  element = $(event.currentTarget)
21
21
  cmsField = element.data('cmsField')
22
- content = element.val()
22
+ content = element.val() ? []
23
23
  cmsField.scrivito('save', content).done ->
24
24
  cmsField.trigger('save.scrivito_editors')
25
25
 
@@ -16,26 +16,23 @@ $ ->
16
16
 
17
17
  onInput = (event) ->
18
18
  cmsField = $(event.currentTarget)
19
- save(cmsField, false)
19
+ save(cmsField)
20
+
21
+ onFocus = (event) ->
22
+ cmsField = $(event.currentTarget)
23
+ prepareForEditing(cmsField)
20
24
 
21
25
  onBlur = (event) ->
22
26
  cmsField = $(event.currentTarget)
23
27
 
24
- save(cmsField, true).done ->
28
+ save(cmsField).done ->
25
29
  if cmsField.attr('data-reload') == 'true'
26
30
  cmsField.scrivito('reload')
27
31
 
28
- save = (cmsField, andClose) ->
29
- cleanUp(cmsField)
30
-
31
- clone = cmsFieldAndPastedContent(cmsField).clone()
32
- clone.find('div:not(:has(br))').before('\n')
33
- clone.find('br').replaceWith('\n')
34
- content = clone.text()
35
- clone.remove()
32
+ finishEditing(cmsField)
36
33
 
37
- if andClose
38
- cmsField.text(content)
34
+ save = (cmsField) ->
35
+ content = getCurrentContent(cmsField)
39
36
 
40
37
  # Save only if the content has changed.
41
38
  if content != cmsField.scrivito('content')
@@ -44,6 +41,16 @@ $ ->
44
41
  else
45
42
  $.Deferred().resolve()
46
43
 
44
+ getCurrentContent = (cmsField) ->
45
+ cleanUp(cmsField)
46
+
47
+ clone = cmsFieldAndPastedContent(cmsField).clone()
48
+ clone.find('div:not(:first,:has(br)),p:not(:first)').before('\n')
49
+ clone.find('br').replaceWith('\n')
50
+ content = clone.text()
51
+ clone.remove()
52
+ content
53
+
47
54
  cleanUp = (cmsField) ->
48
55
  siblings = cmsFieldAndPastedContent(cmsField)
49
56
  pasted = siblings.not(cmsField)
@@ -73,6 +80,18 @@ $ ->
73
80
  return false if cmsField.data('newlines') == false
74
81
  cmsField.css('white-space').match /pre/
75
82
 
83
+ prepareForEditing = (cmsField) ->
84
+ if isNewlineAllowed(cmsField) && !cmsField.data('scrivito_editors_prepared_for_editing')
85
+ cmsField.data('scrivito_editors_prepared_for_editing', true)
86
+ html = cmsField.html()
87
+ htmlNl2Br = html.replace(/\n/g, '<br />')
88
+ if html != htmlNl2Br
89
+ cmsField.html(htmlNl2Br)
90
+
91
+ finishEditing = (cmsField) ->
92
+ cmsField.data('scrivito_editors_prepared_for_editing', false)
93
+ cmsField.text(cmsField.scrivito('content'))
94
+
76
95
  DOUBLE_CLICK_MS = 300
77
96
 
78
97
  editSelector = '''
@@ -86,23 +105,22 @@ $ ->
86
105
  cmsField = $(@)
87
106
 
88
107
  unless cmsField.attr('contenteditable')?
89
- if isNewlineAllowed(cmsField)
90
- html = cmsField.html()
91
- htmlNl2Br = html.replace(/\n/g, '<br />')
92
- if html != htmlNl2Br
93
- cmsField.html(htmlNl2Br)
94
-
95
108
  cmsField
96
109
  .attr('contenteditable', true)
97
110
  .blur(onBlur)
111
+ .focus(onFocus)
98
112
  .keypress(onKey)
99
113
  .keyup(onKey)
100
114
 
101
- if cmsField.attr('data-autosave') != 'false'
102
- cmsField.on('input', onInput)
115
+ if cmsField.attr('data-autosave') != 'false'
116
+ cmsField.on('cut input keypress keyup paste', onInput)
117
+
118
+ prepareForEditing(cmsField)
103
119
 
104
120
  $(':root').on 'click', editSelector, (event) ->
105
121
  cmsField = $(@)
122
+
123
+ cmsField.attr('contenteditable', true)
106
124
  cleanUp(cmsField)
107
125
 
108
126
  # Prevent editable link strings from being opened on click, but allow an enforcing double click
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: scrivito_editors
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.65.1
4
+ version: 0.65.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Scrivito
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-06-15 00:00:00.000000000 Z
11
+ date: 2015-07-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: coffee-rails
@@ -58,28 +58,28 @@ dependencies:
58
58
  requirements:
59
59
  - - '='
60
60
  - !ruby/object:Gem::Version
61
- version: 0.65.1
61
+ version: 0.65.2
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - '='
67
67
  - !ruby/object:Gem::Version
68
- version: 0.65.1
68
+ version: 0.65.2
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: scrivito_sdk
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - '='
74
74
  - !ruby/object:Gem::Version
75
- version: 0.65.1
75
+ version: 0.65.2
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - '='
81
81
  - !ruby/object:Gem::Version
82
- version: 0.65.1
82
+ version: 0.65.2
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: pry
85
85
  requirement: !ruby/object:Gem::Requirement