scrivito_editors 0.70.2 → 0.71.0.rc1

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: 368d73a788a8236caba480f936e5a8e3bf732bc4
4
- data.tar.gz: 56dd5778059e509c4c42c9d6ffc27a46829e9762
3
+ metadata.gz: aa97297b8ea4b3d766e89626c337ed8d92f91c8f
4
+ data.tar.gz: 1ac6e84c3983669d660304519dfa51e9614869a9
5
5
  SHA512:
6
- metadata.gz: 6ec896e7020ebb040b9bd93859413d365f336bc1788dcc1817b50a268d77b9bf5d5b552d03b4d30259303e7d02af0a65e7d9e7f80a6e4c3c46e935327d987ca6
7
- data.tar.gz: a15151bb67477177691a314349347f3b28d001862c41e0dcae0dad611b31477e4e6d9dc2a012e2e171abe40c7e60e59f65f41b66a10cfd142b94f33dbec609af
6
+ metadata.gz: 2e13fce3cc15a0ccf9170f677f5d17abc348958660bde6e17d0add7a26d3da3ac88b60f8cec80e8a40153b23f84a133c06b2dd7dc47687947c203a27ffdbb8d7
7
+ data.tar.gz: 0e66886e9bca14bf739b46f9792934aa441efc72d2a38541c89daee03d0473cbceaf8c27e4aa21d19d7f2914ef2b08d3d602992ad5704df284e4212afe9c581d
@@ -51,35 +51,15 @@ setup_image_kit_container = (element, dialog) ->
51
51
  image = new Image()
52
52
  url = element.scrivito("content").url
53
53
 
54
- #Order is important for CORS problem in browsers http://stackoverflow.com/a/18422548
55
- image.crossOrigin = "Anonymous"
56
- image.src = url
57
-
58
- #S3 compatible (as of 2015-10) workaround to prevent crossOrigin warnings in chrome and safari
59
- fallbackUrl = url
54
+ #workaround to prevent crossOrigin warnings in chrome and safari
60
55
  if url.indexOf("?") < 0
61
- fallbackUrl = url + "?=" + new Date().getTime()
56
+ url += "?" + new Date().getTime()
62
57
  else
63
- fallbackUrl = url + "&=" + new Date().getTime()
58
+ url += "&" + new Date().getTime()
64
59
 
65
- image.onerror = ->
66
- if image.src is fallbackUrl
67
- $("""
68
- <div style='padding:20px'>
69
- <h1>We're sorry,</h1>
70
- <p>Scrivito can't edit this image in your browser. What now?</p>
71
- <ul>
72
- <li>Check for browser updates</li>
73
- <li>Try using a different browser</li>
74
- <li>Contact us at
75
- <a href="https://scrivito.com/support" target="_blank">https://scrivito.com/support</a>
76
- </li>
77
- </ul>
78
- </div>
79
- """).appendTo(container)
80
- else
81
- console.info("Scrivito detected a probable CORS browser cache mismatch, trying uncached load")
82
- image.src = fallbackUrl
60
+ #Order is important for CORS problem in browsers http://stackoverflow.com/a/18422548
61
+ image.crossOrigin = "Anonymous"
62
+ image.src = url
83
63
 
84
64
  image.onload = ->
85
65
  kit = setup_image_kit(image, container)
@@ -0,0 +1,111 @@
1
+ scrivito.on 'content', (content) ->
2
+ return unless scrivito.in_editable_view()
3
+
4
+ $(content).find('''
5
+ [data-scrivito-field-name="_permalink"]:not([data-editor]),
6
+ [data-editor~=permalink]
7
+ ''').each -> create($(@))
8
+
9
+ create = (field) ->
10
+ editor = field.html(render(field.scrivito('content') || ''))
11
+ input = editor.find('input')
12
+ button = editor.find('a')
13
+ error = editor.find('div.scrivito_error')
14
+ clear = editor.find('.scrivito_clear')
15
+
16
+ input.on 'input', ->
17
+ permalink = input.val()
18
+ if permalink == field.scrivito('content')
19
+ hideError()
20
+ disableSaveButton()
21
+ else if permalink.match(/^([\w._-]+[\/\w._-]*)?$/)
22
+ hideError()
23
+ enableSaveButton()
24
+ else
25
+ showError(
26
+ 'The permalink may only contain letters from A to Z, periods, hyphens, and underscores.')
27
+ disableSaveButton()
28
+
29
+ clear.on 'click', ->
30
+ input.val('')
31
+ hideError()
32
+ if !field.scrivito('content')
33
+ disableSaveButton()
34
+ else
35
+ enableSaveButton()
36
+ off
37
+
38
+ button.on 'click', ->
39
+ trySave()
40
+ off
41
+
42
+ editor.on 'keyup', (event) ->
43
+ switch event.keyCode
44
+ when 13 # Enter
45
+ trySave()
46
+ when 27 # Esc
47
+ input.val(field.scrivito('content'))
48
+ hideError()
49
+ disableSaveButton()
50
+ input.blur()
51
+
52
+ trySave = ->
53
+ return off if button.hasClass('scrivito_disabled')
54
+
55
+ showSaving()
56
+
57
+ permalink = input.val()
58
+ if permalink
59
+ scrivito.obj_where('_permalink', 'equals', permalink).size().then (total) ->
60
+ if total > 0
61
+ hideSaving()
62
+ showError('Permalink already taken.')
63
+ disableSaveButton()
64
+ input.focus()
65
+ else
66
+ save(permalink)
67
+ else
68
+ save(null)
69
+
70
+ disableSaveButton = ->
71
+ button.addClass('scrivito_disabled')
72
+
73
+ enableSaveButton = ->
74
+ button.removeClass('scrivito_disabled scrivito_saving')
75
+
76
+ showError = (message) ->
77
+ disableSaveButton()
78
+ input.addClass('scrivito_error')
79
+ error.text(message)
80
+ error.show()
81
+
82
+ hideError = ->
83
+ input.removeClass('scrivito_error')
84
+ error.hide()
85
+
86
+ showSaving = ->
87
+ input.attr('disabled', 'disabled')
88
+ disableSaveButton()
89
+ button.addClass('scrivito_saving')
90
+ button.find('span').text('Saving...')
91
+
92
+ hideSaving = ->
93
+ input.removeAttr('disabled')
94
+ enableSaveButton()
95
+ button.find('span').text('Save')
96
+
97
+ save = (permalink) ->
98
+ field.scrivito('save', permalink).then ->
99
+ create(field)
100
+
101
+ render = (content) ->
102
+ """
103
+ <div class="scrivito_permalink_editor">
104
+ <input type="text" value="#{content}" />
105
+ <span class="scrivito_clear"></span>
106
+ <a href="#" class="scrivito_editing_button scrivito_disabled">
107
+ <span>Save</span>
108
+ </a>
109
+ <div class="scrivito_error"></div>
110
+ </div>
111
+ """
@@ -98,7 +98,7 @@ $ ->
98
98
  DOUBLE_CLICK_MS = 300
99
99
 
100
100
  editSelector = '''
101
- [data-scrivito-field-type="string"]:not([data-editor]),
101
+ [data-scrivito-field-type="string"]:not([data-editor]):not([data-scrivito-field-name=_permalink]),
102
102
  [data-editor~="string"],
103
103
  [data-editor~="text"]
104
104
  '''
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.70.2
4
+ version: 0.71.0.rc1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Scrivito
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-11-02 00:00:00.000000000 Z
11
+ date: 2015-10-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: coffee-rails
@@ -72,28 +72,28 @@ dependencies:
72
72
  requirements:
73
73
  - - '='
74
74
  - !ruby/object:Gem::Version
75
- version: 0.70.2
75
+ version: 0.71.0.rc1
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.70.2
82
+ version: 0.71.0.rc1
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: scrivito_sdk
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - '='
88
88
  - !ruby/object:Gem::Version
89
- version: 0.70.2
89
+ version: 0.71.0.rc1
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - '='
95
95
  - !ruby/object:Gem::Version
96
- version: 0.70.2
96
+ version: 0.71.0.rc1
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: pry
99
99
  requirement: !ruby/object:Gem::Requirement
@@ -235,6 +235,7 @@ files:
235
235
  - app/assets/javascripts/scrivito_editors/link_editor.js.coffee
236
236
  - app/assets/javascripts/scrivito_editors/linklist_editor.js.coffee
237
237
  - app/assets/javascripts/scrivito_editors/multienum_editor.js.coffee
238
+ - app/assets/javascripts/scrivito_editors/permalink_editor.js.coffee
238
239
  - app/assets/javascripts/scrivito_editors/placeholder.js.coffee
239
240
  - app/assets/javascripts/scrivito_editors/redactor_plugins/scrivito_editors_image_manager.js.coffee
240
241
  - app/assets/javascripts/scrivito_editors/redactor_plugins/scrivito_editors_link_manager.js.coffee