card-mod-tinymce_editor 0.14.2 → 0.15.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (36) hide show
  1. checksums.yaml +4 -4
  2. data/assets/script/image_editor.js.coffee +59 -0
  3. data/assets/script/link_editor.js.coffee +61 -0
  4. data/assets/script/nest_editor.js.coffee +171 -0
  5. data/assets/script/nest_editor_name.js.coffee +115 -0
  6. data/assets/script/nest_editor_options.js.coffee +197 -0
  7. data/assets/script/nest_editor_rules.js.coffee +3 -0
  8. data/assets/script/{script_tinymce_config.js.coffee → tinymce_config.js.coffee} +3 -6
  9. data/assets/style/nest_editor.scss +55 -0
  10. data/config/locales/en.yml +9 -0
  11. data/data/files/mod_tinymce_editor_script_asset_output/file.js +37 -0
  12. data/data/files/mod_tinymce_editor_script_local_machine_output/file.js +82 -0
  13. data/{db/migrate_core_cards/20171113233151_update_tinymce_config.rb → data/real.yml} +8 -15
  14. data/lib/card/reference/nest_parser.rb +28 -12
  15. data/set/all/reference_editor/_image_nest_editor.haml +2 -0
  16. data/set/all/reference_editor/_link_editor.haml +8 -6
  17. data/set/all/reference_editor/_nest_editor.haml +13 -15
  18. data/set/all/reference_editor/link_editor.rb +4 -2
  19. data/set/all/reference_editor/nest_editor/_basics.haml +5 -0
  20. data/set/all/reference_editor/nest_editor/_image_find.haml +7 -0
  21. data/set/all/reference_editor/nest_editor/_image_options.haml +8 -0
  22. data/set/all/reference_editor/nest_editor/_options.haml +18 -10
  23. data/set/all/reference_editor/nest_editor/_options_select.haml +6 -5
  24. data/set/all/reference_editor/nest_editor/_options_select_row.haml +7 -8
  25. data/set/all/reference_editor/nest_editor/nest_editor_options.rb +95 -0
  26. data/set/all/reference_editor/nest_editor/nest_editor_tabs.rb +59 -0
  27. data/set/all/reference_editor/nest_editor.rb +16 -80
  28. data/set/all/reference_editor/nest_image.rb +9 -8
  29. data/set/all/reference_editor/reference_editor.haml +11 -9
  30. data/set/all/reference_editor.rb +1 -1
  31. data/set/all/tinymce_editor.rb +5 -1
  32. metadata +26 -13
  33. data/db/migrate_core_cards/20160804112560_add_tinymce_cards.rb +0 -42
  34. data/db/migrate_core_cards/20190306172623_update_tinymce_config_to_v5.rb +0 -23
  35. data/db/migrate_core_cards/20190306172890_tinymce_add_nest_to_toolbar.rb +0 -11
  36. data/set/all/reference_editor/nest_editor/_help.haml +0 -7
@@ -1,22 +1,15 @@
1
- # -*- encoding : utf-8 -*-
2
-
3
- class UpdateTinymceConfig < Cardio::Migration::Core
4
- TINYMCE_CONF = <<-JSON.strip_heredoc
1
+ - :name: "*tinyMCE"
2
+ :type: :json
3
+ :codename: tiny_mce
4
+ :content: |
5
5
  {
6
- "theme": "modern",
6
+ "theme": "silver",
7
7
  "menubar": "edit view insert format table",
8
- "plugins": "autoresize code lists hr link autolink table contextmenu textcolor colorpicker",
9
- "toolbar1": "formatselect | bold italic strikethrough forecolor backcolor | link | alignleft aligncenter alignright alignjustify | numlist bullist outdent indent | removeformat",
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, default_view, default_item_view
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: [[:view, default_view]], item_options: [],
15
- raw: "{{+|view: #{default_view}}}")
14
+ options: [], item_options: [],
15
+ raw: "{{+ }}")
16
16
  end
17
17
 
18
18
  def self.new_image name
19
- OpenStruct.new(name: name, field?: true,
20
- options: [%i[view content], %i[size medium]],
19
+ OpenStruct.new(name: name, field?: false,
20
+ view: "content",
21
+ options: [%i[size medium]],
21
22
  item_options: [],
22
- raw: "{{+#{name}|view: content; size: medium}}")
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 initialize nest_string, _default_view, default_item_view
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,10 +81,10 @@ 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
- # @item_options << default_item_options
87
+ # # @item_options << default_item_options
72
88
  end
73
89
 
74
90
  def default_item_options
@@ -0,0 +1,2 @@
1
+
2
+ = image_nest_editor_tabs snippet
@@ -1,17 +1,19 @@
1
- .form-row.align-items-center.mb-4.ml-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-prepend._field-indicator
5
- .input-group-text.text-muted
6
- +
7
- = text_field_tag "link_name", snippet.name, class: "form-control _link-target", placeholder: "URL or Card name"
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
- .form-row.align-items-center.mb-4.ml-1.mr-1
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
- .form-row.align-items-center.mb-4.ml-1
3
- .col-9
4
- .input-group{class: [snippet.field? ? "show-prefix" : "hide-prefix"]}
5
- .input-group-prepend._field-indicator
6
- .input-group-text.text-muted
7
- +
8
- = text_field_tag "nest_name", snippet.name, class: "form-control _nest-name",
9
- "data-left-name" => card.name,
10
- "data-left-type" => card.left_type_for_nest_editor_set_selection,
11
- placeholder: "Card name"
12
- .col-3
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 link_editor editor_mode
14
+ def link_editor editor_mode
15
15
  @tm_snippet_editor_mode = editor_mode
16
- haml :reference_editor, ref_type: :link, editor_mode: @tm_snippet_editor_mode,
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,5 @@
1
+ .form-group
2
+ %label View
3
+ = help_link t(:tinymce_editor_nest_editor_view_help_text), t(:tinymce_editor_nest_editor_view_help_title)
4
+ = nest_view_select snippet.view
5
+
@@ -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"
@@ -0,0 +1,8 @@
1
+ .form-group
2
+ %label View
3
+ = help_link t(:tinymce_editor_image_nest_editor_view_help_text), t(:tinymce_editor_image_nest_editor_view_help_title)
4
+ = image_view_select snippet.view
5
+
6
+ .form-group
7
+ %label Size
8
+ = image_size_select
@@ -1,12 +1,20 @@
1
- .options-container.p-2.border-bottom
2
- = haml_partial :options_select, template: false, level: 0, data: snippet.options
3
- - snippet.item_options.each_with_index do |options, i|
4
- .options-container.p-2.border-bottom._configure-items
5
- %h6
6
- = "#{'sub' * i} items"
7
- = haml_partial :options_select, template: false, level: i + 1, data: options
8
- .options-container.p-2.border-bottom._configure-items
9
- = button_tag "Configure #{'sub' * snippet.item_options.size}items", situation: "secondary", class: "_configure-items-button btn-sm"
10
- = haml_partial :options_select, template: true, level: snippet.item_options.size + 1, data: default_nest_editor_item_options
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: false, name: nil, level: level,
7
- value: nil
8
- = haml_partial :options_select_row, template: true, name: nil, level: level,
9
- value: nil
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
- .form-row._nest-option-row{class: [template && "_template"]}
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
+ = icon_tag :remove
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, ref_type: :nest, editor_mode: @tm_snippet_editor_mode,
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
- [[:view, default_item_view]]
80
+ []
81
+ # [[:view, default_item_view]]
109
82
  end
110
83
 
111
- def nest_option_name_select selected=nil, level=0
112
- classes = "form-control form-control-sm _nest-option-name"
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
- frame do
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
- framed_create_form success: { tinymce_id: Env.params[:tinymce_id] }
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
- framed_create_form success: { tinymce_id: Env.params[:tinymce_id], view: :open }
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, class: "_change-create-to-update")]
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(card.name.field("image01"))
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
- .nest-header.d-flex.ml-2
2
+ .card-header.d-flex
3
3
  %h5.mt-1
4
- = ref_type.capitalize
5
- .ml-auto
6
- = link_to fa_icon(:close), path: "#", "data-dismiss": editor_mode, class: "text-dark p-1 ml-1"
4
+ = title
5
+ .ms-auto
6
+ = link_to icon_tag(:close), path: "#", "data-bs-dismiss": editor_mode, class: "text-dark p-1 ms-1"
7
7
 
8
- .form
9
- = haml_partial "#{ref_type}_editor", snippet: snippet
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-2
16
- = button_tag (modal_tm_snippet_editor? ? "Apply and Close" : "Apply"), apply_opts.merge(class: "_#{ref_type}-apply btn-sm mr-3")
17
- %a.border-light.text-dark.btn.btn-sm.btn-outline-secondary{"data-dismiss": editor_mode, href: "#"}
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"
@@ -24,7 +24,7 @@ format :html do
24
24
  end
25
25
 
26
26
  def apply_tm_data_dismiss data
27
- data["data-dismiss"] = "modal" if modal_tm_snippet_editor?
27
+ data["data-bs-dismiss"] = "modal" if modal_tm_snippet_editor?
28
28
  end
29
29
 
30
30
  def apply_tm_data_index data