scrivito_editors 0.60.0.rc1 → 0.60.0.rc2

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: 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()