action_admin 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9c130d9173df9250a76f41a1fb2687c8042ac842
4
- data.tar.gz: d26a179831e85af820d332744ad27b64c15e2380
3
+ metadata.gz: 744d35d72168f97e4b21090228b74cb79f7e63e4
4
+ data.tar.gz: 37e859e3f7beb0093b102796002490a04cbe1b59
5
5
  SHA512:
6
- metadata.gz: 9c081bec36607b46f36237b4782fcd56f871bcfbd3a7c2bc55d1695df3452260751d25512991006f73b2940214acced809d883389306f2f046626119ffc5f882
7
- data.tar.gz: e3168380227a10278a910c516a423b840bb5c16a458dd9d637df1046724367e2eeecc996978a1aaf5312604e036845d32908473be8481d6b457387e9827218d1
6
+ metadata.gz: 2873abf6a53398466252f625d5019f150b0f11fa4238f8757a5ce86f737169fed06c396b77693b9a04828f92c26afa2739343943d843539097da6072c129b0a2
7
+ data.tar.gz: 215d8e6fdf62b86e3b20247afc1f77cd7b51c2c95069179f3522e1539be645a1aacde44772f1b217b4ee100e87ecc51085f6cb668c2916b3f321fd8590c92a4e
@@ -8,7 +8,7 @@
8
8
 
9
9
  .input:last-child:not(.error) {
10
10
 
11
- input, textarea, select, .select2 {
11
+ input, textarea, select, .select2, .switch {
12
12
  margin-bottom: 0;
13
13
  }
14
14
  }
@@ -1,5 +1,5 @@
1
1
  module ActionAdmin
2
- class AttachmentInput < SimpleForm::Inputs::StringInput
2
+ class AttachmentInput < SimpleForm::Inputs::Base
3
3
  def input(wrapper_options)
4
4
  modal = options.fetch :modal, 'media-modal'
5
5
  html = content_tag :div, input_placeholder, id: input_html_id, data: { media_attach: modal }
@@ -35,9 +35,13 @@ module ActionAdmin
35
35
 
36
36
  def attachment(image_url=nil)
37
37
  image = content_tag :img, nil, src: image_url, class: 'width-100 margin-bottom-1', data: { src: 'file.preview.url', url: "#{template.root_url.chomp('/')}[src]" }
38
- button = content_tag :a, 'Remove Thumbnail', class: 'button alert small hollow margin-0', data: { remove: '' }
38
+ remove = content_tag :a, 'Remove', class: 'button alert small hollow margin-0', data: { remove: '' }
39
+ change = content_tag :a, 'Change', class: 'button success small hollow margin-0', data: { open: input_html_id }
40
+ remove = content_tag :div, remove, class: 'cell auto text-left'
41
+ change = content_tag :div, change, class: 'cell shrink'
42
+ buttons = content_tag :div, remove + change, class: 'panel-section expanded border last grid-x'
39
43
 
40
- content_tag :div, hidden_input + image + button, class: 'attachment text-center', data: { list_item: '' }
44
+ content_tag :div, hidden_input + image + buttons, class: 'attachment text-center', data: { list_item: '' }
41
45
  end
42
46
 
43
47
  def input_template
@@ -0,0 +1,109 @@
1
+ module ActionAdmin
2
+ class SeoAnalysisInput < SimpleForm::Inputs::Base
3
+ def input(wrapper_options)
4
+ seo_data_options = {
5
+ seo_analysis: '',
6
+ base_url: base_url,
7
+ text: text_html_id,
8
+ slug: id_from_html(slug_hidden_field),
9
+ title: id_from_html(title_hidden_field),
10
+ meta: id_from_html(description_hidden_field),
11
+ keywords: id_from_html(keywords_hidden_field),
12
+ score: id_from_html(score_hidden_field)
13
+ }
14
+
15
+ template.content_tag :div, class: 'seo-analysis', data: seo_data_options do
16
+ template.concat title_hidden_field
17
+ template.concat description_hidden_field
18
+ template.concat keywords_hidden_field
19
+ template.concat score_hidden_field
20
+ template.concat slug_hidden_field if options[:slug_input].present?
21
+
22
+ template.concat seo_keyword
23
+ template.concat seo_preview
24
+ template.concat seo_output
25
+ end
26
+ end
27
+
28
+ def base_url
29
+ url_value = object.try(options.fetch :slug, :slug)
30
+ method = options.fetch :url, ActionAdmin.config.app_urls
31
+
32
+ if object.new_record?
33
+ template.root_url.chomp('/')
34
+ else
35
+ template.try(method, object).to_s.sub(url_value, '').chomp('/')
36
+ end
37
+ end
38
+
39
+ def seo_keyword
40
+ attrib = options.fetch :focus_keyword, :seo_focus_keyword
41
+ content = @builder.text_field(attrib, placeholder: 'Enter focus keyword...', data: { seo_keyword: '' })
42
+
43
+ content_tag :div, content, class: 'seo-keyword'
44
+ end
45
+
46
+ def seo_preview
47
+ content_tag :div, nil, class: 'seo-preview', data: { seo_preview: '' }
48
+ end
49
+
50
+ def seo_output
51
+ content_tag :div, nil, class: 'seo-output', data: { seo_output: '' }
52
+ end
53
+
54
+ def title_hidden_field
55
+ attrib = options.fetch :title, :seo_title
56
+ @builder.hidden_field(attrib, data: { default: attribute_default(attrib) })
57
+ end
58
+
59
+ def description_hidden_field
60
+ attrib = options.fetch :description, :seo_description
61
+ @builder.hidden_field(attrib, data: { default: attribute_default(attrib) })
62
+ end
63
+
64
+ def keywords_hidden_field
65
+ attrib = options.fetch :keywords, :seo_keywords
66
+ @builder.hidden_field(attrib, data: { default: attribute_default(attrib) })
67
+ end
68
+
69
+ def slug_hidden_field
70
+ attrib = options.fetch :slug, :slug
71
+ @builder.hidden_field(attrib, data: { default: attribute_default(attrib) })
72
+ end
73
+
74
+ def score_hidden_field
75
+ attrib = options.fetch :score, :seo_score
76
+ @builder.hidden_field(attrib, data: { default: attribute_default(attrib) })
77
+ end
78
+
79
+ def label(wrapper_options)
80
+ ''
81
+ end
82
+
83
+ private
84
+
85
+ def attribute_default(attrib)
86
+ items = object.try(attribute_name).select do |k, v|
87
+ "#{k}" == "#{attrib}" || "#{k}" == "#{attrib}".sub('seo_', '')
88
+ end
89
+
90
+ items.values.first
91
+ end
92
+
93
+ def text_html_id
94
+ attrib = options.fetch :content, detect_text_attribute
95
+ id_from_html @builder.hidden_field(attrib)
96
+ end
97
+
98
+ def detect_text_attribute
99
+ items = ['content', 'description', 'body']
100
+ attrib = object.class.attribute_names.select { |n| n.in? items }
101
+
102
+ attrib.sort_by { |a| items.index(a).to_i }.first
103
+ end
104
+
105
+ def id_from_html(field)
106
+ field.to_s[/id=\"(.*)\"/, 1]
107
+ end
108
+ end
109
+ end
@@ -34,7 +34,11 @@ module ActionAdmin
34
34
  end
35
35
 
36
36
  def value_pattern
37
- prefix "#{url}".sub("#{input_value}", '[val]')
37
+ if url.present?
38
+ prefix "#{url}".sub("#{input_value}", '[val]')
39
+ else
40
+ prefix "#{template.root_url}[val]"
41
+ end
38
42
  end
39
43
 
40
44
  def preview_value
@@ -2,7 +2,16 @@ module ActionAdmin
2
2
  class TinymceInput < SimpleForm::Inputs::TextInput
3
3
  def input(wrapper_options)
4
4
  input_html_options[:data] ||= {}
5
- input_html_options[:data].merge!({ tiny_mce_editor: '', content_css: template.asset_path('admin/tinymce-editor.css') })
5
+ input_html_options[:data].merge!({
6
+ tiny_mce_editor: '',
7
+ content_css: template.asset_path('admin/tinymce-editor.css'),
8
+ media_handler: 'media-modal',
9
+ media_src: "file.large.url",
10
+ media_alt: "name",
11
+ media_url: "[src]",
12
+ convert_urls: false
13
+ })
14
+
6
15
  super
7
16
  end
8
17
  end
@@ -0,0 +1,36 @@
1
+ module ActionAdmin
2
+ class ToggleInput < SimpleForm::Inputs::BooleanInput
3
+ def input(wrapper_options)
4
+ @initial_label_text = raw_label_text
5
+
6
+ input_html_options[:class] ||= []
7
+ input_html_options[:class] << 'switch-input'
8
+
9
+ options[:label_html] = { class: 'switch-paddle' }
10
+ options[:label] = content_tag :span, raw_label_text, class: 'show-for-sr'
11
+
12
+ super
13
+ end
14
+
15
+ def label_input(wrapper_options)
16
+ field_html = field_input(wrapper_options)
17
+
18
+ template.content_tag :div, class: 'grid-x' do
19
+ template.concat content_tag(:div, field_name, class: 'cell auto')
20
+ template.concat content_tag(:div, field_html, class: 'cell shrink')
21
+ end
22
+ end
23
+
24
+ def field_input(wrapper_options)
25
+ content_tag :div, input(wrapper_options) + label(wrapper_options), class: 'switch tiny'
26
+ end
27
+
28
+ def field_name
29
+ content_tag :label, @initial_label_text
30
+ end
31
+
32
+ def nested_boolean_style?
33
+ false
34
+ end
35
+ end
36
+ end
@@ -16,7 +16,7 @@ module ActionAdmin
16
16
  content = content_tag :div, icon + span + file_input + button, class: 'no-content'
17
17
  image = attachment(attachment_url) if attachment_url.present?
18
18
 
19
- content_tag(:div, content, class: 'dz-message bordered') +
19
+ content_tag(:div, content, class: 'dz-message bordered hide') +
20
20
  content_tag(:div, image, id: "#{input_html_id}-preview")
21
21
  end
22
22
 
@@ -45,8 +45,8 @@ module ActionAdmin
45
45
  end
46
46
 
47
47
  def attachment(image_url=nil)
48
- image = content_tag :img, nil, src: image_url, class: 'width-100 margin-bottom-1', 'dz-thumbnail' => ''
49
- button = content_tag :a, 'Remove File', class: 'button alert small hollow margin-0', 'dz-remove' => ''
48
+ image = content_tag :img, nil, src: image_url, class: 'width-100 margin-bottom-1', data: { dz_thumbnail: '' }
49
+ button = content_tag :a, 'Remove File', class: 'button alert small hollow margin-0', data: { dz_remove: '' }
50
50
 
51
51
  content_tag :div, hidden_input + image + button, class: 'text-center'
52
52
  end
@@ -84,25 +84,29 @@ module ActionAdmin
84
84
 
85
85
  def render_panel(form, options={})
86
86
  template = "admin/panels/#{options.fetch :template, 'default'}"
87
- content = Array(options[:fields]).map do |f|
88
- opts = fields[f]
89
-
90
- opts[:label] = false if options[:labels] == false
91
- opts[:label] = true if Array(options[:labels]).include?(f)
92
-
93
- render_field(form, f, opts)
94
- end
87
+ content = Array(options[:fields]).map { |f| render_panel_field(form, f, options) }
88
+ footer = Array(Hash(options[:footer])[:fields]).map { |f| render_panel_field(form, f, options) }.join.html_safe
89
+ footer = nil if footer.blank?
95
90
 
96
91
  options = {
97
92
  layout: false,
98
93
  content: content.join.html_safe,
99
94
  title: options[:title],
100
- footer: options[:footer]
95
+ footer: footer
101
96
  }
102
97
 
103
98
  @context.render template, options
104
99
  end
105
100
 
101
+ def render_panel_field(form, field, options)
102
+ opts = fields[field]
103
+
104
+ opts[:label] = false if options[:labels] == false
105
+ opts[:label] = true if Array(options[:labels]).include?(field)
106
+
107
+ render_field(form, field, opts)
108
+ end
109
+
106
110
  def render_panels(options={})
107
111
  form = options[:form]
108
112
  context = options[:context]
@@ -1,5 +1,5 @@
1
1
  - if notice.present?
2
- .callout.primary
2
+ .callout.info
3
3
  - [notice].flatten.each do |msg|
4
4
  = msg
5
5
  br
@@ -1,3 +1,3 @@
1
1
  module ActionAdmin
2
- VERSION = '0.1.2'
2
+ VERSION = '0.1.3'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: action_admin
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jonian Guveli
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-12-14 00:00:00.000000000 Z
11
+ date: 2017-12-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -199,10 +199,12 @@ files:
199
199
  - app/helpers/action_admin/markup_helper.rb
200
200
  - app/inputs/action_admin/attachment_input.rb
201
201
  - app/inputs/action_admin/select_list_input.rb
202
+ - app/inputs/action_admin/seo_analysis_input.rb
202
203
  - app/inputs/action_admin/slug_input.rb
203
204
  - app/inputs/action_admin/tag_list_input.rb
204
205
  - app/inputs/action_admin/tinymce_input.rb
205
206
  - app/inputs/action_admin/title_input.rb
207
+ - app/inputs/action_admin/toggle_input.rb
206
208
  - app/inputs/action_admin/upload_input.rb
207
209
  - app/presenters/action_admin/presenter.rb
208
210
  - app/presenters/concerns/action_admin/presentable.rb