activeadmin_addons 0.1.0 → 0.2.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/lib/activeadmin_addons/addons/list.rb +71 -0
- data/lib/activeadmin_addons/addons/number.rb +39 -0
- data/lib/activeadmin_addons/addons/paperclip_attachment.rb +3 -3
- data/lib/activeadmin_addons/engine.rb +4 -1
- data/lib/activeadmin_addons/support/enumerize_formtastic_support.rb +24 -0
- data/lib/activeadmin_addons/{set_datepicker.rb → support/set_datepicker.rb} +0 -0
- data/lib/activeadmin_addons/version.rb +1 -1
- metadata +6 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 95f4ecae57fd54f1e3c6ebbbc25a870edaa609f6
|
4
|
+
data.tar.gz: 9a4e30551e31e85c7a87df7b681047ce572bdfea
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fce96305288148f953886678e488912961579ed2ede09f2eea92f7c661722e49c7010840a61ee12b6bc33b336be42973e3ee531aa499d353abf53bb6a274b70e
|
7
|
+
data.tar.gz: caa5401737347ebf0f2a820efcf643c4dd3885a41bc5e12183eccc51a488e8008f27992545850036df690492f8b20930fda973d56fc26f6a93c5edc0c5c31c6d
|
@@ -0,0 +1,71 @@
|
|
1
|
+
module ActiveAdminAddons
|
2
|
+
module ListHelper
|
3
|
+
class << self
|
4
|
+
def localized_value(key, model, attribute)
|
5
|
+
I18n.t("addons_list.#{model.class.name.underscore}.#{attribute}.#{key}")
|
6
|
+
end
|
7
|
+
|
8
|
+
def array_list(ctx, model, attribute, options)
|
9
|
+
items = model.send(attribute)
|
10
|
+
ctx.content_tag(options[:list_type]) do
|
11
|
+
items.each do |value|
|
12
|
+
value = localized_value(value, model, attribute) if !!options[:localize]
|
13
|
+
ctx.concat(ctx.content_tag(:li, value))
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def hash_list(ctx, model, attribute, options)
|
19
|
+
items = model.send(attribute)
|
20
|
+
ctx.content_tag(options[:list_type]) do
|
21
|
+
items.keys.each do |key|
|
22
|
+
label = !!options[:localize] ? localized_value(key, model, attribute) : key
|
23
|
+
value = items[key]
|
24
|
+
ctx.concat(ctx.content_tag(:li) do
|
25
|
+
if value.blank?
|
26
|
+
ctx.content_tag(:span, label)
|
27
|
+
else
|
28
|
+
ctx.content_tag(:span) do
|
29
|
+
ctx.concat("#{label}: ".html_safe)
|
30
|
+
ctx.concat(ctx.content_tag(:span) do
|
31
|
+
ctx.content_tag(:i, value)
|
32
|
+
end)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def list(ctx, model, attribute, options)
|
41
|
+
options[:localize] = options.fetch(:localize, false)
|
42
|
+
options[:list_type] = options.fetch(:list_type, :ul)
|
43
|
+
raise 'invalid list type (ul, ol)' unless [:ul, :ol].include?(options[:list_type])
|
44
|
+
|
45
|
+
items = model.send(attribute)
|
46
|
+
|
47
|
+
if !items.is_a?(Hash) && !items.is_a?(Array)
|
48
|
+
rails "list must be Array or Hash"
|
49
|
+
end
|
50
|
+
|
51
|
+
return array_list(ctx, model, attribute, options) if items.is_a?(Array)
|
52
|
+
hash_list(ctx, model, attribute, options)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
module ::ActiveAdmin
|
58
|
+
module Views
|
59
|
+
class TableFor
|
60
|
+
def list_column(attribute, options = {})
|
61
|
+
column(attribute) { |model| ListHelper.list(self, model, attribute, options) }
|
62
|
+
end
|
63
|
+
end
|
64
|
+
class AttributesTable
|
65
|
+
def list_row(attribute, options = {})
|
66
|
+
row(attribute) { |model| ListHelper.list(self, model, attribute, options) }
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
module ActiveAdminAddons
|
2
|
+
module NumberHelper
|
3
|
+
class << self
|
4
|
+
NUMBER_TYPES = {
|
5
|
+
currency: :number_to_currency,
|
6
|
+
human: :number_to_human,
|
7
|
+
human_size: :number_to_human_size,
|
8
|
+
percentage: :number_to_percentage,
|
9
|
+
phone: :number_to_phone,
|
10
|
+
delimiter: :number_with_delimiter,
|
11
|
+
precision: :number_with_precision
|
12
|
+
}
|
13
|
+
|
14
|
+
def label(context, model, attribute, options)
|
15
|
+
options[:as] = options.fetch(:as, :delimiter)
|
16
|
+
if !NUMBER_TYPES.keys.include?(options[:as])
|
17
|
+
raise "Invalid number type. Options are: #{NUMBER_TYPES.keys.to_s}"
|
18
|
+
end
|
19
|
+
number = model.send(attribute)
|
20
|
+
context.send(NUMBER_TYPES[options[:as]], number, options)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
module ::ActiveAdmin
|
26
|
+
module Views
|
27
|
+
class TableFor
|
28
|
+
def number_column(attribute, options = {})
|
29
|
+
column(attribute) { |model| NumberHelper.label(self, model, attribute, options) }
|
30
|
+
end
|
31
|
+
end
|
32
|
+
class AttributesTable
|
33
|
+
def number_row(attribute, options = {})
|
34
|
+
row(attribute) { |model| NumberHelper.label(self, model, attribute, options) }
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -22,15 +22,17 @@ module ActiveAdminAddons
|
|
22
22
|
end
|
23
23
|
|
24
24
|
def link(context, model, attribute, options)
|
25
|
+
options[:truncate] = options.fetch(:truncate, true)
|
25
26
|
doc = model.send(attribute)
|
26
27
|
raise 'you need to pass a paperclip attribute' unless doc.respond_to?(:url)
|
27
28
|
|
28
29
|
icon = icon_for_filename(doc.original_filename)
|
29
30
|
icon_img = context.image_tag(icon, width: "20", height: "20", style: "margin-right: 5px; vertical-align: middle;")
|
30
31
|
file_name = (options[:truncate] == true) ? context.truncate(doc.original_filename) : doc.original_filename
|
32
|
+
label_text = options.fetch(:label, file_name)
|
31
33
|
label = context.content_tag(:span) do
|
32
34
|
context.concat(icon_img)
|
33
|
-
context.safe_concat(
|
35
|
+
context.safe_concat(label_text)
|
34
36
|
end
|
35
37
|
|
36
38
|
context.link_to(label, doc.url, { target: "_blank" }) if doc.exists?
|
@@ -42,13 +44,11 @@ module ActiveAdminAddons
|
|
42
44
|
module Views
|
43
45
|
class TableFor
|
44
46
|
def attachment_column(attribute, options = {})
|
45
|
-
options[:truncate] = options.fetch(:truncate, true)
|
46
47
|
column(attribute) { |model| PaperclipAttachment.link(self, model, attribute, options) }
|
47
48
|
end
|
48
49
|
end
|
49
50
|
class AttributesTable
|
50
51
|
def attachment_row(attribute, options = {})
|
51
|
-
options[:truncate] = options.fetch(:truncate, false)
|
52
52
|
row(attribute) { |model| PaperclipAttachment.link(self, model, attribute, options) }
|
53
53
|
end
|
54
54
|
end
|
@@ -3,11 +3,14 @@ module ActiveAdminAddons
|
|
3
3
|
class Engine < ::Rails::Engine
|
4
4
|
require 'select2-rails'
|
5
5
|
initializer "set boolean values addon" do |app|
|
6
|
-
require_relative './set_datepicker'
|
7
6
|
require_relative './addons/bool_values'
|
8
7
|
require_relative './addons/paperclip_image'
|
9
8
|
require_relative './addons/paperclip_attachment'
|
10
9
|
require_relative './addons/enum_tag'
|
10
|
+
require_relative './addons/number'
|
11
|
+
require_relative './addons/list'
|
12
|
+
require_relative './support/enumerize_formtastic_support'
|
13
|
+
require_relative './support/set_datepicker'
|
11
14
|
app.config.assets.precompile += %w(select.scss)
|
12
15
|
end
|
13
16
|
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module ActiveAdminAddons
|
2
|
+
module RansackFormBuilderExtension
|
3
|
+
extend ActiveSupport::Concern
|
4
|
+
|
5
|
+
included do
|
6
|
+
alias_method_chain :input, :ransack
|
7
|
+
end
|
8
|
+
|
9
|
+
def input_with_ransack(method, options={})
|
10
|
+
if object.is_a?(::Ransack::Search)
|
11
|
+
klass = object.klass
|
12
|
+
|
13
|
+
if klass.respond_to?(:enumerized_attributes) && (attr = klass.enumerized_attributes[method])
|
14
|
+
options[:collection] ||= attr.options
|
15
|
+
options[:as] = :select
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
input_without_ransack(method, options)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
::Formtastic::FormBuilder.send :include, ActiveAdminAddons::RansackFormBuilderExtension
|
File without changes
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: activeadmin_addons
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Platanus
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-05-
|
11
|
+
date: 2015-05-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -211,10 +211,13 @@ files:
|
|
211
211
|
- app/inputs/tags_input.rb
|
212
212
|
- lib/activeadmin_addons/addons/bool_values.rb
|
213
213
|
- lib/activeadmin_addons/addons/enum_tag.rb
|
214
|
+
- lib/activeadmin_addons/addons/list.rb
|
215
|
+
- lib/activeadmin_addons/addons/number.rb
|
214
216
|
- lib/activeadmin_addons/addons/paperclip_attachment.rb
|
215
217
|
- lib/activeadmin_addons/addons/paperclip_image.rb
|
216
218
|
- lib/activeadmin_addons/engine.rb
|
217
|
-
- lib/activeadmin_addons/
|
219
|
+
- lib/activeadmin_addons/support/enumerize_formtastic_support.rb
|
220
|
+
- lib/activeadmin_addons/support/set_datepicker.rb
|
218
221
|
- lib/activeadmin_addons/version.rb
|
219
222
|
- lib/activeadmin_addons.rb
|
220
223
|
- lib/tasks/activeadmin_addons_tasks.rake
|