activeadmin_addons 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|