nacelle 0.2.4 → 0.3.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/assets/javascripts/ckeditor/plugins/cells/dialogs/cells.js +97 -5
- data/gemfiles/rails_5.1.gemfile.lock +1 -1
- data/gemfiles/rails_5.2.gemfile.lock +1 -1
- data/gemfiles/rails_6.0.gemfile.lock +1 -1
- data/gemfiles/rails_6.1.gemfile.lock +4 -2
- data/gemfiles/rails_7.0.gemfile.lock +1 -1
- data/lib/nacelle/cell.rb +1 -0
- data/lib/nacelle/cells_serializer.rb +7 -0
- data/lib/nacelle/version.rb +1 -1
- data/lib/nacelle.rb +5 -3
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fddb49454b875b128c22c7a91263b9ef907d91d795dfba093dd21148d8db5ff7
|
4
|
+
data.tar.gz: 6eb1b433fb3486b60b2a8f8064eb73fa8f6b5d8572363e46a0c6574232c84804
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ebb593f685e118e2862f2b15d0c8094d4d6bc5458e9d0be8566a67cc2302950a155146d8e317d586f27b24ced5d23d1b0345bc9750738c5753695c5d12fae9b6
|
7
|
+
data.tar.gz: e641fe10a84be8d951d78cda66b18ce9859d9c976a18d9f1f82c83eaa47888fe8287c316b2b153bda1e53b68ce8cfa76295c21988b6987441c9153208bc33394
|
@@ -10,24 +10,116 @@ CKEDITOR.dialog.add("cellDialog", function(editor) {
|
|
10
10
|
id: "cellName",
|
11
11
|
label: "Select Cell",
|
12
12
|
items: [],
|
13
|
+
onChange: (event) => {
|
14
|
+
let select = event.sender
|
15
|
+
let dialog = select.getDialog()
|
16
|
+
let form = dialog.getContentElement("main", "form")
|
17
|
+
let cellConfig = dialog.cellConfigs.find(config => config.id === event.data.value)
|
18
|
+
|
19
|
+
form.getElement().setHtml(cellConfig.form)
|
20
|
+
|
21
|
+
if(selectedCell = getSelectedCell()) {
|
22
|
+
form.getElement().$.querySelectorAll("[name]").forEach(element => {
|
23
|
+
setValue(element, selectedCell.getAttribute(element.name))
|
24
|
+
})
|
25
|
+
}
|
26
|
+
},
|
27
|
+
},
|
28
|
+
{
|
29
|
+
type: "html",
|
30
|
+
id: "form",
|
31
|
+
html: "",
|
13
32
|
}],
|
14
33
|
}],
|
15
34
|
|
16
35
|
onShow: function() {
|
17
36
|
fetch("/nacelle/cells.json").then(r => r.json()).then(data => {
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
37
|
+
this.cellConfigs = data.cells
|
38
|
+
let select = this.getContentElement("main", "cellName")
|
39
|
+
select.clear()
|
40
|
+
|
41
|
+
this.cellConfigs.forEach(config => select.add(config.name, config.id))
|
42
|
+
|
43
|
+
let selectedCell = getSelectedCell()
|
44
|
+
if(selectedCell) {
|
45
|
+
select.setValue(selectedCell.getAttribute("name"))
|
22
46
|
}
|
23
47
|
});
|
24
48
|
},
|
25
49
|
|
26
50
|
onOk: function() {
|
27
|
-
|
51
|
+
let cell = editor.document.createElement("cell")
|
28
52
|
cell.setAttribute("name", this.getValueOf("main", "cellName"));
|
53
|
+
|
54
|
+
let form = this.getContentElement("main", "form")
|
55
|
+
form.getElement().$.querySelectorAll("[name]").forEach(element => {
|
56
|
+
cell.setAttribute(element.name, getValue(element))
|
57
|
+
})
|
58
|
+
|
29
59
|
editor.insertElement(cell)
|
30
60
|
},
|
31
61
|
};
|
62
|
+
|
63
|
+
function getSelectedCell() {
|
64
|
+
let node = editor.getSelectedHtml().$.firstElementChild
|
65
|
+
if(node && node.nodeName == "CELL") {
|
66
|
+
return node
|
67
|
+
}
|
68
|
+
}
|
69
|
+
|
70
|
+
function getValue(element) {
|
71
|
+
switch(element.type) {
|
72
|
+
case 'radio':
|
73
|
+
case 'checkbox':
|
74
|
+
const elements = document.querySelectorAll(`[name="${element.name}"]:checked`)
|
75
|
+
const values = Array.from(elements).map(e => e.value)
|
76
|
+
if(element.name.endsWith("[]")) {
|
77
|
+
return values
|
78
|
+
} else {
|
79
|
+
return values[0]
|
80
|
+
}
|
81
|
+
default:
|
82
|
+
return element.value
|
83
|
+
}
|
84
|
+
}
|
85
|
+
|
86
|
+
function setValue(element, value) {
|
87
|
+
if ('undefined' === typeof value) {
|
88
|
+
value = '';
|
89
|
+
}
|
90
|
+
|
91
|
+
if (null === value) {
|
92
|
+
value = '';
|
93
|
+
}
|
94
|
+
|
95
|
+
var type = element.type || element[0].type;
|
96
|
+
|
97
|
+
switch(type ) {
|
98
|
+
default:
|
99
|
+
element.value = value;
|
100
|
+
break;
|
101
|
+
|
102
|
+
case 'radio':
|
103
|
+
case 'checkbox':
|
104
|
+
element.checked = element.value === value;
|
105
|
+
break;
|
106
|
+
|
107
|
+
case 'select-multiple':
|
108
|
+
var values = value.constructor === Array ? value : [value];
|
109
|
+
for(var k = 0; k < element.options.length; k++) {
|
110
|
+
element.options[k].selected = (values.indexOf(element.options[k].value) > -1 );
|
111
|
+
}
|
112
|
+
break;
|
113
|
+
|
114
|
+
case 'select':
|
115
|
+
case 'select-one':
|
116
|
+
element.value = value.toString() || value;
|
117
|
+
break;
|
118
|
+
|
119
|
+
case 'date':
|
120
|
+
element.value = new Date(value).toISOString().split('T')[0];
|
121
|
+
break;
|
122
|
+
}
|
123
|
+
};
|
32
124
|
});
|
33
125
|
|
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: ..
|
3
3
|
specs:
|
4
|
-
nacelle (0.2
|
4
|
+
nacelle (0.3.2)
|
5
5
|
cells (~> 3.0)
|
6
6
|
rails
|
7
7
|
sprockets-rails
|
@@ -104,9 +104,11 @@ GEM
|
|
104
104
|
marcel (1.0.2)
|
105
105
|
method_source (1.0.0)
|
106
106
|
mini_mime (1.1.2)
|
107
|
+
mini_portile2 (2.6.1)
|
107
108
|
minitest (5.15.0)
|
108
109
|
nio4r (2.5.8)
|
109
|
-
nokogiri (1.12.5
|
110
|
+
nokogiri (1.12.5)
|
111
|
+
mini_portile2 (~> 2.6.1)
|
110
112
|
racc (~> 1.4)
|
111
113
|
public_suffix (4.0.6)
|
112
114
|
racc (1.6.0)
|
data/lib/nacelle/cell.rb
CHANGED
@@ -14,6 +14,7 @@ class Nacelle::CellsSerializer
|
|
14
14
|
{
|
15
15
|
id: "#{cell}/#{action}",
|
16
16
|
name: "#{cell_name} #{action_name}",
|
17
|
+
form: settings_html_for(cell, action),
|
17
18
|
}
|
18
19
|
end
|
19
20
|
end
|
@@ -30,4 +31,10 @@ class Nacelle::CellsSerializer
|
|
30
31
|
cell_files = Dir[::Rails.root.join('app/cells/*.rb')]
|
31
32
|
cell_files.each(&method(:require))
|
32
33
|
end
|
34
|
+
|
35
|
+
def settings_html_for cell, action
|
36
|
+
path = ::Rails.root.join("app/cells/#{cell}/#{action}_form.html.erb")
|
37
|
+
ERB.new(File.read(path)).result
|
38
|
+
rescue Errno::ENOENT
|
39
|
+
end
|
33
40
|
end
|
data/lib/nacelle/version.rb
CHANGED
data/lib/nacelle.rb
CHANGED
@@ -10,8 +10,10 @@ module Nacelle
|
|
10
10
|
app.config.middleware.use Nacelle::Middleware
|
11
11
|
end
|
12
12
|
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
initializer "nacelle.assets.precompile" do |app|
|
14
|
+
app.config.assets.precompile += %w(
|
15
|
+
ckeditor/plugins/cells/icons/insertcell.png
|
16
|
+
)
|
17
|
+
end
|
16
18
|
end
|
17
19
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nacelle
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2
|
4
|
+
version: 0.3.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Micah Geisel
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-08-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|