Module: Alchemy::ResourcesHelper
Instance Method Summary
collapse
#controller_path_array, #resource_array, #resource_model_name, #resource_name, #resources_name
Instance Method Details
#contains_relations? ⇒ Boolean
Returns true if the resource contains any relations
119
120
121
|
# File 'app/helpers/alchemy/resources_helper.rb', line 119
def contains_relations?
resource_handler.resource_relations.present?
end
|
#edit_resource_path(resource = nil, options = {}) ⇒ Object
50
51
52
53
|
# File 'app/helpers/alchemy/resources_helper.rb', line 50
def edit_resource_path(resource = nil, options = {})
path_segments = resource_scope + [resource] || resource_array
edit_polymorphic_path path_segments, options
end
|
#new_resource_path(options = {}) ⇒ Object
46
47
48
|
# File 'app/helpers/alchemy/resources_helper.rb', line 46
def new_resource_path(options = {})
new_polymorphic_path (resource_scope + [resource_handler.namespaced_resource_name]), options
end
|
#render_attribute(resource, attribute, options = {}) ⇒ String
Returns the value from resource attribute
If the attribute has a relation, the related object’s attribute value will be returned.
The output will be truncated after 50 chars. Pass another number to truncate then and pass false to disable this completely.
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
# File 'app/helpers/alchemy/resources_helper.rb', line 74
def render_attribute(resource, attribute, options = {})
attribute_value = resource.send(attribute[:name])
if attribute[:relation]
record = resource.send(attribute[:relation][:name])
value = record.present? ? record.send(attribute[:relation][:attr_method]) : Alchemy.t(:not_found)
elsif attribute_value && attribute[:type].to_s =~ /(date|time)/
localization_format = if attribute[:type] == :datetime
options[:datetime_format] || :"alchemy.default"
elsif attribute[:type] == :date
options[:date_format] || :"alchemy.default"
else
options[:time_format] || :"alchemy.time"
end
value = l(attribute_value, format: localization_format)
elsif attribute[:type] == :boolean
value = attribute_value ? '<alchemy-icon name="check"></alchemy-icon>'.html_safe : nil
else
value = attribute_value
end
options.reverse_merge!(truncate: 50)
if options[:truncate]
value.to_s.truncate(options.fetch(:truncate, 50))
else
value
end
end
|
#resource_attribute_field_options(attribute) ⇒ Object
Returns a options hash for simple_form input fields.
103
104
105
106
107
108
109
110
111
112
113
114
115
116
|
# File 'app/helpers/alchemy/resources_helper.rb', line 103
def resource_attribute_field_options(attribute)
options = {hint: resource_handler.help_text_for(attribute)}
input_type = attribute[:type].to_s
case input_type
when "boolean"
options
when "date", "time", "datetime"
options.merge(as: input_type)
when "text"
options.merge(as: "text", input_html: {rows: 4})
else
options.merge(as: "string")
end
end
|
128
129
130
|
# File 'app/helpers/alchemy/resources_helper.rb', line 128
def resource_has_tags
resource_model.respond_to?(:tag_counts) && resource_model.tag_counts.any?
end
|
#resource_instance_variable ⇒ Object
18
19
20
|
# File 'app/helpers/alchemy/resources_helper.rb', line 18
def resource_instance_variable
instance_variable_get(:"@#{resource_name}")
end
|
#resource_model ⇒ Object
55
56
57
|
# File 'app/helpers/alchemy/resources_helper.rb', line 55
def resource_model
resource_handler.model
end
|
#resource_path(resource = resource_handler.namespaced_resource_name, options = {}) ⇒ Object
42
43
44
|
# File 'app/helpers/alchemy/resources_helper.rb', line 42
def resource_path(resource = resource_handler.namespaced_resource_name, options = {})
resources_path(resource, options)
end
|
#resource_relations_names ⇒ Object
Returns an array of all resource_relations names
124
125
126
|
# File 'app/helpers/alchemy/resources_helper.rb', line 124
def resource_relations_names
resource_handler.resource_relations.collect { |_k, v| v[:name].to_sym }
end
|
#resource_scope ⇒ Object
34
35
36
|
# File 'app/helpers/alchemy/resources_helper.rb', line 34
def resource_scope
@_resource_scope ||= [resource_url_proxy].concat(resource_handler.namespace_for_scope)
end
|
#resource_url_proxy ⇒ Object
26
27
28
29
30
31
32
|
# File 'app/helpers/alchemy/resources_helper.rb', line 26
def resource_url_proxy
if resource_handler.in_engine?
eval(resource_handler.engine_name) else
main_app
end
end
|
#resource_window_size ⇒ Object
Alchemy::ResourceHelper
Used to DRY up resource like structures in Alchemy’s admin backend in combination with Alchemy::Resource
See Alchemy::Resource for examples how to initialize a resource_handler
14
15
16
|
# File 'app/helpers/alchemy/resources_helper.rb', line 14
def resource_window_size
@resource_window_size ||= "480x#{100 + resource_handler.attributes.length * 40}"
end
|
#resources_instance_variable ⇒ Object
22
23
24
|
# File 'app/helpers/alchemy/resources_helper.rb', line 22
def resources_instance_variable
instance_variable_get(:"@#{resources_name}")
end
|
#resources_path(resource_or_name = resource_handler.namespaced_resources_name, options = {}) ⇒ Object
38
39
40
|
# File 'app/helpers/alchemy/resources_helper.rb', line 38
def resources_path(resource_or_name = resource_handler.namespaced_resources_name, options = {})
polymorphic_path (resource_scope + [resource_or_name]), options
end
|