formily 0.0.5.5.7

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.
Files changed (162) hide show
  1. checksums.yaml +7 -0
  2. data/CODE_OF_CONDUCT.md +13 -0
  3. data/Gemfile +4 -0
  4. data/Gemfile.lock +156 -0
  5. data/LICENSE.txt +21 -0
  6. data/README.md +84 -0
  7. data/Rakefile +1 -0
  8. data/app/assets/fonts/formily-icon.eot +0 -0
  9. data/app/assets/fonts/formily-icon.svg +26 -0
  10. data/app/assets/fonts/formily-icon.ttf +0 -0
  11. data/app/assets/fonts/formily-icon.woff +0 -0
  12. data/app/assets/fonts/formily-icon.woff2 +0 -0
  13. data/app/assets/images/blank_file.png +0 -0
  14. data/app/assets/images/formily_spin.gif +0 -0
  15. data/app/assets/javascripts/formily.js +5 -0
  16. data/app/assets/javascripts/formily/base/ajax_reloader.js +24 -0
  17. data/app/assets/javascripts/formily/base/buttons.js +160 -0
  18. data/app/assets/javascripts/formily/base/form_response.js +28 -0
  19. data/app/assets/javascripts/formily/base/local_time.js +9 -0
  20. data/app/assets/javascripts/formily/editor.js +46 -0
  21. data/app/assets/javascripts/formily/editor/editor_buttons.js +186 -0
  22. data/app/assets/javascripts/formily/editor/form_preview.js +53 -0
  23. data/app/assets/javascripts/formily/editor/input_model.js +76 -0
  24. data/app/assets/javascripts/formily/editor/input_on_change.js +83 -0
  25. data/app/assets/javascripts/formily/editor/related_fields.js +76 -0
  26. data/app/assets/javascripts/formily/form.js +22 -0
  27. data/app/assets/javascripts/formily/formily_editor.js +329 -0
  28. data/app/assets/javascripts/formily/formily_modal.js +104 -0
  29. data/app/assets/javascripts/formily/formily_url.js.erb +26 -0
  30. data/app/assets/javascripts/formily/inputs/conditioned.js +4 -0
  31. data/app/assets/javascripts/formily/inputs/conditioned/checkbox.js +73 -0
  32. data/app/assets/javascripts/formily/inputs/conditioned/option.js +82 -0
  33. data/app/assets/javascripts/formily/inputs/conditioned/radio.js +160 -0
  34. data/app/assets/javascripts/formily/inputs/date_time.js +25 -0
  35. data/app/assets/javascripts/formily/inputs/input_tab.js +18 -0
  36. data/app/assets/javascripts/formily/inputs/location.js +39 -0
  37. data/app/assets/javascripts/formily/inputs/multi_file.js +228 -0
  38. data/app/assets/javascripts/formily/lib/jquery.datetimepicker.full.min.js +2 -0
  39. data/app/assets/javascripts/formily/lib/modernizr.js +8 -0
  40. data/app/assets/javascripts/formily/lib/strftime.min.js +12 -0
  41. data/app/assets/javascripts/formily/lib/tag-it.min.js +17 -0
  42. data/app/assets/javascripts/formily/mobile.js +10 -0
  43. data/app/assets/javascripts/formily_app.js +15 -0
  44. data/app/assets/javascripts/formily_iframe.js +11 -0
  45. data/app/assets/stylesheets/formily.scss +14 -0
  46. data/app/assets/stylesheets/formily/base/fonts.scss +65 -0
  47. data/app/assets/stylesheets/formily/base/layout.scss +66 -0
  48. data/app/assets/stylesheets/formily/base/links.css +7 -0
  49. data/app/assets/stylesheets/formily/base/ui-dialog.scss +129 -0
  50. data/app/assets/stylesheets/formily/editor.scss +25 -0
  51. data/app/assets/stylesheets/formily/editor/inputs_group_list.css +14 -0
  52. data/app/assets/stylesheets/formily/editor/inputs_list.css +97 -0
  53. data/app/assets/stylesheets/formily/editor/related_modal.scss +49 -0
  54. data/app/assets/stylesheets/formily/formily_editor.scss +53 -0
  55. data/app/assets/stylesheets/formily/formily_modal.scss +2 -0
  56. data/app/assets/stylesheets/formily/foundation_fix.scss +140 -0
  57. data/app/assets/stylesheets/formily/inputs/date_time.scss +8 -0
  58. data/app/assets/stylesheets/formily/inputs/multi_file.scss +111 -0
  59. data/app/assets/stylesheets/formily/jquery.datetimepicker.min.css +1 -0
  60. data/app/assets/stylesheets/formily/lib/jquery.tagit.css +69 -0
  61. data/app/assets/stylesheets/formily/modal/content.scss +36 -0
  62. data/app/assets/stylesheets/formily/modal/iframe.scss +29 -0
  63. data/app/assets/stylesheets/formily_iframe.scss +64 -0
  64. data/app/assets/stylesheets/foundation_formily.scss +20 -0
  65. data/app/controllers/formily/file_controller.rb +17 -0
  66. data/app/controllers/formily/form_types_controller.rb +46 -0
  67. data/app/controllers/formily/formilyable_controller.rb +98 -0
  68. data/app/controllers/formily/forms_controller.rb +133 -0
  69. data/app/controllers/formily/iframe/forms_controller.rb +28 -0
  70. data/app/controllers/formily/inputs_controller.rb +113 -0
  71. data/app/controllers/formily/submit_data_controller.rb +151 -0
  72. data/app/controllers/formily_controller.rb +22 -0
  73. data/app/helpers/formily_helper.rb +17 -0
  74. data/app/models/formily/checkbox_input.rb +8 -0
  75. data/app/models/formily/checkbox_input_group.rb +14 -0
  76. data/app/models/formily/date_time_input.rb +19 -0
  77. data/app/models/formily/file.rb +14 -0
  78. data/app/models/formily/form.rb +41 -0
  79. data/app/models/formily/form_type.rb +10 -0
  80. data/app/models/formily/formilyable_form.rb +18 -0
  81. data/app/models/formily/input.rb +124 -0
  82. data/app/models/formily/input_value.rb +23 -0
  83. data/app/models/formily/multiple_file_input.rb +18 -0
  84. data/app/models/formily/option_input.rb +8 -0
  85. data/app/models/formily/options_input_group.rb +14 -0
  86. data/app/models/formily/radio_input.rb +12 -0
  87. data/app/models/formily/radio_input_group.rb +14 -0
  88. data/app/models/formily/static_text.rb +8 -0
  89. data/app/models/formily/submit.rb +47 -0
  90. data/app/models/formily/text_input.rb +8 -0
  91. data/app/models/formily/textarea_input.rb +8 -0
  92. data/app/views/formily/data/_forms_table.html.haml +19 -0
  93. data/app/views/formily/data/_many_tables.html.erb +3 -0
  94. data/app/views/formily/data/_table.html.erb +33 -0
  95. data/app/views/formily/data/submit_data_table.html.haml +32 -0
  96. data/app/views/formily/editor/_default_value.haml +18 -0
  97. data/app/views/formily/editor/_editor.haml +18 -0
  98. data/app/views/formily/editor/_modal.haml +197 -0
  99. data/app/views/formily/editor/partial/_group.haml +41 -0
  100. data/app/views/formily/editor/partial/_group_input.haml +36 -0
  101. data/app/views/formily/editor/partial/_input.haml +35 -0
  102. data/app/views/formily/editor/partial/_input_fieldset.haml +12 -0
  103. data/app/views/formily/form_types/_form.haml +9 -0
  104. data/app/views/formily/form_types/edit.haml +6 -0
  105. data/app/views/formily/form_types/index.haml +24 -0
  106. data/app/views/formily/form_types/new.haml +6 -0
  107. data/app/views/formily/formilyable/index.haml +67 -0
  108. data/app/views/formily/formilyable/new.haml +37 -0
  109. data/app/views/formily/forms/_form.haml +34 -0
  110. data/app/views/formily/forms/_preview.haml +16 -0
  111. data/app/views/formily/forms/edit.haml +5 -0
  112. data/app/views/formily/forms/index.haml +40 -0
  113. data/app/views/formily/forms/new.haml +5 -0
  114. data/app/views/formily/forms/reload_formily_table.haml +4 -0
  115. data/app/views/formily/forms/show.haml +1 -0
  116. data/app/views/formily/helpers/_iframe_formily_modal.html.haml +3 -0
  117. data/app/views/formily/helpers/_related_forms.html.haml +12 -0
  118. data/app/views/formily/helpers/_related_forms_tr.html.haml +28 -0
  119. data/app/views/formily/iframe/forms/show.haml +1 -0
  120. data/app/views/formily/inputs/_group.haml +40 -0
  121. data/app/views/formily/inputs/_group_input.haml +36 -0
  122. data/app/views/formily/inputs/_input.haml +35 -0
  123. data/app/views/formily/inputs/_input_fieldset.haml +12 -0
  124. data/app/views/formily/inputs/render_input_html.haml +7 -0
  125. data/app/views/formily/partial/_form.haml +37 -0
  126. data/app/views/formily/partial/inputs/_checkbox_input.haml +18 -0
  127. data/app/views/formily/partial/inputs/_checkbox_input_group.haml +36 -0
  128. data/app/views/formily/partial/inputs/_conditioned_fields.haml +36 -0
  129. data/app/views/formily/partial/inputs/_date_time_input.haml +15 -0
  130. data/app/views/formily/partial/inputs/_file_input.haml +20 -0
  131. data/app/views/formily/partial/inputs/_file_preview.haml +14 -0
  132. data/app/views/formily/partial/inputs/_input.haml +1 -0
  133. data/app/views/formily/partial/inputs/_multiple_file_input.haml +25 -0
  134. data/app/views/formily/partial/inputs/_options_input_group.haml +77 -0
  135. data/app/views/formily/partial/inputs/_radio_input_group.haml +41 -0
  136. data/app/views/formily/partial/inputs/_static_text.haml +11 -0
  137. data/app/views/formily/partial/inputs/_text_input.haml +19 -0
  138. data/app/views/formily/partial/inputs/_textarea_input.haml +19 -0
  139. data/app/views/formily/submit_data/submit.html.erb +5 -0
  140. data/app/views/formily/submit_data/submit.json.jbuilder +5 -0
  141. data/app/views/layouts/formily_iframe.haml +16 -0
  142. data/config/routes.rb +41 -0
  143. data/formily.gemspec +41 -0
  144. data/lib/formily.rb +37 -0
  145. data/lib/formily/config.rb +72 -0
  146. data/lib/formily/engine.rb +12 -0
  147. data/lib/formily/helpers/view_helper.rb +114 -0
  148. data/lib/formily/relation.rb +26 -0
  149. data/lib/formily/relation/formily_methods.rb +30 -0
  150. data/lib/formily/relation/has_many_methods.rb +16 -0
  151. data/lib/formily/submitted_data_table.rb +74 -0
  152. data/lib/formily/version.rb +4 -0
  153. data/lib/generators/formily/install/install_generator.rb +43 -0
  154. data/lib/generators/formily/install/templates/create_formily_data.rb +28 -0
  155. data/lib/generators/formily/install/templates/create_formily_files.rb +13 -0
  156. data/lib/generators/formily/install/templates/create_formily_form_types.rb +12 -0
  157. data/lib/generators/formily/install/templates/create_formily_forms.rb +16 -0
  158. data/lib/generators/formily/install/templates/create_formily_inputs.rb +24 -0
  159. data/lib/generators/formily/install/templates/create_formilyable_forms.rb +17 -0
  160. data/lib/generators/formily/install/templates/formily.rb +21 -0
  161. data/lib/generators/formily/views/views_generator.rb +11 -0
  162. metadata +350 -0
@@ -0,0 +1,29 @@
1
+ .formily-modal-container {
2
+ display: none;
3
+ position: fixed;
4
+ height: 100%;
5
+ width: 100%;
6
+ top: 0;
7
+ left: 0;
8
+ z-index: 9999;
9
+ background-color: rgba(0, 0, 0, 0.65);
10
+
11
+ #formily_iframe_modal {
12
+ display: block;
13
+ position: absolute;
14
+ border: 2px solid #000000;
15
+ border-radius: 0 0 5px 5px;
16
+ top: 50%;
17
+ left: 50%;
18
+ background-color: #ffffff;
19
+ overflow: auto;
20
+ -webkit-overflow-scrolling: touch;
21
+
22
+ iframe {
23
+ position: static;
24
+ display: block;
25
+ height: 100%;
26
+ width: 100%;
27
+ }
28
+ }
29
+ }
@@ -0,0 +1,64 @@
1
+ //=require foundation
2
+ //=require formily/foundation_fix
3
+ //=require formily/jquery.datetimepicker.min
4
+ //=require formily/inputs/multi_file
5
+ //=require formily/inputs/date_time
6
+ //=require formily/base/fonts
7
+
8
+ html, body {
9
+ display: block;
10
+ height: 100%;
11
+ width: 100%;
12
+ }
13
+
14
+ body {
15
+ position: relative;
16
+ overflow: auto;
17
+ -webkit-overflow-scrolling: touch;
18
+ }
19
+
20
+ body.formily {
21
+ width: 100%;
22
+ height: 100%;
23
+ padding: 0;
24
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
25
+ margin: 0 auto;
26
+ background-color: #EDE7F6;
27
+
28
+ .header {
29
+ display: block;
30
+ height: 37px;
31
+ margin: 0;
32
+ padding: 0;
33
+
34
+ text-align: left;
35
+ line-height: 30px;
36
+ font-size: 20px;
37
+
38
+ color: #ffffff;
39
+ background-color: #000000;
40
+
41
+ a.close-iframe-btn {
42
+ float: right;
43
+ color: #ffffff;
44
+ text-decoration: none;
45
+ margin: 4px 10px 0 0;
46
+ }
47
+
48
+ a.formily-edit .ff-icon-pencil, a.formily-edit span {
49
+ color: #fff;
50
+ font-size: 12px
51
+ }
52
+ }
53
+
54
+ .wrapper {
55
+ display: block;
56
+ margin: 0;
57
+ padding: 0;
58
+ background-color: #ffffff;
59
+
60
+ .content {
61
+ padding: 10px 10px 10px 10px;
62
+ }
63
+ }
64
+ }
@@ -0,0 +1,20 @@
1
+ //=require foundation
2
+ //=require formily/foundation_fix
3
+ //=require formily/base/fonts
4
+ //=require formily/editor
5
+ //=require formily/jquery.datetimepicker.min
6
+ //=require formily/inputs/multi_file
7
+ //=require formily/inputs/date_time
8
+
9
+
10
+ html, body {
11
+ display: block;
12
+ height: 100%;
13
+ width: 100%;
14
+ }
15
+
16
+ body {
17
+ position: relative;
18
+ overflow: auto;
19
+ -webkit-overflow-scrolling: touch;
20
+ }
@@ -0,0 +1,17 @@
1
+ # coding: utf-8
2
+ class Formily::FileController < FormilyController
3
+
4
+ before_action :authenticate_user! if (true if Devise rescue false)
5
+
6
+ def show
7
+ f = Formily::File.find(params[:id])
8
+ send_file Rails.root.join(f.file.path), type: f.file_content_type, disposition: 'inline'
9
+ end
10
+
11
+ def destroy
12
+ file = Formily::File.find(params[:id])
13
+ file.destroy
14
+ render nothing: true, status: :ok
15
+ end
16
+
17
+ end
@@ -0,0 +1,46 @@
1
+ # coding: utf-8
2
+ class Formily::FormTypesController < FormilyController
3
+
4
+ before_action :get_form_type, only: [:edit, :update, :destroy]
5
+
6
+
7
+ def index
8
+ @form_types = Formily::FormType.all
9
+ end
10
+
11
+ def new
12
+ @form_type = Formily::FormType.new
13
+ end
14
+
15
+ def create
16
+ form_type = Formily::FormType.new(form_type_params)
17
+ form_type.save
18
+
19
+ redirect_to formily_form_types_path
20
+ end
21
+
22
+ def edit
23
+ end
24
+
25
+ def update
26
+ @form_type.update(form_type_params)
27
+ redirect_to formily_form_types_path
28
+ end
29
+
30
+ def destroy
31
+ @form_type.destroy
32
+ redirect_to formily_form_types_path
33
+ end
34
+
35
+
36
+ private
37
+
38
+ def get_form_type
39
+ @form_type = Formily::FormType.find(params[:id])
40
+ end
41
+
42
+ def form_type_params
43
+ params.require(:formily_form_type).permit(:title)
44
+ end
45
+
46
+ end
@@ -0,0 +1,98 @@
1
+ # coding: utf-8
2
+ class Formily::FormilyableController < FormilyController
3
+
4
+ def index
5
+ @forms = Formily::Form.all
6
+ @select_forms = Formily::Form.select(:id, :title)
7
+ @related_forms = Formily::FormilyableForm.order(created_at: :desc)
8
+
9
+ @related_forms = if params[:all].present?
10
+ Formily::FormilyableForm.order(created_at: :desc)
11
+ else
12
+ Formily::FormilyableForm.joins(:form).order(created_at: :desc).where(formily_forms: {is_deleted: false})
13
+ end
14
+ end
15
+
16
+ def new
17
+ # Set user data
18
+ if params[:model_name].present?
19
+ session[:model] = {
20
+ 'model_name' => params[:model_name],
21
+ 'model_id' => params[:model_id],
22
+ 'user_id' => params[:user_id]
23
+ }
24
+ end
25
+
26
+ @related_model = session[:model]
27
+
28
+ @forms = Formily::FormilyableForm.includes(:form).
29
+ where(formilyable_type: @related_model['model_name'], formilyable_id: @related_model['model_id'])
30
+ @model = get_model
31
+ @select_forms = Formily::Form.where.not(id: @model.formily_forms.pluck(:id))
32
+ end
33
+
34
+ def create
35
+ formilyable = Formily::FormilyableForm.new(formilyable_params)
36
+
37
+ url = params[:iframe].present? ? new_formily_formilyable_path(iframe: true) : formily_forms_assign_path
38
+
39
+ if formilyable.save
40
+ redirect_to url
41
+ else
42
+ redirect_to url
43
+ end
44
+ end
45
+
46
+ def destroy
47
+ formilyable = Formily::FormilyableForm.find(params[:id])
48
+ formilyable.destroy
49
+
50
+ url = params[:iframe].present? ? new_formily_formilyable_path(iframe: true) : formily_forms_assign_path
51
+
52
+ redirect_to url
53
+ end
54
+
55
+ def select_data
56
+
57
+ model = params[:formilyable_type].safe_constantize
58
+
59
+ ids = Formily::FormilyableForm.where(formilyable_type: params[:formilyable_type], form_id: params[:form_id]).pluck(:formilyable_id)
60
+
61
+ data = model.where.not(id: ids)
62
+
63
+ render json: data.to_json(only: [:id], methods: :formily_title)
64
+
65
+ end
66
+
67
+ def connect
68
+ @page_name = 'Formily forms | Connect'
69
+ @forms = Formily::Form.all
70
+
71
+ @not_manage = true
72
+
73
+ @model = @model_name.safe_constantize.find(@model_id)
74
+
75
+ @select_forms = Formily::Form.where.not(id: @model.formily_forms.pluck(:id))
76
+
77
+ end
78
+
79
+
80
+ private
81
+
82
+ def formilyable_params
83
+ params.permit(:form_id, :formilyable_id, :formilyable_type)
84
+ end
85
+
86
+ def formily_layout
87
+ if params[:iframe].present?
88
+ 'formily_iframe'
89
+ else
90
+ ApplicationController.new.send(:_layout).virtual_path.split('/').last
91
+ end
92
+ end
93
+
94
+ def get_model
95
+ session[:model]['model_name'].safe_constantize.find(session[:model]['model_id'])
96
+ end
97
+
98
+ end
@@ -0,0 +1,133 @@
1
+ # coding: utf-8
2
+ class Formily::FormsController < FormilyController
3
+
4
+ before_action :save_params
5
+
6
+ def index
7
+ @forms = if params[:all].present?
8
+ Formily::Form.includes(:form_type).all
9
+ else
10
+ Formily::Form.includes(:form_type).where(is_deleted: false)
11
+ end
12
+ end
13
+
14
+ def new
15
+ @form = Formily::Form.new(id: 0)
16
+ end
17
+
18
+ def show
19
+ @form = Formily::Form.find(params[:id])
20
+ model = params[:model_name].safe_constantize
21
+ @obj_rel = model.find(params[:model_id])
22
+
23
+ @submit = @form.submits.find_by(id: params[:submit_id])
24
+
25
+ if @submit.blank?
26
+ @submit = Formily::Submit.create({form_id: @form.id, resource_id: params[:model_id],
27
+ user_id: params[:user_id], resource_type: params[:model_name]})
28
+ end
29
+
30
+ end
31
+
32
+ def edit
33
+ @form = Formily::Form.includes(:inputs).find(params[:id])
34
+ end
35
+
36
+ def create
37
+ form = Formily::Form.new(form_params)
38
+
39
+ if form.save
40
+ if params[:inputs]
41
+ params[:inputs].each do |input|
42
+ i = form.inputs.build(input.to_hash.except('group_inputs'))
43
+ i.save
44
+ if input[:group_inputs]
45
+ input[:group_inputs].each do |gi|
46
+ t = i.inputs.build(gi.to_hash)
47
+ t.save
48
+ end
49
+ end
50
+ end
51
+ end
52
+
53
+ redirect_to formily_forms_path(@params_hash)
54
+ else
55
+ redirect_to formily_forms_path(@params_hash)
56
+ end
57
+
58
+ end
59
+
60
+ def update
61
+
62
+ form = if params[:id].to_i == 0
63
+ Formily::Form.create
64
+ else
65
+ Formily::Form.find(params[:id])
66
+ end
67
+
68
+ form.update(form_params)
69
+
70
+ render json: {id: form.id}, status: :ok
71
+ end
72
+
73
+ def destroy
74
+ form = Formily::Form.find(params[:id])
75
+ count = Formily::Submit.where(form_id: form.id).count
76
+
77
+ if count > 0
78
+ form.update(is_deleted: true)
79
+ else
80
+ form.destroy
81
+ end
82
+
83
+ redirect_to formily_forms_path(@params_hash)
84
+ end
85
+
86
+ def preview
87
+ form = Formily::Form.find_by(id: params[:formily_form][:id])
88
+ form ||= Formily::Form.new
89
+ submit = Formily::Submit.new(created_at: DateTime.now)
90
+ render partial: 'preview', layout: false, locals: {:@form => form, :@obj_rel => form, :@submit => submit}
91
+ end
92
+
93
+
94
+ def reload_formily_table
95
+ user_id = params[:user_id]
96
+ obj_rel = params[:resource_type].safe_constantize.find(params[:resource_id])
97
+
98
+ render locals: {obj_rel: obj_rel, user_id: user_id, flag: params[:flag].present?}, layout: false
99
+ end
100
+
101
+
102
+ def add_new_response
103
+ submit = Formily::Submit.where(params.permit(:form_id, :resource_id, :user_id, :resource_type))
104
+ .order(created_at: :desc).first
105
+
106
+ if submit.blank? || submit.state == 0 || submit.input_values.count == 0
107
+ render json: {msg: 'Complete the outstanding form instead of adding a new copy'}, status: :unprocessable_entity
108
+ else
109
+ submit = Formily::Submit.new(params.permit(:form_id, :resource_id, :user_id, :resource_type))
110
+ submit.save
111
+ render json: {}, status: :ok
112
+ end
113
+ end
114
+
115
+ private
116
+
117
+ def form_params
118
+ params.require(:formily_form).permit(:title, :description, :form_type_id)
119
+ end
120
+
121
+ def save_params
122
+ @params_hash = {}
123
+ @params_hash[:iframe] = true if params[:iframe]
124
+ @params_hash[:model_id] = params[:model_id]
125
+ @params_hash[:model_name] = params[:model_name]
126
+ @params_hash[:user_id] = params[:user_id]
127
+
128
+ @model_id = @params_hash[:model_id]
129
+ @model_name = @params_hash[:model_name]
130
+ @user_id = @params_hash[:user_id]
131
+ end
132
+
133
+ end
@@ -0,0 +1,28 @@
1
+ # coding: utf-8
2
+ class Formily::Iframe::FormsController < FormilyController
3
+
4
+ def show
5
+ @form = Formily::Form.find(params[:id])
6
+
7
+ model = params[:model_name].safe_constantize
8
+
9
+ @obj_rel = model.blank? ? nil : model.find(params[:model_id])
10
+
11
+ @submit = @form.submits.find_by(id: params[:submit_id])
12
+
13
+ if @submit.blank?
14
+ @submit = Formily::Submit.create({form_id: @form.id, resource_id: params[:model_id],
15
+ user_id: params[:user_id], resource_type: params[:model_name]})
16
+ end
17
+ end
18
+
19
+ def add
20
+ end
21
+
22
+
23
+ private
24
+ def formily_layout
25
+ 'formily_iframe'
26
+ end
27
+
28
+ end
@@ -0,0 +1,113 @@
1
+ # coding: utf-8
2
+ class Formily::InputsController < FormilyController
3
+
4
+ def create
5
+ input = Formily::Input.create(input_params)
6
+ render json: {id: input.id}, status: :ok
7
+ end
8
+
9
+ def update
10
+ input = Formily::Input.find(params[:id])
11
+ input.update(input_params)
12
+ render nothing: true, status: :ok
13
+ end
14
+
15
+ def destroy
16
+ input = Formily::Input.find(params[:id])
17
+
18
+ count = Formily::InputValue.where(input_id: input.id).count
19
+
20
+ if input.inputs.count > 0
21
+ count += Formily::InputValue.where(input_id: input.inputs.map(&:id)).count
22
+ end
23
+
24
+ if input.type == 'Formily::RadioInput'
25
+ count += Formily::InputValue.where(input_id: input.group_input_id).count
26
+ end
27
+
28
+ if input.type == 'Formily::OptionInput'
29
+ count += Formily::InputValue.where(input_id: input.group_input_id).count
30
+ end
31
+
32
+ if count > 0
33
+ input.update(is_deleted: true)
34
+ else
35
+ input.destroy
36
+ end
37
+
38
+ render nothing: true, status: :ok
39
+ end
40
+
41
+ def render_input_html
42
+ if params[:type].present?
43
+ @input = params[:type].constantize.new(params.permit(:id, :name, :label, :description, :type,
44
+ :field_order, :tag_attributes, :default_value))
45
+ render layout: false
46
+ end
47
+ end
48
+
49
+ def render_related
50
+
51
+ if params[:related_arr]
52
+
53
+ if params[:related_arr].blank?
54
+ models = Formily.formily_models
55
+ data = []
56
+
57
+ models.each do |model|
58
+ data << {label: model.to_s, value: model.to_s}
59
+ data << {
60
+ label: model.to_s + '->' + model.formily_form_related_model.to_s,
61
+ value: model.to_s + '->' + model.formily_form_related_model.to_s
62
+ }
63
+ end
64
+
65
+ render json: data.to_json, status: :ok
66
+
67
+ else
68
+
69
+ model = if params[:related_arr][0] =~ /->/
70
+ params[:related_arr][0].sub(/.*?->/, '').safe_constantize
71
+ else
72
+ params[:related_arr][0].safe_constantize
73
+ end
74
+
75
+ if model
76
+ tmp = model.new
77
+
78
+ params[:related_arr][1..-1].each do |attr|
79
+ tmp = tmp.send('build_' + attr) rescue nil
80
+ tmp = tmp.send(attr) rescue nil unless tmp
81
+ end
82
+
83
+ if tmp && tmp.class.superclass.name =~ /\Aactiverecord/i
84
+ model = tmp.class
85
+ data = []
86
+ if model.reflect_on_all_associations.any?
87
+ model.reflect_on_all_associations.each do |ref|
88
+ data << {label: ref.name, value: ref.name, macro: ref.macro} if ref.macro =~ /belongs_to/i
89
+ end
90
+ end
91
+ data += model.columns_hash.map{|k,v| {label: k, value: k}}
92
+
93
+ render json: data.to_json, status: :ok
94
+ else
95
+ render text: '', status: :ok
96
+ end
97
+
98
+ end
99
+ end
100
+
101
+ else
102
+ render text: '', status: :ok
103
+ end
104
+
105
+ end
106
+
107
+ private
108
+ def input_params
109
+ params.permit(:id, :name, :type, :label, :description, :group_input_id,
110
+ :field_order, :default_value, :tag_attributes, :form_id)
111
+ end
112
+
113
+ end