simple_form_markdown_editor 0.0.10 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -0
- data/Gemfile.lock +70 -58
- data/app/controllers/simple_form_markdown_editor/previews_controller.rb +19 -7
- data/lib/assets/javascripts/simple_form_markdown_editor.js +1 -3
- data/lib/assets/javascripts/simple_form_markdown_editor/__buttons.coffee.erb +48 -0
- data/lib/assets/javascripts/simple_form_markdown_editor/__editor.coffee.erb +81 -0
- data/lib/assets/javascripts/simple_form_markdown_editor/__help.coffee.erb +86 -0
- data/lib/assets/javascripts/simple_form_markdown_editor/__preview.coffee.erb +42 -0
- data/lib/assets/javascripts/simple_form_markdown_editor/__tabs.coffee.erb +59 -0
- data/lib/assets/javascripts/simple_form_markdown_editor/simple_form_markdown_editor.coffee.erb +98 -0
- data/lib/assets/stylesheets/simple_form_markdown_editor.css +2 -2
- data/lib/assets/stylesheets/simple_form_markdown_editor/_partials.scss +5 -0
- data/lib/assets/stylesheets/simple_form_markdown_editor/buttons/__button.scss.erb +4 -0
- data/lib/assets/stylesheets/simple_form_markdown_editor/buttons/__button_group.scss.erb +5 -0
- data/lib/assets/stylesheets/simple_form_markdown_editor/buttons/__button_wrapper.scss.erb +5 -0
- data/lib/assets/stylesheets/simple_form_markdown_editor/buttons/__buttons.scss.erb +9 -0
- data/lib/assets/stylesheets/simple_form_markdown_editor/editor/__editor.scss.erb +4 -0
- data/lib/assets/stylesheets/simple_form_markdown_editor/header/__header.scss.erb +4 -0
- data/lib/assets/stylesheets/simple_form_markdown_editor/help/__help.scss.erb +12 -0
- data/lib/assets/stylesheets/simple_form_markdown_editor/help/__help__section.scss.erb +3 -0
- data/lib/assets/stylesheets/simple_form_markdown_editor/help/__help__sections.scss.erb +5 -0
- data/lib/assets/stylesheets/simple_form_markdown_editor/help/__help__sub_section.scss.erb +9 -0
- data/lib/assets/stylesheets/simple_form_markdown_editor/help/__help__sub_section__item.scss.erb +7 -0
- data/lib/assets/stylesheets/simple_form_markdown_editor/help/__help__sub_section__items.scss.erb +5 -0
- data/lib/assets/stylesheets/simple_form_markdown_editor/help/__help__sub_sections.scss.erb +5 -0
- data/lib/assets/stylesheets/simple_form_markdown_editor/help/__help__text.scss.erb +9 -0
- data/lib/assets/stylesheets/simple_form_markdown_editor/help/__help__texts.scss.erb +5 -0
- data/lib/assets/stylesheets/simple_form_markdown_editor/preview/__preview.scss.erb +4 -0
- data/lib/assets/stylesheets/simple_form_markdown_editor/simple_form_markdown_editor.scss.erb +23 -0
- data/lib/assets/stylesheets/simple_form_markdown_editor/tabs/__tab.scss.erb +8 -0
- data/lib/assets/stylesheets/simple_form_markdown_editor/tabs/__tabs.scss.erb +9 -0
- data/lib/simple_form_markdown_editor.rb +11 -3
- data/lib/simple_form_markdown_editor/markdown_editor_input.rb +41 -53
- data/lib/simple_form_markdown_editor/version.rb +1 -1
- data/simple_form_markdown_editor.gemspec +4 -1
- metadata +72 -7
- data/lib/assets/javascripts/simple_form_markdown_editor/simple_form_markdown_editor_buttons.coffee.erb +0 -114
- data/lib/assets/javascripts/simple_form_markdown_editor/simple_form_markdown_editor_help.coffee +0 -92
- data/lib/assets/javascripts/simple_form_markdown_editor/simple_form_markdown_editor_tabs.coffee +0 -82
- data/lib/assets/stylesheets/simple_form_markdown_editor/simple_form_markdown_editor.css.scss +0 -274
@@ -0,0 +1,42 @@
|
|
1
|
+
# https://github.com/jquery-boilerplate/jquery-boilerplate/
|
2
|
+
do ($ = jQuery, window, document) ->
|
3
|
+
pluginName = 'simple_form_markdown_editor__preview'
|
4
|
+
defaults =
|
5
|
+
debug: false
|
6
|
+
|
7
|
+
class Plugin
|
8
|
+
constructor: (@element, options) ->
|
9
|
+
@settings = $.extend {}, defaults, options
|
10
|
+
|
11
|
+
@$element = $(@element)
|
12
|
+
|
13
|
+
@_defaults = defaults
|
14
|
+
@_name = pluginName
|
15
|
+
|
16
|
+
@init()
|
17
|
+
|
18
|
+
init: ->
|
19
|
+
@$element.on 'show_preview', (e) =>
|
20
|
+
e.stopPropagation()
|
21
|
+
content = e.html or "<p>" + @get_nothing_to_preview_text() + "</p>"
|
22
|
+
@$element.html(content)
|
23
|
+
|
24
|
+
get_nothing_to_preview_text: ->
|
25
|
+
@$element.data('nothing-to-preview-text') or 'Nothing to preview.'
|
26
|
+
|
27
|
+
# ---------------------------------------------------------------------
|
28
|
+
|
29
|
+
$.fn[pluginName] = (options) ->
|
30
|
+
args = arguments
|
31
|
+
if options is `undefined` or typeof options is "object"
|
32
|
+
@each ->
|
33
|
+
$.data this, "plugin_" + pluginName, new Plugin(this, options) unless $.data(this, "plugin_" + pluginName)
|
34
|
+
|
35
|
+
else if typeof options is "string" and options[0] isnt "_" and options isnt "init"
|
36
|
+
returns = undefined
|
37
|
+
@each ->
|
38
|
+
instance = $.data(this, "plugin_" + pluginName)
|
39
|
+
returns = instance[options].apply(instance, Array::slice.call(args, 1)) if instance instanceof Plugin and typeof instance[options] is "function"
|
40
|
+
$.data this, "plugin_" + pluginName, null if options is "destroy"
|
41
|
+
|
42
|
+
(if returns isnt `undefined` then returns else this)
|
@@ -0,0 +1,59 @@
|
|
1
|
+
# https://github.com/jquery-boilerplate/jquery-boilerplate/
|
2
|
+
do ($ = jQuery, window, document) ->
|
3
|
+
pluginName = 'simple_form_markdown_editor__tabs'
|
4
|
+
defaults =
|
5
|
+
debug: false
|
6
|
+
is_active_class: '<%= SimpleFormMarkdownEditor.dom_class(:tab, :is_active) %>'
|
7
|
+
|
8
|
+
class Plugin
|
9
|
+
constructor: (@element, options) ->
|
10
|
+
@settings = $.extend {}, defaults, options
|
11
|
+
|
12
|
+
@$element = $(@element)
|
13
|
+
|
14
|
+
@_defaults = defaults
|
15
|
+
@_name = pluginName
|
16
|
+
|
17
|
+
@init()
|
18
|
+
|
19
|
+
init: ->
|
20
|
+
@set_active_tab(@get_edit_tab())
|
21
|
+
|
22
|
+
@$element.on 'click', @get_tabs().selector, (e) =>
|
23
|
+
$tab = $(e.currentTarget)
|
24
|
+
@set_active_tab($tab)
|
25
|
+
|
26
|
+
@$element.on 'click', @get_edit_tab().selector, (e) =>
|
27
|
+
@$element.trigger('show_editor')
|
28
|
+
|
29
|
+
@$element.on 'click', @get_preview_tab().selector, (e) =>
|
30
|
+
@$element.trigger('show_preview')
|
31
|
+
|
32
|
+
# ---------------------------------------------------------------------
|
33
|
+
|
34
|
+
get_edit_tab: -> @$element.find('.<%= SimpleFormMarkdownEditor.dom_class(:tab, :edit) %>')
|
35
|
+
get_preview_tab: -> @$element.find('.<%= SimpleFormMarkdownEditor.dom_class(:tab, :preview) %>')
|
36
|
+
get_tabs: -> @$element.find('.<%= SimpleFormMarkdownEditor.dom_class(:tab) %>')
|
37
|
+
|
38
|
+
# ---------------------------------------------------------------------
|
39
|
+
|
40
|
+
set_active_tab: ($tab) ->
|
41
|
+
@get_tabs().removeClass(@settings.is_active_class)
|
42
|
+
$tab.addClass(@settings.is_active_class)
|
43
|
+
|
44
|
+
# ---------------------------------------------------------------------
|
45
|
+
|
46
|
+
$.fn[pluginName] = (options) ->
|
47
|
+
args = arguments
|
48
|
+
if options is `undefined` or typeof options is "object"
|
49
|
+
@each ->
|
50
|
+
$.data this, "plugin_" + pluginName, new Plugin(this, options) unless $.data(this, "plugin_" + pluginName)
|
51
|
+
|
52
|
+
else if typeof options is "string" and options[0] isnt "_" and options isnt "init"
|
53
|
+
returns = undefined
|
54
|
+
@each ->
|
55
|
+
instance = $.data(this, "plugin_" + pluginName)
|
56
|
+
returns = instance[options].apply(instance, Array::slice.call(args, 1)) if instance instanceof Plugin and typeof instance[options] is "function"
|
57
|
+
$.data this, "plugin_" + pluginName, null if options is "destroy"
|
58
|
+
|
59
|
+
(if returns isnt `undefined` then returns else this)
|
data/lib/assets/javascripts/simple_form_markdown_editor/simple_form_markdown_editor.coffee.erb
ADDED
@@ -0,0 +1,98 @@
|
|
1
|
+
#= require simple_form_markdown_editor/__buttons
|
2
|
+
#= require simple_form_markdown_editor/__editor
|
3
|
+
#= require simple_form_markdown_editor/__help
|
4
|
+
#= require simple_form_markdown_editor/__preview
|
5
|
+
#= require simple_form_markdown_editor/__tabs
|
6
|
+
|
7
|
+
do ($ = jQuery, window, document) ->
|
8
|
+
pluginName = 'simple_form_markdown_editor'
|
9
|
+
defaults =
|
10
|
+
debug: false
|
11
|
+
definitions: JSON.parse('<%= SimpleFormMarkdownEditor::MarkdownEditorInput.configuration.button_definitions.to_json %>')
|
12
|
+
is_editor_class: '<%= SimpleFormMarkdownEditor.dom_class(:is_editor) %>'
|
13
|
+
is_help_class: '<%= SimpleFormMarkdownEditor.dom_class(:is_help) %>'
|
14
|
+
|
15
|
+
class Plugin
|
16
|
+
constructor: (@element, options) ->
|
17
|
+
@settings = $.extend {}, defaults, options
|
18
|
+
|
19
|
+
@$element = $(@element)
|
20
|
+
|
21
|
+
@_defaults = defaults
|
22
|
+
@_name = pluginName
|
23
|
+
|
24
|
+
@init()
|
25
|
+
|
26
|
+
init: ->
|
27
|
+
@get_buttons().simple_form_markdown_editor__buttons()
|
28
|
+
@get_editor().simple_form_markdown_editor__editor()
|
29
|
+
@get_help().simple_form_markdown_editor__help()
|
30
|
+
@get_preview().simple_form_markdown_editor__preview()
|
31
|
+
@get_tabs().simple_form_markdown_editor__tabs()
|
32
|
+
|
33
|
+
@$element.on 'show_editor', (e) =>
|
34
|
+
e.stopPropagation()
|
35
|
+
@$element.addClass(@settings.is_editor_class)
|
36
|
+
|
37
|
+
@$element.on 'show_preview', (e) =>
|
38
|
+
e.stopPropagation()
|
39
|
+
@$element.removeClass(@settings.is_editor_class)
|
40
|
+
|
41
|
+
@$element.on 'show_preview', (e) =>
|
42
|
+
e.stopPropagation()
|
43
|
+
options = @get_options()
|
44
|
+
val = @get_editor().simple_form_markdown_editor__editor('get_val')
|
45
|
+
$.ajax
|
46
|
+
type: 'POST'
|
47
|
+
url: @get_preview_path()
|
48
|
+
data:
|
49
|
+
_method: 'PUT'
|
50
|
+
text: val
|
51
|
+
options: options
|
52
|
+
success: (html) =>
|
53
|
+
@get_preview().trigger(type: 'show_preview', html: html)
|
54
|
+
|
55
|
+
@$element.on 'toggle_help', (e) =>
|
56
|
+
e.stopPropagation()
|
57
|
+
@$element.toggleClass(@settings.is_help_class)
|
58
|
+
|
59
|
+
@$element.on 'execute_command', (e) =>
|
60
|
+
e.stopPropagation()
|
61
|
+
command = e.command
|
62
|
+
definition = @settings.definitions[command]
|
63
|
+
@get_editor().trigger
|
64
|
+
type: 'execute_command_definition'
|
65
|
+
command: command
|
66
|
+
definition: definition
|
67
|
+
|
68
|
+
# ---------------------------------------------------------------------
|
69
|
+
|
70
|
+
get_buttons: -> @$element.find('.<%= SimpleFormMarkdownEditor.dom_class(:buttons) %>')
|
71
|
+
get_editor: -> @$element.find('.<%= SimpleFormMarkdownEditor.dom_class(:editor) %>')
|
72
|
+
get_help: -> @$element.find('.<%= SimpleFormMarkdownEditor.dom_class(:help) %>')
|
73
|
+
get_preview: -> @$element.find('.<%= SimpleFormMarkdownEditor.dom_class(:preview) %>')
|
74
|
+
get_tabs: -> @$element.find('.<%= SimpleFormMarkdownEditor.dom_class(:tabs) %>')
|
75
|
+
|
76
|
+
get_options: -> @$element.data('options')
|
77
|
+
get_preview_path: -> @$element.data('preview-path')
|
78
|
+
|
79
|
+
# ---------------------------------------------------------------------
|
80
|
+
|
81
|
+
$.fn[pluginName] = (options) ->
|
82
|
+
args = arguments
|
83
|
+
if options is `undefined` or typeof options is "object"
|
84
|
+
@each ->
|
85
|
+
$.data this, "plugin_" + pluginName, new Plugin(this, options) unless $.data(this, "plugin_" + pluginName)
|
86
|
+
|
87
|
+
else if typeof options is "string" and options[0] isnt "_" and options isnt "init"
|
88
|
+
returns = undefined
|
89
|
+
@each ->
|
90
|
+
instance = $.data(this, "plugin_" + pluginName)
|
91
|
+
returns = instance[options].apply(instance, Array::slice.call(args, 1)) if instance instanceof Plugin and typeof instance[options] is "function"
|
92
|
+
$.data this, "plugin_" + pluginName, null if options is "destroy"
|
93
|
+
|
94
|
+
(if returns isnt `undefined` then returns else this)
|
95
|
+
|
96
|
+
# =====================================================================
|
97
|
+
|
98
|
+
$ -> $('.<%= SimpleFormMarkdownEditor.dom_class %>').simple_form_markdown_editor()
|
@@ -1,3 +1,3 @@
|
|
1
1
|
/*
|
2
|
-
|
3
|
-
|
2
|
+
*= require_tree .
|
3
|
+
*/
|
@@ -0,0 +1,12 @@
|
|
1
|
+
@import 'simple_form_markdown_editor/partials';
|
2
|
+
|
3
|
+
.<%= SimpleFormMarkdownEditor.dom_class(:help) %> {
|
4
|
+
}
|
5
|
+
|
6
|
+
.<%= SimpleFormMarkdownEditor.dom_class(:help, :sections) %>,
|
7
|
+
.<%= SimpleFormMarkdownEditor.dom_class(:help, :sub_sections) %>,
|
8
|
+
.<%= SimpleFormMarkdownEditor.dom_class(:help, :texts) %> {
|
9
|
+
display: inline-block;
|
10
|
+
vertical-align: top;
|
11
|
+
width: (100%/3);
|
12
|
+
}
|
@@ -0,0 +1,23 @@
|
|
1
|
+
@import 'simple_form_markdown_editor/partials';
|
2
|
+
|
3
|
+
.<%= SimpleFormMarkdownEditor.dom_class %> {
|
4
|
+
// is_editor
|
5
|
+
&.<%= SimpleFormMarkdownEditor.dom_class(:is_editor) %> {
|
6
|
+
.<%= SimpleFormMarkdownEditor.dom_class(:editor) %> { display: block; }
|
7
|
+
.<%= SimpleFormMarkdownEditor.dom_class(:preview) %> { display: none; }
|
8
|
+
}
|
9
|
+
|
10
|
+
&:not(.<%= SimpleFormMarkdownEditor.dom_class(:is_editor) %>) {
|
11
|
+
.<%= SimpleFormMarkdownEditor.dom_class(:editor) %> { display: none; }
|
12
|
+
.<%= SimpleFormMarkdownEditor.dom_class(:preview) %> { display: block; }
|
13
|
+
}
|
14
|
+
|
15
|
+
// is_help
|
16
|
+
&.<%= SimpleFormMarkdownEditor.dom_class(:is_help) %> {
|
17
|
+
.<%= SimpleFormMarkdownEditor.dom_class(:help) %> { display: block; }
|
18
|
+
}
|
19
|
+
|
20
|
+
&:not(.<%= SimpleFormMarkdownEditor.dom_class(:is_help) %>) {
|
21
|
+
.<%= SimpleFormMarkdownEditor.dom_class(:help) %> { display: none; }
|
22
|
+
}
|
23
|
+
}
|
@@ -8,7 +8,17 @@ require 'simple_form_markdown_editor/version'
|
|
8
8
|
|
9
9
|
require 'i18n'
|
10
10
|
|
11
|
-
|
11
|
+
module SimpleFormMarkdownEditor
|
12
|
+
def self.dom_class(*args)
|
13
|
+
prefix, alts = args.partition { |i| !i.is_a?(Array) }
|
14
|
+
prefix = ['simple_form_markdown_editor'] + prefix
|
15
|
+
return prefix.compact.join('__') if alts.empty?
|
16
|
+
alts.flatten.map do |item|
|
17
|
+
prefix += [item]
|
18
|
+
prefix.compact.join('__')
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
12
22
|
|
13
23
|
module SimpleForm
|
14
24
|
class FormBuilder
|
@@ -16,6 +26,4 @@ module SimpleForm
|
|
16
26
|
end
|
17
27
|
end
|
18
28
|
|
19
|
-
# ---------------------------------------------------------------------
|
20
|
-
|
21
29
|
I18n.load_path += Dir.glob(File.join(File.dirname(__FILE__), 'config', 'locales', '*.yml'))
|
@@ -20,9 +20,11 @@ module SimpleFormMarkdownEditor
|
|
20
20
|
|
21
21
|
def input(wrapper_options)
|
22
22
|
attrs = merge_wrapper_options(input_html_options, wrapper_options)
|
23
|
+
attrs[:class] = [SimpleFormMarkdownEditor.dom_class, SimpleFormMarkdownEditor.dom_class(:is_editor)]
|
24
|
+
attrs[:class] << SimpleFormMarkdownEditor.dom_class(:is_help) if help_visible?
|
23
25
|
attrs[:data] ||= {}
|
24
26
|
attrs[:data][:preview_path] = preview_path
|
25
|
-
attrs[:data][:options] = { render_class: render_class
|
27
|
+
attrs[:data][:options] = { render_class: render_class, render_options: render_options, extensions: extensions }
|
26
28
|
|
27
29
|
template.content_tag :div, attrs do
|
28
30
|
template.concat header
|
@@ -50,12 +52,8 @@ module SimpleFormMarkdownEditor
|
|
50
52
|
options.fetch(:extensions, MarkdownEditorInput.configuration.extensions)
|
51
53
|
end
|
52
54
|
|
53
|
-
def input_html_classes
|
54
|
-
super.push('simple_form_markdown_editor')
|
55
|
-
end
|
56
|
-
|
57
55
|
def header
|
58
|
-
template.content_tag :div, class:
|
56
|
+
template.content_tag :div, class: SimpleFormMarkdownEditor.dom_class(:header) do
|
59
57
|
tabs + buttons
|
60
58
|
end.html_safe
|
61
59
|
end
|
@@ -63,10 +61,8 @@ module SimpleFormMarkdownEditor
|
|
63
61
|
# ---------------------------------------------------------------------
|
64
62
|
|
65
63
|
def tabs
|
66
|
-
template.content_tag :div, class:
|
67
|
-
|
68
|
-
tab_list.map { |t| tab(t) }.flatten.join.html_safe
|
69
|
-
end
|
64
|
+
template.content_tag :div, class: SimpleFormMarkdownEditor.dom_class(:tabs) do
|
65
|
+
tab_list.map { |t| tab(t) }.flatten.join.html_safe
|
70
66
|
end
|
71
67
|
end
|
72
68
|
|
@@ -75,44 +71,32 @@ module SimpleFormMarkdownEditor
|
|
75
71
|
end
|
76
72
|
|
77
73
|
def tab(name)
|
78
|
-
template.content_tag :
|
79
|
-
template.content_tag(
|
80
|
-
:span,
|
81
|
-
I18n.t(name.to_sym, scope: 'simple_form_markdown_editor.tabs'),
|
82
|
-
class: name.to_s.underscore.downcase
|
83
|
-
)
|
74
|
+
template.content_tag :div, class: SimpleFormMarkdownEditor.dom_class([:tab, name]) do
|
75
|
+
template.content_tag(:span, I18n.t(name, scope: 'simple_form_markdown_editor.tabs'))
|
84
76
|
end
|
85
77
|
end
|
86
78
|
|
87
79
|
# ---------------------------------------------------------------------
|
88
80
|
|
89
81
|
def buttons
|
90
|
-
template.content_tag :div, class:
|
91
|
-
button_groups
|
92
|
-
end
|
93
|
-
end
|
94
|
-
|
95
|
-
def button_groups
|
96
|
-
template.content_tag :ul, class: 'button_groups' do
|
82
|
+
template.content_tag :div, class: SimpleFormMarkdownEditor.dom_class(:buttons) do
|
97
83
|
button_list.map { |group| button_group(group) }.flatten.join.html_safe
|
98
84
|
end
|
99
85
|
end
|
100
86
|
|
101
87
|
def button_group(g)
|
102
|
-
template.content_tag :
|
103
|
-
|
104
|
-
g.map { |b| button(b) }.flatten.join.html_safe
|
105
|
-
end
|
88
|
+
template.content_tag :div, class: SimpleFormMarkdownEditor.dom_class(:button_group), data: { buttons: g.join(' ') } do
|
89
|
+
g.map { |b| button(b) }.flatten.join.html_safe
|
106
90
|
end
|
107
91
|
end
|
108
92
|
|
109
93
|
def button(b)
|
110
94
|
return if b == 'help' && !help_enabled?
|
111
|
-
template.content_tag :
|
95
|
+
template.content_tag :div, class: SimpleFormMarkdownEditor.dom_class(:button_wrapper) do
|
112
96
|
template.content_tag(
|
113
97
|
:button,
|
114
|
-
I18n.t(b
|
115
|
-
class:
|
98
|
+
I18n.t(b, scope: 'simple_form_markdown_editor.buttons'),
|
99
|
+
class: SimpleFormMarkdownEditor.dom_class(:button),
|
116
100
|
name: '',
|
117
101
|
role: '',
|
118
102
|
state: '',
|
@@ -129,7 +113,7 @@ module SimpleFormMarkdownEditor
|
|
129
113
|
# ---------------------------------------------------------------------
|
130
114
|
|
131
115
|
def editor
|
132
|
-
template.content_tag :div, class:
|
116
|
+
template.content_tag :div, class: SimpleFormMarkdownEditor.dom_class(:editor) do
|
133
117
|
@builder.text_area(attribute_name, input_html_options).html_safe
|
134
118
|
end
|
135
119
|
end
|
@@ -138,7 +122,7 @@ module SimpleFormMarkdownEditor
|
|
138
122
|
template.content_tag(
|
139
123
|
:div,
|
140
124
|
I18n.t(:loading, scope: 'simple_form_markdown_editor'),
|
141
|
-
class:
|
125
|
+
class: SimpleFormMarkdownEditor.dom_class(:preview),
|
142
126
|
data: { nothing_to_preview_text: I18n.t(:nothing_to_preview, scope: 'simple_form_markdown_editor') }
|
143
127
|
)
|
144
128
|
end
|
@@ -147,49 +131,53 @@ module SimpleFormMarkdownEditor
|
|
147
131
|
|
148
132
|
def help
|
149
133
|
return unless help_enabled?
|
150
|
-
template.content_tag :div, class:
|
151
|
-
|
152
|
-
help_sections + help_sub_sections + help_texts
|
153
|
-
end
|
134
|
+
template.content_tag :div, class: SimpleFormMarkdownEditor.dom_class(:help) do
|
135
|
+
help_sections + help_sub_sections + help_texts
|
154
136
|
end
|
155
137
|
end
|
156
138
|
|
157
139
|
def help_sections
|
158
|
-
template.content_tag :ul, class:
|
140
|
+
template.content_tag :ul, class: SimpleFormMarkdownEditor.dom_class(:help, :sections) do
|
159
141
|
i18n_help.map { |section, content| help_section(section, content) }.flatten.join.html_safe
|
160
142
|
end
|
161
143
|
end
|
162
144
|
|
163
145
|
def help_section(section, content)
|
164
146
|
return unless content[:title]
|
165
|
-
template.content_tag :li, class:
|
166
|
-
template.content_tag :
|
147
|
+
template.content_tag :li, class: SimpleFormMarkdownEditor.dom_class(:help, :section), data: { section: section } do
|
148
|
+
template.content_tag :a, content[:title], class: section, href: '#'
|
167
149
|
end.html_safe
|
168
150
|
end
|
169
151
|
|
170
152
|
def help_sub_sections
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
153
|
+
template.content_tag :ul, class: SimpleFormMarkdownEditor.dom_class(:help, :sub_sections) do
|
154
|
+
i18n_help.map do |section, content|
|
155
|
+
template.content_tag :li, class: SimpleFormMarkdownEditor.dom_class(:help, :sub_section), data: { section: section } do
|
156
|
+
template.content_tag :ul, class: SimpleFormMarkdownEditor.dom_class(:help, :sub_section, :items) do
|
157
|
+
content[:elements].map { |sec, con| help_sub_section_item(sec, con) }.flatten.join.html_safe
|
158
|
+
end
|
159
|
+
end
|
160
|
+
end.flatten.join.html_safe
|
161
|
+
end
|
176
162
|
end
|
177
163
|
|
178
|
-
def
|
164
|
+
def help_sub_section_item(sub_section, content)
|
179
165
|
return unless content[:title]
|
180
|
-
template.content_tag :li, class:
|
181
|
-
template.content_tag :
|
166
|
+
template.content_tag :li, class: SimpleFormMarkdownEditor.dom_class(:help, :sub_section, :item), data: { sub_section: sub_section } do
|
167
|
+
template.content_tag :a, content[:title], href: '#'
|
182
168
|
end.html_safe
|
183
169
|
end
|
184
170
|
|
185
171
|
def help_texts
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
172
|
+
template.content_tag :ul, class: SimpleFormMarkdownEditor.dom_class(:help, :texts) do
|
173
|
+
i18n_help.map do |section, content|
|
174
|
+
content[:elements].map do |el, con|
|
175
|
+
template.content_tag :li, class: SimpleFormMarkdownEditor.dom_class(:help, :text), data: { section: section, sub_section: el } do
|
176
|
+
Renderer.call(con[:text], render_class: render_class, render_options: render_options, extensions: extensions)
|
177
|
+
end
|
190
178
|
end
|
191
|
-
end
|
192
|
-
end
|
179
|
+
end.flatten.join.html_safe
|
180
|
+
end
|
193
181
|
end
|
194
182
|
|
195
183
|
# ---------------------------------------------------------------------
|