scrivito_editors 0.0.8
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 +7 -0
- data/CHANGELOG.md +48 -0
- data/LICENSE +4 -0
- data/README.md +55 -0
- data/Rakefile +9 -0
- data/app/assets/fonts/editing_icons-webfont.eot +0 -0
- data/app/assets/fonts/editing_icons-webfont.ttf +0 -0
- data/app/assets/fonts/editing_icons-webfont.woff +0 -0
- data/app/assets/javascripts/jquery_additions/jquery_center.js.coffee +6 -0
- data/app/assets/javascripts/mediabrowser/inspector.js.coffee +65 -0
- data/app/assets/javascripts/mediabrowser/mediabrowser.js.coffee +420 -0
- data/app/assets/javascripts/mediabrowser/uploader.js.coffee +132 -0
- data/app/assets/javascripts/scrivito_editors.js +18 -0
- data/app/assets/javascripts/scrivito_editors/date_editor.js.coffee +50 -0
- data/app/assets/javascripts/scrivito_editors/enum_editor.js.coffee +36 -0
- data/app/assets/javascripts/scrivito_editors/html_editor.js.coffee +140 -0
- data/app/assets/javascripts/scrivito_editors/linklist_editor.js.coffee +176 -0
- data/app/assets/javascripts/scrivito_editors/multienum_editor.js.coffee +37 -0
- data/app/assets/javascripts/scrivito_editors/placeholder.js.coffee +22 -0
- data/app/assets/javascripts/scrivito_editors/reference_editor.js.coffee +28 -0
- data/app/assets/javascripts/scrivito_editors/referencelist_editor.js.coffee +111 -0
- data/app/assets/javascripts/scrivito_editors/slider_editor.js.coffee +39 -0
- data/app/assets/javascripts/scrivito_editors/string_editor.js.coffee +83 -0
- data/app/assets/javascripts/scrivito_editors/text_editor.js.coffee +85 -0
- data/app/assets/stylesheets/scrivito_editors.css +16 -0
- data/app/assets/stylesheets/scrivito_editors/buttons.css +161 -0
- data/app/assets/stylesheets/scrivito_editors/editors/linklist_editor.css +105 -0
- data/app/assets/stylesheets/scrivito_editors/editors/referencelist_editor.css +67 -0
- data/app/assets/stylesheets/scrivito_editors/editors/text_editor.css +7 -0
- data/app/assets/stylesheets/scrivito_editors/icons.css.erb +229 -0
- data/app/assets/stylesheets/scrivito_editors/mediabrowser.css +1010 -0
- data/app/assets/stylesheets/scrivito_editors/placeholder.css +17 -0
- data/app/assets/stylesheets/scrivito_editors/widget_preview.css +38 -0
- data/app/controllers/scrivito_editors/mediabrowser_controller.rb +36 -0
- data/app/views/layouts/scrivito_editors/mediabrowser/inspector.html.erb +11 -0
- data/app/views/scrivito_editors/mediabrowser/_buttons.html.erb +16 -0
- data/app/views/scrivito_editors/mediabrowser/_header.html.erb +25 -0
- data/app/views/scrivito_editors/mediabrowser/modal.html.erb +12 -0
- data/app/views/scrivito_editors/obj/details.html +5 -0
- data/config/initializers/mediabrowser.rb +13 -0
- data/config/routes.rb +5 -0
- data/lib/scrivito_editors.rb +4 -0
- data/lib/scrivito_editors/engine.rb +7 -0
- data/lib/scrivito_editors/version.rb +3 -0
- data/spec/dummy/README.rdoc +28 -0
- data/spec/dummy/Rakefile +6 -0
- data/spec/dummy/app/assets/javascripts/application.js +13 -0
- data/spec/dummy/app/assets/stylesheets/application.css +13 -0
- data/spec/dummy/app/controllers/application_controller.rb +5 -0
- data/spec/dummy/app/helpers/application_helper.rb +2 -0
- data/spec/dummy/app/views/layouts/application.html.erb +14 -0
- data/spec/dummy/bin/bundle +3 -0
- data/spec/dummy/bin/rails +4 -0
- data/spec/dummy/bin/rake +4 -0
- data/spec/dummy/config.ru +4 -0
- data/spec/dummy/config/application.rb +23 -0
- data/spec/dummy/config/boot.rb +5 -0
- data/spec/dummy/config/database.yml +25 -0
- data/spec/dummy/config/environment.rb +5 -0
- data/spec/dummy/config/environments/development.rb +29 -0
- data/spec/dummy/config/environments/production.rb +80 -0
- data/spec/dummy/config/environments/test.rb +36 -0
- data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/spec/dummy/config/initializers/inflections.rb +16 -0
- data/spec/dummy/config/initializers/mime_types.rb +5 -0
- data/spec/dummy/config/initializers/secret_token.rb +12 -0
- data/spec/dummy/config/initializers/session_store.rb +3 -0
- data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/spec/dummy/config/locales/en.yml +23 -0
- data/spec/dummy/config/routes.rb +4 -0
- data/spec/dummy/public/404.html +58 -0
- data/spec/dummy/public/422.html +58 -0
- data/spec/dummy/public/500.html +57 -0
- data/spec/dummy/public/favicon.ico +0 -0
- data/spec/spec_helper.rb +13 -0
- data/vendor/assets/fonts/redactor-font.eot +0 -0
- data/vendor/assets/javascripts/jquery-ui-timepicker-addon.min.js +5 -0
- data/vendor/assets/javascripts/redactor.js +7869 -0
- data/vendor/assets/stylesheets/jquery-ui-timepicker-addon.min.css +5 -0
- data/vendor/assets/stylesheets/redactor.css.erb +968 -0
- metadata +240 -0
@@ -0,0 +1,37 @@
|
|
1
|
+
$ ->
|
2
|
+
# Define editor behavior for multienum attributes.
|
3
|
+
|
4
|
+
scrivito.on 'editing', ->
|
5
|
+
template = (values) ->
|
6
|
+
element = $('<select></select>')
|
7
|
+
.attr('multiple', 'true')
|
8
|
+
.addClass('form-control')
|
9
|
+
|
10
|
+
$.each values, (index, value) ->
|
11
|
+
$('<option></option>')
|
12
|
+
.attr('value', value)
|
13
|
+
.text(value)
|
14
|
+
.appendTo(element)
|
15
|
+
|
16
|
+
element
|
17
|
+
|
18
|
+
save = (event) ->
|
19
|
+
element = $(event.currentTarget)
|
20
|
+
cmsField = element.data('cmsField')
|
21
|
+
content = element.val()
|
22
|
+
cmsField.scrivito('save', content).done ->
|
23
|
+
cmsField.trigger('scrivito_reload')
|
24
|
+
|
25
|
+
$(document).on 'click', '[data-scrivito-field-type="multienum"]:not([data-editor]), [data-editor="multienum"]', (event) ->
|
26
|
+
cmsField = $(event.currentTarget)
|
27
|
+
selected = cmsField.scrivito('content')
|
28
|
+
values = cmsField.data('values')
|
29
|
+
|
30
|
+
template(values)
|
31
|
+
.data('cmsField', cmsField)
|
32
|
+
.val(selected)
|
33
|
+
.insertAfter(cmsField)
|
34
|
+
.focusout(save)
|
35
|
+
.focus()
|
36
|
+
|
37
|
+
cmsField.hide()
|
@@ -0,0 +1,22 @@
|
|
1
|
+
$ ->
|
2
|
+
# Display a placeholder for empty CMS attributes. The placeholder can be overwritten by
|
3
|
+
# defining a +data-placeholder+ HTML attribute on the DOM element generated by +cms_tag+.
|
4
|
+
#
|
5
|
+
# For example:
|
6
|
+
# cms_tag(:div, @obj, :my_attribute, data: { placeholder: 'My custom placeholder text.' })
|
7
|
+
addPlaceholder = ->
|
8
|
+
cmsFields = $('[data-scrivito-field-type]')
|
9
|
+
|
10
|
+
cmsFields.each ->
|
11
|
+
cmsField = $(@)
|
12
|
+
fieldName = cmsField.attr('data-scrivito-field-name')
|
13
|
+
defaultPlaceholder = 'Click to edit the "' + fieldName + '" attribute ...'
|
14
|
+
placeholder = cmsField.attr('data-placeholder') || defaultPlaceholder
|
15
|
+
|
16
|
+
cmsField.attr('data-placeholder', placeholder)
|
17
|
+
|
18
|
+
scrivito.on 'new_content', ->
|
19
|
+
addPlaceholder()
|
20
|
+
|
21
|
+
scrivito.on 'editing', ->
|
22
|
+
addPlaceholder()
|
@@ -0,0 +1,28 @@
|
|
1
|
+
$ ->
|
2
|
+
# Integrates a mediabrowser based editor for reference CMS attributes.
|
3
|
+
|
4
|
+
scrivito.on 'editing', ->
|
5
|
+
$('body').on 'click', '[data-scrivito-field-type="reference"]:not([data-editor]), [data-editor="reference"]', (event) ->
|
6
|
+
event.preventDefault()
|
7
|
+
|
8
|
+
cmsField = $(event.currentTarget)
|
9
|
+
selected = [cmsField.scrivito('content')].filter (element) -> element
|
10
|
+
filters = cmsField.data('filters') || cmsField.data('filter')
|
11
|
+
|
12
|
+
# Open mediabrowser with current reference selected and restrict selection to one reference.
|
13
|
+
Mediabrowser.open
|
14
|
+
selection: selected
|
15
|
+
filters: filters
|
16
|
+
|
17
|
+
onSave: (selection) =>
|
18
|
+
onMediabrowserSave(selection, cmsField)
|
19
|
+
|
20
|
+
# Save single reference when media browser calls "save".
|
21
|
+
onMediabrowserSave = (selection, cmsField) ->
|
22
|
+
value = selection[0] || null
|
23
|
+
|
24
|
+
cmsField.scrivito('save', value)
|
25
|
+
.done ->
|
26
|
+
cmsField.trigger('scrivito_reload')
|
27
|
+
|
28
|
+
true
|
@@ -0,0 +1,111 @@
|
|
1
|
+
$ ->
|
2
|
+
# An editor for CMS referencelist attributes.
|
3
|
+
|
4
|
+
# Creates the DOM for one reference element of the referencelist and substitutes the
|
5
|
+
# name and id attribute.
|
6
|
+
itemTemplate = ->
|
7
|
+
$("<div class=\"actions\">
|
8
|
+
<a href=\"#\" class=\"editing-button editing-red delete\">
|
9
|
+
<i class=\"editing-icon editing-icon-trash\" />
|
10
|
+
</a>
|
11
|
+
</div>")
|
12
|
+
|
13
|
+
mediabrowserButtonTemplate = ->
|
14
|
+
icon = $('<i></i>')
|
15
|
+
.addClass('editing-icon')
|
16
|
+
.addClass('editing-icon-plus')
|
17
|
+
|
18
|
+
button = $('<button></button>')
|
19
|
+
.addClass('editing-button')
|
20
|
+
.addClass('editing-green')
|
21
|
+
.addClass('mediabrowser-open')
|
22
|
+
.html(icon)
|
23
|
+
|
24
|
+
button
|
25
|
+
|
26
|
+
# Returns the closest referencelist DOM element.
|
27
|
+
getCmsField = (element) ->
|
28
|
+
element.closest('[data-scrivito-field-type=referencelist]')
|
29
|
+
|
30
|
+
# Saves the referencelist to the CMS when changed and stores the last successfully saved value.
|
31
|
+
save = (ids, cmsField) ->
|
32
|
+
lastSaved = getLastSaved(cmsField)
|
33
|
+
|
34
|
+
unless JSON.stringify(ids) == JSON.stringify(lastSaved)
|
35
|
+
cmsField.scrivito('save', ids)
|
36
|
+
.done ->
|
37
|
+
storeLastSaved(cmsField, ids)
|
38
|
+
cmsField.trigger('scrivito_reload')
|
39
|
+
|
40
|
+
# Run when clicking the media browser button.
|
41
|
+
onMediabrowserOpen = (event) ->
|
42
|
+
event.preventDefault()
|
43
|
+
|
44
|
+
cmsField = getCmsField($(event.currentTarget))
|
45
|
+
filters = cmsField.data('filters') || cmsField.data('filter')
|
46
|
+
ids = getIds(cmsField)
|
47
|
+
|
48
|
+
Mediabrowser.open
|
49
|
+
selection: ids
|
50
|
+
filters: filters
|
51
|
+
|
52
|
+
onSave: (selection) =>
|
53
|
+
save(selection, cmsField)
|
54
|
+
|
55
|
+
# Collects all reference ids for a given referencelist.
|
56
|
+
getIds = (cmsField) ->
|
57
|
+
items = $(cmsField).find('li')
|
58
|
+
|
59
|
+
value =
|
60
|
+
for item in items
|
61
|
+
$(item).data('id')
|
62
|
+
|
63
|
+
# Removes a single reference from the referencelist.
|
64
|
+
remove = (event) ->
|
65
|
+
event.preventDefault()
|
66
|
+
|
67
|
+
target = $(event.currentTarget)
|
68
|
+
cmsField = getCmsField(target)
|
69
|
+
|
70
|
+
target.closest('li').remove()
|
71
|
+
|
72
|
+
ids = getIds(cmsField)
|
73
|
+
save(ids, cmsField)
|
74
|
+
|
75
|
+
# Turns the server side generated referencelist data into the reference editor using a template.
|
76
|
+
transform = (elements) ->
|
77
|
+
elements.append(mediabrowserButtonTemplate)
|
78
|
+
|
79
|
+
items = elements.find('li')
|
80
|
+
|
81
|
+
for item in items
|
82
|
+
$(item).append(itemTemplate)
|
83
|
+
|
84
|
+
# Returns the last saved value.
|
85
|
+
getLastSaved = (cmsField) ->
|
86
|
+
$(cmsField).data('last-saved')
|
87
|
+
|
88
|
+
# Stores a given value as last saved.
|
89
|
+
storeLastSaved = (cmsField, value) ->
|
90
|
+
$(cmsField).data('last-saved', value)
|
91
|
+
|
92
|
+
# Initialize referencelist editor and setup event callbacks.
|
93
|
+
scrivito.on 'new_content', (root) ->
|
94
|
+
elements = $(root).find('[data-scrivito-field-type="referencelist"]:not([data-editor]), [data-editor="referencelist"]')
|
95
|
+
|
96
|
+
if elements.length
|
97
|
+
transform(elements)
|
98
|
+
|
99
|
+
for element in elements
|
100
|
+
ids = getIds(element)
|
101
|
+
storeLastSaved(element, ids)
|
102
|
+
|
103
|
+
elements.on 'click', 'li a.delete', remove
|
104
|
+
elements.on 'click', 'button.mediabrowser-open', onMediabrowserOpen
|
105
|
+
|
106
|
+
elements.find('ul').sortable
|
107
|
+
update: (event) ->
|
108
|
+
cmsField = getCmsField($(event.target))
|
109
|
+
ids = getIds(cmsField)
|
110
|
+
|
111
|
+
save(ids, cmsField)
|
@@ -0,0 +1,39 @@
|
|
1
|
+
$ ->
|
2
|
+
# Slider for integer values stored in a string CMS attribute.
|
3
|
+
|
4
|
+
scrivito.on 'editing', ->
|
5
|
+
template = ->
|
6
|
+
$('<div></div>')
|
7
|
+
|
8
|
+
onStop = (event, ui) ->
|
9
|
+
cmsField = $(@).data('cmsField')
|
10
|
+
content = ui.value
|
11
|
+
cmsField.scrivito('save', content).done ->
|
12
|
+
cmsField.trigger('scrivito_reload')
|
13
|
+
|
14
|
+
onSlide = (event, ui) ->
|
15
|
+
cmsField = $(@).data('cmsField')
|
16
|
+
content = ui.value
|
17
|
+
cmsField.text(ui.value)
|
18
|
+
|
19
|
+
$('body').on 'click', '[data-editor="slider"]:not(.active)', (event) ->
|
20
|
+
cmsField = $(event.currentTarget)
|
21
|
+
content = cmsField.scrivito('content')
|
22
|
+
min = cmsField.attr('data-min') || 1
|
23
|
+
max = cmsField.attr('data-max') || 10
|
24
|
+
step = cmsField.attr('data-step') || 1
|
25
|
+
|
26
|
+
cmsField.addClass('active')
|
27
|
+
|
28
|
+
template()
|
29
|
+
.data('cmsField', cmsField)
|
30
|
+
.insertAfter(cmsField)
|
31
|
+
.slider(
|
32
|
+
min: parseInt(min)
|
33
|
+
max: parseInt(max)
|
34
|
+
step: parseInt(step)
|
35
|
+
value: content
|
36
|
+
range: 'min'
|
37
|
+
stop: onStop
|
38
|
+
slide: onSlide
|
39
|
+
)
|
@@ -0,0 +1,83 @@
|
|
1
|
+
$ ->
|
2
|
+
# This file integrates contenteditable for string attributes.
|
3
|
+
|
4
|
+
scrivito.on 'editing', ->
|
5
|
+
cmsField = undefined
|
6
|
+
timeout = undefined
|
7
|
+
|
8
|
+
onKey = (event) ->
|
9
|
+
if timeout?
|
10
|
+
clearTimeout(timeout)
|
11
|
+
|
12
|
+
if cmsField?
|
13
|
+
key = event.keyCode || event.which
|
14
|
+
|
15
|
+
switch key
|
16
|
+
when 13 # Enter
|
17
|
+
event.preventDefault()
|
18
|
+
cmsField.blur()
|
19
|
+
when 27 # Esc
|
20
|
+
if event.type == 'keyup'
|
21
|
+
event.stopPropagation()
|
22
|
+
cmsField
|
23
|
+
.off('blur')
|
24
|
+
.trigger('scrivito_reload')
|
25
|
+
cmsField = undefined
|
26
|
+
else
|
27
|
+
setTimeout(cleanUp)
|
28
|
+
timeout = setTimeout ( ->
|
29
|
+
save(false)
|
30
|
+
), 3000
|
31
|
+
|
32
|
+
onBlur = (event) ->
|
33
|
+
if cmsField?
|
34
|
+
field = cmsField
|
35
|
+
|
36
|
+
save(true).done ->
|
37
|
+
if field.attr('data-reload') == 'true'
|
38
|
+
field.trigger('scrivito_reload')
|
39
|
+
|
40
|
+
save = (andClose) ->
|
41
|
+
if timeout?
|
42
|
+
clearTimeout(timeout)
|
43
|
+
|
44
|
+
cleanUp()
|
45
|
+
|
46
|
+
clone = cmsFieldAndPastedContent().clone()
|
47
|
+
clone.find('br').replaceWith('\n')
|
48
|
+
content = clone.text()
|
49
|
+
clone.remove()
|
50
|
+
|
51
|
+
field = cmsField
|
52
|
+
|
53
|
+
if andClose
|
54
|
+
cmsField.text(content)
|
55
|
+
cmsField = undefined
|
56
|
+
|
57
|
+
field.scrivito('save', content)
|
58
|
+
|
59
|
+
cleanUp = ->
|
60
|
+
siblings = cmsFieldAndPastedContent()
|
61
|
+
pasted = siblings.not(cmsField)
|
62
|
+
if pasted.length > 0
|
63
|
+
pasted.remove()
|
64
|
+
cmsField.text(siblings.text())
|
65
|
+
|
66
|
+
cmsFieldAndPastedContent = ->
|
67
|
+
cmsField.siblings().addBack().not(cmsField.data('siblings_before_edit'))
|
68
|
+
|
69
|
+
$('body').on 'mouseenter', '[data-scrivito-field-type="string"]:not([data-editor]), [data-editor="string"]', (event) ->
|
70
|
+
unless cmsField?
|
71
|
+
cmsField = $(event.currentTarget)
|
72
|
+
|
73
|
+
unless cmsField.attr('contenteditable')?
|
74
|
+
cmsField
|
75
|
+
.data('siblings_before_edit', cmsField.siblings())
|
76
|
+
.attr('contenteditable', true)
|
77
|
+
.blur(onBlur)
|
78
|
+
.keypress(onKey)
|
79
|
+
.keyup(onKey)
|
80
|
+
|
81
|
+
# Prevent editable link strings to follow the link target on click.
|
82
|
+
$('body').on 'click', '[data-scrivito-field-type="string"]:not([data-editor]), [data-editor="string"]', (event) ->
|
83
|
+
event.preventDefault()
|
@@ -0,0 +1,85 @@
|
|
1
|
+
$ ->
|
2
|
+
# This file integrates contenteditable for text attributes.
|
3
|
+
# It provides multiline editing support.
|
4
|
+
|
5
|
+
scrivito.on 'editing', ->
|
6
|
+
cmsField = undefined
|
7
|
+
timeout = undefined
|
8
|
+
|
9
|
+
onKey = (event) ->
|
10
|
+
if timeout?
|
11
|
+
clearTimeout(timeout)
|
12
|
+
|
13
|
+
if cmsField?
|
14
|
+
key = event.keyCode || event.which
|
15
|
+
|
16
|
+
switch key
|
17
|
+
when 27 # Esc
|
18
|
+
if event.type == 'keyup'
|
19
|
+
event.stopPropagation()
|
20
|
+
cmsField
|
21
|
+
.off('blur')
|
22
|
+
.trigger('scrivito_reload')
|
23
|
+
cmsField = undefined
|
24
|
+
else
|
25
|
+
setTimeout(cleanUp)
|
26
|
+
timeout = setTimeout ( ->
|
27
|
+
save(false)
|
28
|
+
), 3000
|
29
|
+
|
30
|
+
onBlur = (event) ->
|
31
|
+
if cmsField?
|
32
|
+
field = cmsField
|
33
|
+
|
34
|
+
save(true).done ->
|
35
|
+
if field.attr('data-reload') == 'true'
|
36
|
+
field.trigger('scrivito_reload')
|
37
|
+
|
38
|
+
save = (andClose) ->
|
39
|
+
if timeout?
|
40
|
+
clearTimeout(timeout)
|
41
|
+
|
42
|
+
cleanUp()
|
43
|
+
|
44
|
+
clone = cmsFieldAndPastedContent().clone()
|
45
|
+
clone.find('br').replaceWith('\n')
|
46
|
+
content = clone.text()
|
47
|
+
clone.remove()
|
48
|
+
|
49
|
+
field = cmsField
|
50
|
+
|
51
|
+
if andClose
|
52
|
+
cmsField.text(content)
|
53
|
+
cmsField = undefined
|
54
|
+
|
55
|
+
field.scrivito('save', content)
|
56
|
+
|
57
|
+
cleanUp = ->
|
58
|
+
siblings = cmsFieldAndPastedContent()
|
59
|
+
pasted = siblings.not(cmsField)
|
60
|
+
if pasted.length > 0
|
61
|
+
pasted.remove()
|
62
|
+
cmsField.text(siblings.text())
|
63
|
+
|
64
|
+
cmsFieldAndPastedContent = ->
|
65
|
+
cmsField.siblings().addBack().not(cmsField.data('siblings_before_edit'))
|
66
|
+
|
67
|
+
$('body').on 'mouseenter', '[data-scrivito-field-type="text"]:not([data-editor]), [data-editor="text"]', (event) ->
|
68
|
+
unless cmsField?
|
69
|
+
cmsField = $(event.currentTarget)
|
70
|
+
|
71
|
+
html = cmsField.html()
|
72
|
+
html_nl2br = html.replace(/\n/g, '<br />')
|
73
|
+
cmsField.html(html_nl2br) if html != html_nl2br
|
74
|
+
|
75
|
+
unless cmsField.attr('contenteditable')?
|
76
|
+
cmsField
|
77
|
+
.data('siblings_before_edit', cmsField.siblings())
|
78
|
+
.attr('contenteditable', true)
|
79
|
+
.blur(onBlur)
|
80
|
+
.keypress(onKey)
|
81
|
+
.keyup(onKey)
|
82
|
+
|
83
|
+
# Prevent editable link text to follow the link target on click.
|
84
|
+
$('body').on 'click', '[data-scrivito-field-type="text"]:not([data-editor]), [data-editor="text"]', (event) ->
|
85
|
+
event.preventDefault()
|
@@ -0,0 +1,16 @@
|
|
1
|
+
/*
|
2
|
+
* This is a manifest file that'll be compiled into application.css, which will include all the files
|
3
|
+
* listed below.
|
4
|
+
*
|
5
|
+
* Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
|
6
|
+
* or vendor/assets/stylesheets of plugins, if any, can be referenced here using a relative path.
|
7
|
+
*
|
8
|
+
* You're free to add application-wide styles to this file and they'll appear at the top of the
|
9
|
+
* compiled file, but it's generally better to create a new file per style scope.
|
10
|
+
*
|
11
|
+
*= require jquery.ui.datepicker
|
12
|
+
*= require jquery.ui.slider
|
13
|
+
*= require jquery-ui-timepicker-addon.min
|
14
|
+
*= require redactor
|
15
|
+
*= require_tree .
|
16
|
+
*/
|
@@ -0,0 +1,161 @@
|
|
1
|
+
/*
|
2
|
+
Defines various button styles used throughout the inplace editing GUI. Button styles are not
|
3
|
+
bound to one particular inplace editing feature, but are shared accross the menubar, the
|
4
|
+
mediabrowser or on edit views.
|
5
|
+
*/
|
6
|
+
|
7
|
+
.editing-button {
|
8
|
+
color: #555;
|
9
|
+
cursor: pointer;
|
10
|
+
border:0px;
|
11
|
+
display: inline-block;
|
12
|
+
font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
|
13
|
+
font-size: 14px;
|
14
|
+
font-weight: normal;
|
15
|
+
line-height: 14px;
|
16
|
+
margin: 0 10px 10px 0;
|
17
|
+
min-height: 14px;
|
18
|
+
min-width: 30px;
|
19
|
+
padding: 8px 15px;
|
20
|
+
text-align: center;
|
21
|
+
vertical-align: middle;
|
22
|
+
background: #fcfcfc;
|
23
|
+
-webkit-border-radius: 5px;
|
24
|
+
-moz-border-radius: 5px;
|
25
|
+
border-radius: 5px;
|
26
|
+
-webkit-box-shadow: 0 0 5px rgba(0,0,0,.2);
|
27
|
+
-moz-box-shadow: 0 0 5px rgba(0,0,0,.2);
|
28
|
+
box-shadow: 0 0 5px rgba(0,0,0,.2);
|
29
|
+
-webkit-user-select: none;
|
30
|
+
-moz-user-select: none;
|
31
|
+
-ms-user-select: none;
|
32
|
+
-o-user-select: none;
|
33
|
+
user-select: none;
|
34
|
+
}
|
35
|
+
|
36
|
+
.editing-button:hover {
|
37
|
+
color: #333;
|
38
|
+
cursor: pointer;
|
39
|
+
background: #fff;
|
40
|
+
}
|
41
|
+
|
42
|
+
.editing-button:active {
|
43
|
+
color: #333;
|
44
|
+
cursor: pointer;
|
45
|
+
background: #eee;
|
46
|
+
}
|
47
|
+
|
48
|
+
input.editing-button {
|
49
|
+
height: 30px;
|
50
|
+
}
|
51
|
+
|
52
|
+
a.editing-button,
|
53
|
+
a.editing-button:active {
|
54
|
+
text-decoration: none;
|
55
|
+
}
|
56
|
+
|
57
|
+
|
58
|
+
.editing-button.editing-blue {
|
59
|
+
background: #516b8b;
|
60
|
+
color: #fff;
|
61
|
+
}
|
62
|
+
|
63
|
+
.editing-button.editing-blue:hover {
|
64
|
+
background: #6781A1;
|
65
|
+
color: #fff;
|
66
|
+
}
|
67
|
+
|
68
|
+
.editing-button.editing-blue:active {
|
69
|
+
background-color: #425C7C;
|
70
|
+
color: #fff;
|
71
|
+
}
|
72
|
+
|
73
|
+
.editing-button.editing-green {
|
74
|
+
background: #658B51;
|
75
|
+
color: #fff;
|
76
|
+
}
|
77
|
+
|
78
|
+
.editing-button.editing-green:hover {
|
79
|
+
background: #7EA46A;
|
80
|
+
color: #fff;
|
81
|
+
}
|
82
|
+
|
83
|
+
.editing-button.editing-green:active {
|
84
|
+
background: #52783E;
|
85
|
+
color: #fff;
|
86
|
+
}
|
87
|
+
|
88
|
+
.editing-button.editing-red {
|
89
|
+
background: #AA4040;
|
90
|
+
color: #fff;
|
91
|
+
}
|
92
|
+
|
93
|
+
.editing-button.editing-red:hover {
|
94
|
+
background: #C05656;
|
95
|
+
color: #fff;
|
96
|
+
}
|
97
|
+
|
98
|
+
.editing-button.editing-red:active {
|
99
|
+
background: #A03636;
|
100
|
+
color: #fff;
|
101
|
+
}
|
102
|
+
|
103
|
+
.editing-button.editing-yellow {
|
104
|
+
background: #D8D63A;
|
105
|
+
color: #666;
|
106
|
+
}
|
107
|
+
|
108
|
+
.editing-button.editing-yellow:hover {
|
109
|
+
background: #F0EE52;
|
110
|
+
color: #666;
|
111
|
+
}
|
112
|
+
|
113
|
+
.editing-button.editing-yellow:active {
|
114
|
+
background: #CBC92D;
|
115
|
+
color: #666;
|
116
|
+
}
|
117
|
+
|
118
|
+
.editing-button.editing-disabled,
|
119
|
+
.editing-button.editing-disabled:hover,
|
120
|
+
.editing-button.editing-disabled:active {
|
121
|
+
color: #aaa!important;
|
122
|
+
cursor: not-allowed;
|
123
|
+
background: #eee;
|
124
|
+
}
|
125
|
+
|
126
|
+
.editing-button.editing-disabled .editing-icon,
|
127
|
+
.editing-button.editing-disabled .editing-icon:hover {
|
128
|
+
color: #aaa!important;
|
129
|
+
cursor: not-allowed;
|
130
|
+
}
|
131
|
+
|
132
|
+
.editing-button .editing-icon {
|
133
|
+
color: #333;
|
134
|
+
font-size: 9px;
|
135
|
+
line-height: 14px;
|
136
|
+
}
|
137
|
+
|
138
|
+
.editing-button .editing-icon:hover {
|
139
|
+
cursor: pointer;
|
140
|
+
}
|
141
|
+
|
142
|
+
.editing-button.editing-blue .editing-icon,
|
143
|
+
.editing-button.editing-green .editing-icon,
|
144
|
+
.editing-button.editing-red .editing-icon,
|
145
|
+
.editing-button.editing-yellow .editing-icon {
|
146
|
+
color: #fff;
|
147
|
+
}
|
148
|
+
|
149
|
+
/*
|
150
|
+
Styling for buttons in the details view dialog.
|
151
|
+
*/
|
152
|
+
|
153
|
+
.details-view [data-scrivito-field-type="string"] .editing-button,
|
154
|
+
.details-view [data-scrivito-field-type="text"] .editing-button,
|
155
|
+
.details-view [data-scrivito-field-type="html"] .editing-button,
|
156
|
+
.details-view [data-scrivito-field-type="linklist"] .editing-button,
|
157
|
+
.details-view [data-scrivito-field-type="referencelist"] .editing-button,
|
158
|
+
.details-view [data-scrivito-field-type="reference"] .editing-button,
|
159
|
+
.details-view [data-scrivito-field-type="date"] .editing-button {
|
160
|
+
margin: 10px 10px 0 0;
|
161
|
+
}
|