scrivito_editors 0.65.1 → 0.65.2

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 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