nacelle 0.2.4 → 0.3.2
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 +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
|