14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
# File 'lib/basepack/import/controller.rb', line 14
def import_action(name, actions_class = Basepack::Import::Actions)
name = name.to_sym
self.__actions += [name] name_bang = "#{name}!"
define_method name_bang do |&block|
@title_params = [[resource_class, "Import"]]
authorize!(name, resource_class)
@import_actions = actions_class.new(self, import_form)
if request.get?
@import_actions.get
elsif request.patch?
@import_actions.patch do |import_resource|
import_resource.import_data(current_ability.user) if import_resource.state == "not_started"
redirect_to polymorphic_path([name, route_prefix, association_chain, resource_class].flatten,
import_id: import_resource.id),
notice: message_edit_done(import_form.show_form.label)
end
elsif request.post?
@import_actions.post do
redirect_to polymorphic_path([name, route_prefix, association_chain, resource_class].flatten,
import_id: import_form.edit_form.resource.id),
notice: message_new_done(import_form.edit_form.label)
end
elsif request.delete?
@import_actions.delete do
redirect_to polymorphic_path([name, route_prefix, association_chain, resource_class].flatten),
notice: message_destroy_done(import_form.edit_form.label)
end
end
end
define_method name do
send(name_bang)
end
protected name_bang
name_form = "#{name}_form"
name_form_bang = "#{name}_form!"
var = :"@#{name}_form"
define_method name_form_bang do |&block|
unless form = instance_variable_get(var)
form = import_form_for(chain_with_class)
form.configure(&block) if block
form.configuration_params do |frm, import|
import_actions = actions_class.new(self, frm)
method = "import_configuration_#{import.file_type}"
import_actions.send(method, import) if import_actions.respond_to?(method)
end
instance_variable_set(var, form)
end
form
end
helper_method name_form
define_method name_form do
send(name_form_bang)
end
end
|