card-mod-tinymce_editor 0.14.2 → 0.15.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/assets/script/image_editor.js.coffee +59 -0
- data/assets/script/link_editor.js.coffee +61 -0
- data/assets/script/nest_editor.js.coffee +171 -0
- data/assets/script/nest_editor_name.js.coffee +115 -0
- data/assets/script/nest_editor_options.js.coffee +197 -0
- data/assets/script/nest_editor_rules.js.coffee +3 -0
- data/assets/script/{script_tinymce_config.js.coffee → tinymce_config.js.coffee} +3 -6
- data/assets/style/nest_editor.scss +55 -0
- data/data/files/mod_tinymce_editor_script_asset_output/file.js +37 -0
- data/data/files/mod_tinymce_editor_script_local_machine_output/file.js +82 -0
- data/{db/migrate_core_cards/20171113233151_update_tinymce_config.rb → data/real.yml} +8 -15
- data/lib/card/reference/nest_parser.rb +27 -11
- data/locales/en.yml +9 -0
- data/set/all/reference_editor/_image_nest_editor.haml +2 -0
- data/set/all/reference_editor/_link_editor.haml +8 -6
- data/set/all/reference_editor/_nest_editor.haml +13 -15
- data/set/all/reference_editor/link_editor.rb +4 -2
- data/set/all/reference_editor/nest_editor/_basics.haml +5 -0
- data/set/all/reference_editor/nest_editor/_image_find.haml +7 -0
- data/set/all/reference_editor/nest_editor/_image_options.haml +8 -0
- data/set/all/reference_editor/nest_editor/_options.haml +18 -10
- data/set/all/reference_editor/nest_editor/_options_select.haml +6 -5
- data/set/all/reference_editor/nest_editor/_options_select_row.haml +7 -8
- data/set/all/reference_editor/nest_editor/nest_editor_options.rb +95 -0
- data/set/all/reference_editor/nest_editor/nest_editor_tabs.rb +59 -0
- data/set/all/reference_editor/nest_editor.rb +16 -80
- data/set/all/reference_editor/nest_image.rb +9 -8
- data/set/all/reference_editor/reference_editor.haml +11 -9
- data/set/all/reference_editor.rb +1 -1
- data/set/all/tinymce_editor.rb +5 -1
- metadata +26 -13
- data/db/migrate_core_cards/20160804112560_add_tinymce_cards.rb +0 -42
- data/db/migrate_core_cards/20190306172623_update_tinymce_config_to_v5.rb +0 -23
- data/db/migrate_core_cards/20190306172890_tinymce_add_nest_to_toolbar.rb +0 -11
- data/set/all/reference_editor/nest_editor/_help.haml +0 -7
@@ -1,22 +1,15 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
1
|
+
- :name: "*tinyMCE"
|
2
|
+
:type: :json
|
3
|
+
:codename: tiny_mce
|
4
|
+
:content: |
|
5
5
|
{
|
6
|
-
"theme": "
|
6
|
+
"theme": "silver",
|
7
7
|
"menubar": "edit view insert format table",
|
8
|
-
"plugins": "autoresize code lists hr link autolink table
|
9
|
-
"toolbar1": "formatselect | bold italic strikethrough forecolor backcolor |
|
8
|
+
"plugins": "autoresize code lists hr link autolink table",
|
9
|
+
"toolbar1": "formatselect | bold italic strikethrough forecolor backcolor | deckolink nest | | numlist bullist outdent indent | removeformat",
|
10
10
|
"width":"100%",
|
11
11
|
"auto_resize":true,
|
12
12
|
"autoresize_max_height": 500,
|
13
13
|
"relative_urls":false,
|
14
14
|
"extended_valid_elements":"a[name|href|target|title|onclick],img[class|src|border=0|alt|title|hspace|vspace|width|height|align|onmouseover|onmouseout|name],hr[class|width|size|noshade],font[face|size|color|style],span[class|align|style]"
|
15
|
-
}
|
16
|
-
JSON
|
17
|
-
|
18
|
-
def up
|
19
|
-
ensure_card :tiny_mce,
|
20
|
-
content: TINYMCE_CONF
|
21
|
-
end
|
22
|
-
end
|
15
|
+
}
|
@@ -5,30 +5,44 @@ class Card
|
|
5
5
|
class NestParser
|
6
6
|
NEST_OPTIONS = %i[view title show hide wrap help variant size params].freeze
|
7
7
|
|
8
|
-
attr_reader :name, :options, :item_options, :raw
|
8
|
+
attr_reader :name, :view, :options, :item_options, :raw
|
9
9
|
|
10
|
-
def self.new nest_string
|
10
|
+
def self.new nest_string
|
11
11
|
return super if nest_string.is_a? String
|
12
12
|
|
13
13
|
OpenStruct.new(name: "", field?: true,
|
14
|
-
options: [
|
15
|
-
raw: "{{
|
14
|
+
options: [], item_options: [],
|
15
|
+
raw: "{{+ }}")
|
16
16
|
end
|
17
17
|
|
18
18
|
def self.new_image name
|
19
|
-
OpenStruct.new(name: name, field?:
|
20
|
-
|
19
|
+
OpenStruct.new(name: name, field?: false,
|
20
|
+
view: "content",
|
21
|
+
options: [%i[size medium]],
|
21
22
|
item_options: [],
|
22
|
-
raw: "{{
|
23
|
+
raw: "{{#{name}|view: content; size: medium}}")
|
24
|
+
end
|
25
|
+
|
26
|
+
def empty?
|
27
|
+
@raw.empty? || @raw =~ /\{\{+?\s*\|?\s*\}\}/
|
23
28
|
end
|
24
29
|
|
25
30
|
def field?
|
26
31
|
@field
|
27
32
|
end
|
28
33
|
|
29
|
-
def
|
34
|
+
def field!
|
35
|
+
@raw.sub!(/\{\{\s*\+?/, "{{+")
|
36
|
+
@field = true
|
37
|
+
end
|
38
|
+
|
39
|
+
def option_value name
|
40
|
+
options.find { |(key, _value)| key == name }&.second
|
41
|
+
end
|
42
|
+
|
43
|
+
def initialize nest_string
|
30
44
|
@raw = nest_string
|
31
|
-
@default_item_view = default_item_view
|
45
|
+
# @default_item_view = default_item_view
|
32
46
|
nest = Card::Content::Chunk::Nest.new nest_string, nil
|
33
47
|
init_name nest.name
|
34
48
|
extract_item_options nest.options
|
@@ -42,10 +56,12 @@ class Card
|
|
42
56
|
@name = @field ? name.to_s[1..-1] : name
|
43
57
|
end
|
44
58
|
|
45
|
-
def extract_options options
|
59
|
+
def extract_options options, item_options=false
|
46
60
|
applicable_options(options).each_with_object([]) do |key, res|
|
47
61
|
if key.in? %i[show hide]
|
48
62
|
res.concat viz_values(key, options)
|
63
|
+
elsif key == :view && !item_options
|
64
|
+
@view = options[key]
|
49
65
|
else
|
50
66
|
res << [key, options[key]]
|
51
67
|
end
|
@@ -65,7 +81,7 @@ class Card
|
|
65
81
|
item_options = options[:items]
|
66
82
|
while item_options
|
67
83
|
next_item_options = item_options[:items]
|
68
|
-
@item_options << extract_options(item_options)
|
84
|
+
@item_options << extract_options(item_options, true)
|
69
85
|
item_options = next_item_options
|
70
86
|
end
|
71
87
|
# @item_options << default_item_options
|
data/locales/en.yml
ADDED
@@ -0,0 +1,9 @@
|
|
1
|
+
en:
|
2
|
+
tinymce_editor_nest_editor_card_help_text: Hello
|
3
|
+
tinymce_editor_nest_editor_card_help_title: Title
|
4
|
+
tinymce_editor_nest_editor_view_help_title: Hello
|
5
|
+
tinymce_editor_nest_editor_view_help_text: World
|
6
|
+
tinymce_editor_image_nest_editor_name_help_text: Hello
|
7
|
+
tinymce_editor_image_nest_editor_name_help_title: World
|
8
|
+
tinymce_editor_image_nest_editor_view_help_text: World
|
9
|
+
tinymce_editor_image_nest_editor_view_help_title: Hello
|
@@ -1,17 +1,19 @@
|
|
1
|
-
.
|
1
|
+
.row.align-items-center.mb-4.ms-1
|
2
2
|
.col-9
|
3
3
|
.input-group{class: [snippet.field? ? "show-prefix" : "hide-prefix"]}
|
4
|
-
.input-group-
|
5
|
-
|
6
|
-
|
7
|
-
|
4
|
+
.input-group-text.text-muted._field-indicator
|
5
|
+
+
|
6
|
+
= text_field_tag "link_name", snippet.name,
|
7
|
+
class: "form-control _link-target _autocomplete",
|
8
|
+
placeholder: "URL or Card name",
|
9
|
+
"data-options-card": [:all, :by_name].to_name
|
8
10
|
|
9
11
|
.col-3
|
10
12
|
= check_box_tag :field, "field", snippet.field?,
|
11
13
|
class: "_link-field-toggle", id: "link-editor-field"
|
12
14
|
%label.form-check-label{for: "link-editor-field"} field
|
13
15
|
|
14
|
-
.
|
16
|
+
.row.align-items-center.mb-4.ms-1.me-1
|
15
17
|
.col-12
|
16
18
|
%label.form-check-label{for: "link_title"} Text to display
|
17
19
|
= text_field_tag "link_title", snippet.title, class: "form-control _link-title"
|
@@ -1,17 +1,15 @@
|
|
1
|
-
.form
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
= check_box_tag :field, "field", snippet.field?,
|
14
|
-
class: "_nest-field-toggle", id: "nest-editor-field"
|
15
|
-
%label.form-check-label{for: "nest-editor-field"} field
|
1
|
+
.form-group
|
2
|
+
%label{:for => "nest_name"} Card
|
3
|
+
= help_link t(:tinymce_editor_nest_editor_card_help_text), t(:tinymce_editor_nest_editor_card_help_title)
|
4
|
+
.input-group{class: [snippet.field? ? "show-prefix" : "hide-prefix"]}
|
5
|
+
.input-group-text.text-muted._field-indicator
|
6
|
+
+
|
7
|
+
= text_field_tag "nest_name", snippet.name, class: "form-control _nest-name _autocomplete ",
|
8
|
+
"data-left-name" => card.name,
|
9
|
+
"data-left-type" => card.left_type_for_nest_editor_set_selection,
|
10
|
+
"data-options-card": [:all, :by_name].to_name
|
11
|
+
.input-group-text.btn.btn-secondary._nest-field-toggle
|
12
|
+
+
|
16
13
|
|
14
|
+
.mt-4
|
17
15
|
= nest_editor_tabs
|
@@ -11,9 +11,11 @@ format :html do
|
|
11
11
|
modal_link_editor
|
12
12
|
end
|
13
13
|
|
14
|
-
def
|
14
|
+
def link_editor editor_mode
|
15
15
|
@tm_snippet_editor_mode = editor_mode
|
16
|
-
haml :reference_editor,
|
16
|
+
haml :reference_editor, title: "Link",
|
17
|
+
editor: :link,
|
18
|
+
ref_type: :link, editor_mode: @tm_snippet_editor_mode,
|
17
19
|
apply_opts: link_apply_opts, snippet: link_snippet
|
18
20
|
end
|
19
21
|
|
@@ -0,0 +1,7 @@
|
|
1
|
+
.form-group
|
2
|
+
%label{:for => "nest_name"} Name
|
3
|
+
= help_link t(:tinymce_editor_image_nest_editor_name_help_text), t(:tinymce_editor_image_nest_editor_name_help_title)
|
4
|
+
= # autocomplete_field snippet.name, "image+*type+by name", "form-control _autocomplete _nest-name _image-name"
|
5
|
+
= select_tag "image-name-select", "",
|
6
|
+
class: "_image-card-select _image-name _no-select2-init",
|
7
|
+
"data-dropdown-parent": "true"
|
@@ -1,12 +1,20 @@
|
|
1
|
-
.options
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
1
|
+
._nest-options
|
2
|
+
.options-container
|
3
|
+
%label Options
|
4
|
+
= haml_partial :options_select, template: false, level: 0, data: snippet.options, view_selectable: false
|
5
|
+
- snippet.item_options.each_with_index do |options, i|
|
6
|
+
.options-container._configure-items
|
7
|
+
%label
|
8
|
+
= "#{'sub' * i} item options".strip.capitalize
|
9
|
+
= haml_partial :options_select, template: false, level: i + 1, data: options, view_selectable: true
|
10
|
+
.options-container._configure-items
|
11
|
+
= button_tag "Add #{'sub' * snippet.item_options.size}item options", situation: "secondary", class: "_configure-items-button btn-sm"
|
12
|
+
= haml_partial :options_select, template: true, level: snippet.item_options.size + 1, data: default_nest_editor_item_options, view_selectable: true
|
11
13
|
|
14
|
+
._templates.d-none
|
15
|
+
|
16
|
+
= nest_option_value_default_template
|
17
|
+
= nest_size_select_template
|
18
|
+
= nest_view_select_template
|
19
|
+
= nest_show_and_hide_select_template
|
12
20
|
|
@@ -2,8 +2,9 @@
|
|
2
2
|
- if data
|
3
3
|
- data.each do |name, value|
|
4
4
|
= haml_partial :options_select_row, template: false, name: name,
|
5
|
-
level: level, value: value
|
6
|
-
= haml_partial :options_select_row, template:
|
7
|
-
value: nil
|
8
|
-
|
9
|
-
|
5
|
+
level: level, value: value, view_selectable: view_selectable
|
6
|
+
= haml_partial :options_select_row, template: template, name: nil, level: level,
|
7
|
+
value: nil, view_selectable: view_selectable
|
8
|
+
- if !template
|
9
|
+
= haml_partial :options_select_row, template: true, name: nil, level: level,
|
10
|
+
value: nil, view_selectable: view_selectable
|
@@ -1,10 +1,9 @@
|
|
1
|
-
.
|
2
|
-
.col-6
|
3
|
-
.input-group.input-group-sm.mb-2.mr-2.d-flex.flex-nowrap
|
4
|
-
.input-group-prepend{class: [!name && "d-none"]}
|
5
|
-
%button.btn.btn-secondary.input-group-text.p-1._nest-delete-option{:type => "button"}
|
6
|
-
%small.text-muted
|
7
|
-
= fa_icon :times
|
8
|
-
= nest_option_name_select name, level
|
1
|
+
.row._nest-option-row{class: [template && "_template"]}
|
9
2
|
.col-6
|
3
|
+
.input-group.mb-2.me-2.d-flex.flex-nowrap
|
4
|
+
%button.btn.btn-secondary.input-group-text.p-1._nest-delete-option{:type => "button", class: [!name && "d-none"]}
|
5
|
+
%small.text-muted
|
6
|
+
= fa_icon :times
|
7
|
+
= nest_option_name_select name, level, view_selectable, template
|
8
|
+
.col-6._nest-option-value-col
|
10
9
|
= nest_option_value_select value
|
@@ -0,0 +1,95 @@
|
|
1
|
+
format :html do
|
2
|
+
def nest_option_classes
|
3
|
+
"form-control"
|
4
|
+
end
|
5
|
+
|
6
|
+
def nest_option_name_select selected=nil, level=0,
|
7
|
+
include_view_option=true, template=false
|
8
|
+
classes = "#{nest_option_classes} _nest-option-name"
|
9
|
+
classes += " _new-row" unless selected
|
10
|
+
classes += " _no-select2" if template
|
11
|
+
select_tag "nest_option_name_#{unique_id}",
|
12
|
+
nest_option_name_select_options(selected, level, include_view_option),
|
13
|
+
class: classes, id: nil, "data-placeholder": "Select option"
|
14
|
+
# id: nil ensures that select2 generates its own unique identifier
|
15
|
+
# that ensures that we can clone this tag without breaking select2
|
16
|
+
end
|
17
|
+
|
18
|
+
def nest_option_name_select_options selected, level, include_view_option=true
|
19
|
+
options = [""] + Card::Reference::NestParser::NEST_OPTIONS.dup
|
20
|
+
options.delete :view unless include_view_option
|
21
|
+
options_for_select(
|
22
|
+
options, disabled: nest_option_name_disabled(selected, level),
|
23
|
+
selected: selected
|
24
|
+
)
|
25
|
+
end
|
26
|
+
|
27
|
+
def nest_option_name_disabled selected, level
|
28
|
+
disabled = nest_option_name_disabled_options level
|
29
|
+
disabled = disabled&.map(&:first)
|
30
|
+
disabled&.delete selected if selected
|
31
|
+
disabled
|
32
|
+
end
|
33
|
+
|
34
|
+
def nest_option_name_disabled_options level
|
35
|
+
if level.zero?
|
36
|
+
nest_snippet.options
|
37
|
+
else
|
38
|
+
nest_snippet.item_options[level - 1] || default_nest_editor_item_options
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def nest_view_select selected
|
43
|
+
select_tag :view, options_for_select(view_list.unshift(nil), selected: selected),
|
44
|
+
class: "tags _view-select _nest-option-value",
|
45
|
+
"data-placeholder": "Select view"
|
46
|
+
end
|
47
|
+
|
48
|
+
def image_view_select selected
|
49
|
+
select_tag :view, options_for_select(view_list.unshift(nil), selected: selected),
|
50
|
+
class: "tags _image-view-select",
|
51
|
+
"data-placeholder": "Select view"
|
52
|
+
end
|
53
|
+
|
54
|
+
def image_size_select
|
55
|
+
select_tag :size, size_select_options(:medium), class: "_image-size-select"
|
56
|
+
end
|
57
|
+
|
58
|
+
def nest_option_value_select value=nil
|
59
|
+
text_field_tag "value", value,
|
60
|
+
class: "_nest-option-value #{nest_option_classes}",
|
61
|
+
disabled: !value, id: nil
|
62
|
+
end
|
63
|
+
|
64
|
+
def nest_option_value_default_template
|
65
|
+
text_field_tag "value", nil,
|
66
|
+
class: "_nest-option-template-default _nest-option-value "\
|
67
|
+
"#{nest_option_classes}",
|
68
|
+
id: nil
|
69
|
+
end
|
70
|
+
|
71
|
+
def size_select_options selected=:medium
|
72
|
+
options_for_select(%w[icon small medium large original], selected: selected)
|
73
|
+
end
|
74
|
+
|
75
|
+
def nest_size_select_template
|
76
|
+
nest_option_value_select_tag :size, size_select_options
|
77
|
+
end
|
78
|
+
|
79
|
+
def nest_view_select_template
|
80
|
+
nest_option_value_select_tag :view, options_for_select(view_list)
|
81
|
+
end
|
82
|
+
|
83
|
+
def nest_show_and_hide_select_template
|
84
|
+
nest_option_value_select_tag %i[show hide], options_for_select(all_views)
|
85
|
+
end
|
86
|
+
|
87
|
+
def nest_option_value_select_tag option_names, options
|
88
|
+
wrap_classes =
|
89
|
+
Array.wrap(option_names).map { |name| "_nest-option-template-#{name}" }.join " "
|
90
|
+
wrap_with :div, class: wrap_classes do
|
91
|
+
select_tag :size, options,
|
92
|
+
class: "_no-select2 _nest-option-value #{nest_option_classes}"
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
format :html do
|
2
|
+
def nest_editor_tabs
|
3
|
+
tab_hash = {}
|
4
|
+
# tab_hash[:content] = nest_content_tab if voo.show? :content_tab
|
5
|
+
tab_hash.merge! view: haml(:_basics, snippet: nest_snippet),
|
6
|
+
options: haml(:_options, snippet: nest_snippet),
|
7
|
+
rules: nest_rules_tab
|
8
|
+
|
9
|
+
tabs tab_hash, default_active_tab, panel_attr: { class: "nest-options" }
|
10
|
+
end
|
11
|
+
|
12
|
+
def image_nest_editor_tabs snippet
|
13
|
+
# tab_hash[:content] = nest_content_tab if voo.show? :content_tab
|
14
|
+
tab_hash = { upload: image_content_tab(snippet),
|
15
|
+
select: haml(:_image_find, snippet: snippet),
|
16
|
+
options: haml(:_image_options, snippet: snippet),
|
17
|
+
preview: image_preview_tab(snippet) }
|
18
|
+
|
19
|
+
class_up "nav", "nav-fill"
|
20
|
+
tabs tab_hash, :content, panel_attr: { class: "nest-options" }
|
21
|
+
end
|
22
|
+
|
23
|
+
def image_content_tab snippet
|
24
|
+
nest(snippet.name, view: :new_image, type: :image, hide: :guide)
|
25
|
+
end
|
26
|
+
|
27
|
+
def image_find_tab snippet
|
28
|
+
wrap true do
|
29
|
+
nest(snippet.name, view: :new_image, type: :image, hide: :guide)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def image_preview_tab snippet
|
34
|
+
wrap true do
|
35
|
+
nest(snippet.name, view: :core, type: :image, hide: :guide)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def show_content_tab?
|
40
|
+
!card.is_structure?
|
41
|
+
end
|
42
|
+
|
43
|
+
def default_active_tab
|
44
|
+
voo.show?(:content_tab) ? :content : :basics
|
45
|
+
end
|
46
|
+
|
47
|
+
def nest_content_tab
|
48
|
+
name_dependent_slot do
|
49
|
+
@nest_content_tab || nest(card.name.field(nest_snippet.name),
|
50
|
+
view: :nest_content, hide: :guide)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
def nest_rules_tab
|
55
|
+
name_dependent_slot do
|
56
|
+
nest(set_name_for_nest_rules, view: :nest_rules)
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
@@ -27,44 +27,17 @@ format :html do
|
|
27
27
|
end
|
28
28
|
end
|
29
29
|
|
30
|
-
def nest_editor editor_mode
|
30
|
+
def nest_editor editor_mode, ref_type=:nest, title="Nest", editor=nil
|
31
31
|
@tm_snippet_editor_mode = editor_mode
|
32
32
|
voo.hide :content_tab unless show_content_tab?
|
33
|
-
haml :reference_editor,
|
33
|
+
haml :reference_editor, title: title,
|
34
|
+
editor: editor || ref_type,
|
35
|
+
ref_type: ref_type,
|
36
|
+
editor_mode: @tm_snippet_editor_mode,
|
34
37
|
apply_opts: nest_apply_opts,
|
35
38
|
snippet: nest_snippet
|
36
39
|
end
|
37
40
|
|
38
|
-
def nest_editor_tabs
|
39
|
-
tab_hash = {}
|
40
|
-
tab_hash[:content] = nest_content_tab if voo.show? :content_tab
|
41
|
-
tab_hash.merge! options: haml(:_options, snippet: nest_snippet),
|
42
|
-
rules: nest_rules_tab,
|
43
|
-
help: haml(:_help)
|
44
|
-
tabs tab_hash, default_active_tab
|
45
|
-
end
|
46
|
-
|
47
|
-
def show_content_tab?
|
48
|
-
!card.is_structure?
|
49
|
-
end
|
50
|
-
|
51
|
-
def default_active_tab
|
52
|
-
voo.show?(:content_tab) ? :content : :options
|
53
|
-
end
|
54
|
-
|
55
|
-
def nest_content_tab
|
56
|
-
name_dependent_slot do
|
57
|
-
@nest_content_tab || nest(card.name.field(nest_snippet.name),
|
58
|
-
view: :nest_content, hide: :guide)
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
def nest_rules_tab
|
63
|
-
name_dependent_slot do
|
64
|
-
nest(set_name_for_nest_rules, view: :nest_rules)
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
41
|
def name_dependent_slot
|
69
42
|
result = [empty_nest_name_alert(nest_snippet.name.blank?)]
|
70
43
|
result <<
|
@@ -91,8 +64,7 @@ format :html do
|
|
91
64
|
|
92
65
|
def nest_snippet
|
93
66
|
@nest_snippet ||=
|
94
|
-
Card::Reference::NestParser.new params[:tm_snippet_raw]
|
95
|
-
default_nest_view, default_item_view
|
67
|
+
Card::Reference::NestParser.new params[:tm_snippet_raw]
|
96
68
|
end
|
97
69
|
|
98
70
|
def set_name_for_nest_rules
|
@@ -105,63 +77,24 @@ format :html do
|
|
105
77
|
end
|
106
78
|
|
107
79
|
def default_nest_editor_item_options
|
108
|
-
[
|
80
|
+
[]
|
81
|
+
# [[:view, default_item_view]]
|
109
82
|
end
|
110
83
|
|
111
|
-
def
|
112
|
-
|
113
|
-
classes += " _new-row" unless selected
|
114
|
-
select_tag "nest_option_name_#{unique_id}",
|
115
|
-
nest_option_name_select_options(selected, level),
|
116
|
-
class: classes, id: nil
|
117
|
-
# id: nil ensures that select2 generates its own unique identifier
|
118
|
-
# that ensures that we can clone this tag without breaking select2
|
119
|
-
end
|
120
|
-
|
121
|
-
def nest_option_name_select_options selected, level
|
122
|
-
options = selected ? [] : ["--"]
|
123
|
-
options += Card::Reference::NestParser::NEST_OPTIONS
|
124
|
-
options_for_select(
|
125
|
-
options, disabled: nest_option_name_disabled(selected, level),
|
126
|
-
selected: selected
|
127
|
-
)
|
128
|
-
end
|
129
|
-
|
130
|
-
def nest_option_name_disabled selected, level
|
131
|
-
disabled = nest_option_name_disabled_options level
|
132
|
-
disabled = disabled&.map(&:first)
|
133
|
-
disabled&.delete selected if selected
|
134
|
-
disabled
|
135
|
-
end
|
136
|
-
|
137
|
-
def nest_option_name_disabled_options level
|
138
|
-
if level.zero?
|
139
|
-
nest_snippet.options
|
140
|
-
else
|
141
|
-
nest_snippet.item_options[level - 1] || default_nest_editor_item_options
|
142
|
-
end
|
84
|
+
def demo
|
85
|
+
_render_demo
|
143
86
|
end
|
144
87
|
|
145
88
|
def nest_apply_opts
|
146
89
|
apply_tm_snippet_data nest_snippet
|
147
90
|
end
|
148
91
|
|
149
|
-
def nest_option_value_select value=nil
|
150
|
-
# select_tag "nest_option_value_#{unique_id}"
|
151
|
-
text_field_tag "value", value,
|
152
|
-
class: "_nest-option-value form-control form-control-sm",
|
153
|
-
disabled: !value,
|
154
|
-
id: nil
|
155
|
-
end
|
156
|
-
|
157
92
|
def known_nest_content
|
158
93
|
voo.hide! :cancel_button
|
159
94
|
add_name_context
|
160
95
|
with_nest_mode :edit do
|
161
|
-
|
162
|
-
|
163
|
-
render_edit_inline
|
164
|
-
]
|
96
|
+
wrap true do
|
97
|
+
render_edit_inline
|
165
98
|
end
|
166
99
|
end
|
167
100
|
end
|
@@ -170,6 +103,9 @@ format :html do
|
|
170
103
|
voo.hide! :guide
|
171
104
|
voo.show! :new_type_formgroup
|
172
105
|
voo.buttons_view = :new_image_buttons
|
173
|
-
|
106
|
+
wrap true do
|
107
|
+
create_form success: { tinymce_id: Env.params[:tinymce_id] }
|
108
|
+
end
|
109
|
+
# framed_create_form
|
174
110
|
end
|
175
111
|
end
|
@@ -10,29 +10,30 @@ format :html do
|
|
10
10
|
nest_image_editor :modal
|
11
11
|
end
|
12
12
|
|
13
|
-
view :new_image, perms: :create, unknown: true, cache: :never do
|
13
|
+
view :new_image, perms: :create, unknown: true, cache: :never, wrap: :slot do
|
14
14
|
voo.buttons_view = :new_image_buttons
|
15
|
-
|
15
|
+
create_form success: { tinymce_id: Env.params[:tinymce_id],
|
16
|
+
view: :new_image, type: :image,
|
17
|
+
slot: { hide: :guide, type: :image, show: :preview_redirect },
|
18
|
+
id: card.autoname(card.name.next) }
|
16
19
|
end
|
17
20
|
|
18
21
|
view :new_image_buttons do
|
19
22
|
button_formgroup do
|
20
|
-
[standard_save_button(no_origin_update: true
|
23
|
+
[standard_save_button(no_origin_update: true)]
|
21
24
|
end
|
22
25
|
end
|
23
26
|
|
24
27
|
def nest_image_editor editor_mode
|
25
28
|
adapt_reference_editor_for_images
|
26
|
-
nest_editor editor_mode
|
29
|
+
nest_editor editor_mode, :nest, "Image", "image_nest"
|
27
30
|
end
|
28
31
|
|
29
32
|
def adapt_reference_editor_for_images
|
30
|
-
nest_name = card.autoname(
|
33
|
+
nest_name = card.autoname("image01")
|
31
34
|
voo.show! :content_tab
|
32
35
|
@nest_content_tab = nest(nest_name, view: :new_image, type: :image, hide: :guide)
|
33
|
-
|
34
|
-
image_name = nest_name.to_name.right
|
35
|
-
@nest_snippet = Card::Reference::NestParser.new_image image_name
|
36
|
+
@nest_snippet = Card::Reference::NestParser.new_image nest_name
|
36
37
|
end
|
37
38
|
end
|
38
39
|
|
@@ -1,18 +1,20 @@
|
|
1
1
|
%div._nest-editor
|
2
|
-
.
|
2
|
+
.card-header.d-flex
|
3
3
|
%h5.mt-1
|
4
|
-
=
|
5
|
-
.
|
6
|
-
= link_to fa_icon(:close), path: "#", "data-dismiss": editor_mode, class: "text-dark p-1
|
4
|
+
= title
|
5
|
+
.ms-auto
|
6
|
+
= link_to fa_icon(:close), path: "#", "data-bs-dismiss": editor_mode, class: "text-dark p-1 ms-1"
|
7
7
|
|
8
|
-
.
|
9
|
-
|
8
|
+
.card-body
|
9
|
+
.form
|
10
|
+
= haml_partial "#{editor}_editor", snippet: snippet
|
10
11
|
|
11
12
|
.card-footer.p-0
|
12
13
|
.preview.mx-1.my-1.form-control-feedback
|
14
|
+
Syntax preview
|
13
15
|
= text_field_tag "preview", snippet.raw, class: "_#{ref_type}-preview w-100 text-muted", readonly: true
|
14
16
|
%hr.mt-1.mb-1
|
15
|
-
.form-group-inline.d-flex.justify-content-center.py-
|
16
|
-
= button_tag (modal_tm_snippet_editor? ? "Apply and Close" : "Apply"), apply_opts.merge(class: "_#{ref_type}-apply btn-sm
|
17
|
-
%a.border-light.text-dark.btn.btn-sm.btn-
|
17
|
+
.form-group-inline.d-flex.justify-content-center.py-3
|
18
|
+
= button_tag (modal_tm_snippet_editor? ? "Apply and Close" : "Apply"), apply_opts.merge(class: "_#{ref_type}-apply btn-sm me-3")
|
19
|
+
%a.border-light.text-dark.btn.btn-sm.btn-secondary{"data-bs-dismiss": editor_mode, href: "#"}
|
18
20
|
= modal_tm_snippet_editor? ? "Cancel" : "Close"
|
data/set/all/reference_editor.rb
CHANGED