card-mod-tinymce_editor 0.14.1 → 0.15.0
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/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