scrivito_editors 0.60.0.rc1 → 0.60.0.rc2

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: 8460ce5d69c8e0908e775a5e3193e4e84e1293a2
4
- data.tar.gz: 00dd10e9587c2a7c6f3e2ff472fb25324f91c7f6
3
+ metadata.gz: 52bf78879c7b5b0ec864f6b9e2dabe9525dc3fc2
4
+ data.tar.gz: 5838d45d84675ca135b2b4e58c21c77906ca9555
5
5
  SHA512:
6
- metadata.gz: c0582e29889ca9b9ebea9abd57b7bde513569ab78f281e9bb764ed435d0997f514519a9b54d449cbe19eca89d82d0203d36da159873901e709c7a90e4dc372f3
7
- data.tar.gz: 61275a4000bc4749ff98e3037b1f7fee06a6a0c34d62eece592f26f007a0a21df46115d4229a6b40771ba58a8cd100052451e97d1dce22b121b99e5c7ec66199
6
+ metadata.gz: 023d3aa2ab889122c12a3a4b05e8fea70e5c4817cf7ed2ba07a03e6f079104566fc4ecceb961d965920e4ec7b94d19f4c64436706e8c2e63502c512fd245969d
7
+ data.tar.gz: a9f1741649e172023e030947881a71641560406034c2250404f674a1069a15ad23b26efb2bb7acf6434d62c2d3e55003b96da54a1ef3705285744ddd19e77055
@@ -34,6 +34,7 @@ $ ->
34
34
  .data('cmsField', cmsField)
35
35
  .val(selected)
36
36
  .insertAfter(cmsField)
37
+ .change(save)
37
38
  .focusout(save)
38
39
  .focus()
39
40
 
@@ -35,6 +35,7 @@ $ ->
35
35
  .data('cmsField', cmsField)
36
36
  .val(selected)
37
37
  .insertAfter(cmsField)
38
+ .change(save)
38
39
  .focusout(save)
39
40
  .focus()
40
41
 
@@ -7,8 +7,9 @@ $ ->
7
7
 
8
8
  switch key
9
9
  when 13 # Enter
10
- event.preventDefault()
11
- cmsField.blur()
10
+ if !isNewlineAllowed(cmsField)
11
+ event.preventDefault()
12
+ cmsField.blur()
12
13
  when 27 # Esc
13
14
  event.stopPropagation()
14
15
  cmsField.blur()
@@ -59,13 +60,38 @@ $ ->
59
60
  else
60
61
  cmsField.siblings().addBack().not(siblingsBefore)
61
62
 
63
+ _deprecationLogged = false
64
+
65
+ isNewlineAllowed = (cmsField) ->
66
+ if cmsField.data('editor') == 'text'
67
+ if !_deprecationLogged
68
+ console.warn 'Scrivito editors: data-editor="text" is deprecated, please use data-editor="string" data-newlines="true" instead.'
69
+ _deprecationLogged = true
70
+ return true
71
+
72
+ return true if cmsField.data('newlines') == true
73
+ return false if cmsField.data('newlines') == false
74
+ cmsField.css('white-space').match /pre/
75
+
62
76
  DOUBLE_CLICK_MS = 300
63
77
 
78
+ editSelector = '''
79
+ [data-scrivito-field-type="string"]:not([data-editor]),
80
+ [data-editor~="string"],
81
+ [data-editor~="text"]
82
+ '''
83
+
64
84
  initialize = ->
65
- $(':root').on 'mouseenter', '[data-scrivito-field-type="string"]:not([data-editor]), [data-editor~="string"]', (event) ->
85
+ $(':root').on 'mouseenter', editSelector, (event) ->
66
86
  cmsField = $(@)
67
87
 
68
88
  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
+
69
95
  cmsField
70
96
  .attr('contenteditable', true)
71
97
  .blur(onBlur)
@@ -75,7 +101,7 @@ $ ->
75
101
  if cmsField.attr('data-autosave') != 'false'
76
102
  cmsField.on('input', onInput)
77
103
 
78
- $(':root').on 'click', '[data-scrivito-field-type="string"]:not([data-editor]), [data-editor~="string"]', (event) ->
104
+ $(':root').on 'click', editSelector, (event) ->
79
105
  cmsField = $(@)
80
106
  cleanUp(cmsField)
81
107
 
@@ -84,7 +110,6 @@ $ ->
84
110
  event.preventDefault()
85
111
  cmsField.data('scrivito_editors_last_click', event.timeStamp)
86
112
 
87
-
88
113
  scrivito.on 'load', ->
89
114
  if scrivito.in_editable_view()
90
115
  initialize()
@@ -11,7 +11,7 @@ module ScrivitoEditors
11
11
  # @param [String, Symbol] attribute_name
12
12
  # @param [Hash] options passed to the ++scrivito_tag++ helper
13
13
  def scrivito_edit_enum(object, attribute_name, options = {})
14
- values = object.obj_class.attributes[attribute_name].values
14
+ values = _values_for(object, attribute_name)
15
15
  values |= [object[attribute_name].to_s]
16
16
 
17
17
  options.reverse_merge!({
@@ -31,7 +31,7 @@ module ScrivitoEditors
31
31
  # @param [String, Symbol] attribute_name
32
32
  # @param [Hash] options passed to the ++scrivito_tag++ helper
33
33
  def scrivito_edit_multienum(object, attribute_name, options = {})
34
- values = object.obj_class.attributes[attribute_name].values
34
+ values = _values_for(object, attribute_name)
35
35
 
36
36
  options.reverse_merge!({
37
37
  multiple: true,
@@ -125,6 +125,15 @@ module ScrivitoEditors
125
125
 
126
126
  private
127
127
 
128
+ def _values_for(object, attribute_name)
129
+ if object.obj_class
130
+ # pre migration fallback
131
+ object.obj_class.attributes[attribute_name].try(:values) || []
132
+ else
133
+ object.attribute_definitions[attribute_name].try(:values) || []
134
+ end
135
+ end
136
+
128
137
  def _edit_link_li(link)
129
138
  query = link.query.present? ? "?#{link.query}" : ""
130
139
  fragment = link.fragment.present? ? "##{link.fragment}" : ""
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.60.0.rc1
4
+ version: 0.60.0.rc2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Scrivito
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-04-16 00:00:00.000000000 Z
11
+ date: 2015-04-27 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.60.0.rc1
61
+ version: 0.60.0.rc2
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.60.0.rc1
68
+ version: 0.60.0.rc2
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.60.0.rc1
75
+ version: 0.60.0.rc2
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.60.0.rc1
82
+ version: 0.60.0.rc2
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: pry
85
85
  requirement: !ruby/object:Gem::Requirement
@@ -156,7 +156,6 @@ files:
156
156
  - app/assets/javascripts/scrivito_editors/referencelist_editor.js.coffee
157
157
  - app/assets/javascripts/scrivito_editors/slider_editor.js.coffee
158
158
  - app/assets/javascripts/scrivito_editors/string_editor.js.coffee
159
- - app/assets/javascripts/scrivito_editors/text_editor.js.coffee
160
159
  - app/assets/javascripts/scrivito_editors_addons.js
161
160
  - app/assets/javascripts/scrivito_editors_core.js
162
161
  - app/assets/stylesheets/jquery-ui-timepicker-addon.min.css
@@ -1,90 +0,0 @@
1
- $ ->
2
- # This file integrates contenteditable for text attributes.
3
- # It provides multiline editing support.
4
-
5
- onKey = (event) ->
6
- cmsField = $(event.currentTarget)
7
- key = event.keyCode || event.which
8
-
9
- switch key
10
- when 27 # Esc
11
- event.stopPropagation()
12
- cmsField.blur()
13
-
14
- onInput = (event) ->
15
- cmsField = $(event.currentTarget)
16
- save(cmsField, false)
17
-
18
- onBlur = (event) ->
19
- cmsField = $(event.currentTarget)
20
-
21
- save(cmsField, true).done ->
22
- if cmsField.attr('data-reload') == 'true'
23
- cmsField.scrivito('reload')
24
-
25
- save = (cmsField, andClose) ->
26
- cleanUp(cmsField)
27
-
28
- clone = cmsFieldAndPastedContent(cmsField).clone()
29
- clone.find('div:not(:has(br))').before('\n')
30
- clone.find('br').replaceWith('\n')
31
- content = clone.text()
32
- clone.remove()
33
-
34
- if andClose
35
- cmsField.text(content)
36
-
37
- # Save only if the content has changed.
38
- if content != cmsField.scrivito('content')
39
- cmsField.scrivito('save', content).done ->
40
- cmsField.trigger('save.scrivito_editors')
41
- else
42
- $.Deferred().resolve()
43
-
44
- cleanUp = (cmsField) ->
45
- siblings = cmsFieldAndPastedContent(cmsField)
46
- pasted = siblings.not(cmsField)
47
- if pasted.length > 0
48
- pasted.remove()
49
- cmsField.text(siblings.text())
50
-
51
- cmsFieldAndPastedContent = (cmsField) ->
52
- siblingsBefore = cmsField.data('scrivito_editors_siblings_before_edit')
53
- siblings = cmsField.siblings()
54
- needsReset = !siblingsBefore || siblings.filter(siblingsBefore).length < siblingsBefore.length
55
- if needsReset
56
- cmsField.data('scrivito_editors_siblings_before_edit', siblings)
57
- else
58
- cmsField.siblings().addBack().not(siblingsBefore)
59
-
60
- DOUBLE_CLICK_MS = 300
61
-
62
- initialize = ->
63
- $(':root').on 'mouseenter', '[data-scrivito-field-type="text"]:not([data-editor]), [data-editor~="text"]', (event) ->
64
- cmsField = $(@)
65
-
66
- unless cmsField.attr('contenteditable')?
67
- html = cmsField.html()
68
- html_nl2br = html.replace(/\n/g, '<br />')
69
- if html != html_nl2br
70
- cmsField.html(html_nl2br)
71
-
72
- cmsField
73
- .attr('contenteditable', true)
74
- .blur(onBlur)
75
- .keypress(onKey)
76
- .keyup(onKey)
77
- .on('input', onInput)
78
-
79
- $(':root').on 'click', '[data-scrivito-field-type="text"]:not([data-editor]), [data-editor~="text"]', (event) ->
80
- cmsField = $(@)
81
- cleanUp(cmsField)
82
-
83
- # Prevent editable link strings from being opened on click, but allow an enforcing double click
84
- unless event.timeStamp - cmsField.data('scrivito_editors_last_click') < DOUBLE_CLICK_MS
85
- event.preventDefault()
86
- cmsField.data('scrivito_editors_last_click', event.timeStamp)
87
-
88
- scrivito.on 'load', ->
89
- if scrivito.in_editable_view()
90
- initialize()