@@ -4,8 +4,6 @@ module Alchemy
44 class Ingredient < BaseRecord
55 class DefinitionError < StandardError ; end
66
7- include Hints
8-
97 self . table_name = "alchemy_ingredients"
108
119 attribute :data , :json
@@ -16,7 +14,7 @@ class DefinitionError < StandardError; end
1614 has_one :page , through : :element , class_name : "Alchemy::Page"
1715
1816 after_initialize :set_default_value ,
19- if : -> { definition . key? ( : default) && value . nil? }
17+ if : -> { definition . default && value . nil? }
2018
2119 validates :type , presence : true
2220 validates :role , presence : true , uniqueness : { scope : :element_id , case_sensitive : false }
@@ -38,6 +36,8 @@ class DefinitionError < StandardError; end
3836 scope :texts , -> { where ( type : "Alchemy::Ingredients::Text" ) }
3937 scope :videos , -> { where ( type : "Alchemy::Ingredients::Video" ) }
4038
39+ delegate :has_hint? , :hint , to : :definition
40+
4141 class << self
4242 # Defines getter and setter method aliases for related object
4343 #
@@ -97,15 +97,15 @@ def value
9797
9898 # Settings for this ingredient from the +elements.yml+ definition.
9999 def settings
100- definition [ : settings] || { }
100+ definition . settings
101101 end
102102
103103 # Definition hash for this ingredient from +elements.yml+ file.
104104 #
105105 def definition
106- return { } unless element
106+ return IngredientDefinition . new unless element
107107
108- element . ingredient_definition_for ( role ) || { }
108+ element . ingredient_definition_for ( role ) || IngredientDefinition . new
109109 end
110110
111111 # The first 30 characters of the value
@@ -126,17 +126,12 @@ def partial_name
126126
127127 # @return [Boolean]
128128 def has_validations?
129- !!definition [ :validate ]
130- end
131-
132- # @return [Boolean]
133- def has_hint?
134- !!definition [ :hint ]
129+ definition . validate . any?
135130 end
136131
137132 # @return [Boolean]
138133 def deprecated?
139- !!definition [ : deprecated]
134+ !!definition . deprecated
140135 end
141136
142137 # @return [Boolean]
@@ -146,7 +141,7 @@ def has_tinymce?
146141
147142 # @return [Boolean]
148143 def preview_ingredient?
149- !!definition [ : as_element_title]
144+ !!definition . as_element_title
150145 end
151146
152147 # The view component of the ingredient with mapped options.
@@ -163,30 +158,8 @@ def view_component_class
163158 @_view_component_class ||= "#{ self . class . name } View" . constantize
164159 end
165160
166- def hint_translation_attribute
167- role
168- end
169-
170- def hint_translation_scope
171- "ingredient_hints"
172- end
173-
174161 def set_default_value
175- self . value = default_value
176- end
177-
178- # Returns the default value from ingredient definition
179- #
180- # If the value is a symbol it gets passed through i18n
181- # inside the +alchemy.default_ingredient_texts+ scope
182- def default_value
183- default = definition [ :default ]
184- case default
185- when Symbol
186- Alchemy . t ( default , scope : :default_ingredient_texts )
187- else
188- default
189- end
162+ self . value = definition . default_value
190163 end
191164 end
192165end
0 commit comments