formily 0.0.5.5.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/CODE_OF_CONDUCT.md +13 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +156 -0
- data/LICENSE.txt +21 -0
- data/README.md +84 -0
- data/Rakefile +1 -0
- data/app/assets/fonts/formily-icon.eot +0 -0
- data/app/assets/fonts/formily-icon.svg +26 -0
- data/app/assets/fonts/formily-icon.ttf +0 -0
- data/app/assets/fonts/formily-icon.woff +0 -0
- data/app/assets/fonts/formily-icon.woff2 +0 -0
- data/app/assets/images/blank_file.png +0 -0
- data/app/assets/images/formily_spin.gif +0 -0
- data/app/assets/javascripts/formily.js +5 -0
- data/app/assets/javascripts/formily/base/ajax_reloader.js +24 -0
- data/app/assets/javascripts/formily/base/buttons.js +160 -0
- data/app/assets/javascripts/formily/base/form_response.js +28 -0
- data/app/assets/javascripts/formily/base/local_time.js +9 -0
- data/app/assets/javascripts/formily/editor.js +46 -0
- data/app/assets/javascripts/formily/editor/editor_buttons.js +186 -0
- data/app/assets/javascripts/formily/editor/form_preview.js +53 -0
- data/app/assets/javascripts/formily/editor/input_model.js +76 -0
- data/app/assets/javascripts/formily/editor/input_on_change.js +83 -0
- data/app/assets/javascripts/formily/editor/related_fields.js +76 -0
- data/app/assets/javascripts/formily/form.js +22 -0
- data/app/assets/javascripts/formily/formily_editor.js +329 -0
- data/app/assets/javascripts/formily/formily_modal.js +104 -0
- data/app/assets/javascripts/formily/formily_url.js.erb +26 -0
- data/app/assets/javascripts/formily/inputs/conditioned.js +4 -0
- data/app/assets/javascripts/formily/inputs/conditioned/checkbox.js +73 -0
- data/app/assets/javascripts/formily/inputs/conditioned/option.js +82 -0
- data/app/assets/javascripts/formily/inputs/conditioned/radio.js +160 -0
- data/app/assets/javascripts/formily/inputs/date_time.js +25 -0
- data/app/assets/javascripts/formily/inputs/input_tab.js +18 -0
- data/app/assets/javascripts/formily/inputs/location.js +39 -0
- data/app/assets/javascripts/formily/inputs/multi_file.js +228 -0
- data/app/assets/javascripts/formily/lib/jquery.datetimepicker.full.min.js +2 -0
- data/app/assets/javascripts/formily/lib/modernizr.js +8 -0
- data/app/assets/javascripts/formily/lib/strftime.min.js +12 -0
- data/app/assets/javascripts/formily/lib/tag-it.min.js +17 -0
- data/app/assets/javascripts/formily/mobile.js +10 -0
- data/app/assets/javascripts/formily_app.js +15 -0
- data/app/assets/javascripts/formily_iframe.js +11 -0
- data/app/assets/stylesheets/formily.scss +14 -0
- data/app/assets/stylesheets/formily/base/fonts.scss +65 -0
- data/app/assets/stylesheets/formily/base/layout.scss +66 -0
- data/app/assets/stylesheets/formily/base/links.css +7 -0
- data/app/assets/stylesheets/formily/base/ui-dialog.scss +129 -0
- data/app/assets/stylesheets/formily/editor.scss +25 -0
- data/app/assets/stylesheets/formily/editor/inputs_group_list.css +14 -0
- data/app/assets/stylesheets/formily/editor/inputs_list.css +97 -0
- data/app/assets/stylesheets/formily/editor/related_modal.scss +49 -0
- data/app/assets/stylesheets/formily/formily_editor.scss +53 -0
- data/app/assets/stylesheets/formily/formily_modal.scss +2 -0
- data/app/assets/stylesheets/formily/foundation_fix.scss +140 -0
- data/app/assets/stylesheets/formily/inputs/date_time.scss +8 -0
- data/app/assets/stylesheets/formily/inputs/multi_file.scss +111 -0
- data/app/assets/stylesheets/formily/jquery.datetimepicker.min.css +1 -0
- data/app/assets/stylesheets/formily/lib/jquery.tagit.css +69 -0
- data/app/assets/stylesheets/formily/modal/content.scss +36 -0
- data/app/assets/stylesheets/formily/modal/iframe.scss +29 -0
- data/app/assets/stylesheets/formily_iframe.scss +64 -0
- data/app/assets/stylesheets/foundation_formily.scss +20 -0
- data/app/controllers/formily/file_controller.rb +17 -0
- data/app/controllers/formily/form_types_controller.rb +46 -0
- data/app/controllers/formily/formilyable_controller.rb +98 -0
- data/app/controllers/formily/forms_controller.rb +133 -0
- data/app/controllers/formily/iframe/forms_controller.rb +28 -0
- data/app/controllers/formily/inputs_controller.rb +113 -0
- data/app/controllers/formily/submit_data_controller.rb +151 -0
- data/app/controllers/formily_controller.rb +22 -0
- data/app/helpers/formily_helper.rb +17 -0
- data/app/models/formily/checkbox_input.rb +8 -0
- data/app/models/formily/checkbox_input_group.rb +14 -0
- data/app/models/formily/date_time_input.rb +19 -0
- data/app/models/formily/file.rb +14 -0
- data/app/models/formily/form.rb +41 -0
- data/app/models/formily/form_type.rb +10 -0
- data/app/models/formily/formilyable_form.rb +18 -0
- data/app/models/formily/input.rb +124 -0
- data/app/models/formily/input_value.rb +23 -0
- data/app/models/formily/multiple_file_input.rb +18 -0
- data/app/models/formily/option_input.rb +8 -0
- data/app/models/formily/options_input_group.rb +14 -0
- data/app/models/formily/radio_input.rb +12 -0
- data/app/models/formily/radio_input_group.rb +14 -0
- data/app/models/formily/static_text.rb +8 -0
- data/app/models/formily/submit.rb +47 -0
- data/app/models/formily/text_input.rb +8 -0
- data/app/models/formily/textarea_input.rb +8 -0
- data/app/views/formily/data/_forms_table.html.haml +19 -0
- data/app/views/formily/data/_many_tables.html.erb +3 -0
- data/app/views/formily/data/_table.html.erb +33 -0
- data/app/views/formily/data/submit_data_table.html.haml +32 -0
- data/app/views/formily/editor/_default_value.haml +18 -0
- data/app/views/formily/editor/_editor.haml +18 -0
- data/app/views/formily/editor/_modal.haml +197 -0
- data/app/views/formily/editor/partial/_group.haml +41 -0
- data/app/views/formily/editor/partial/_group_input.haml +36 -0
- data/app/views/formily/editor/partial/_input.haml +35 -0
- data/app/views/formily/editor/partial/_input_fieldset.haml +12 -0
- data/app/views/formily/form_types/_form.haml +9 -0
- data/app/views/formily/form_types/edit.haml +6 -0
- data/app/views/formily/form_types/index.haml +24 -0
- data/app/views/formily/form_types/new.haml +6 -0
- data/app/views/formily/formilyable/index.haml +67 -0
- data/app/views/formily/formilyable/new.haml +37 -0
- data/app/views/formily/forms/_form.haml +34 -0
- data/app/views/formily/forms/_preview.haml +16 -0
- data/app/views/formily/forms/edit.haml +5 -0
- data/app/views/formily/forms/index.haml +40 -0
- data/app/views/formily/forms/new.haml +5 -0
- data/app/views/formily/forms/reload_formily_table.haml +4 -0
- data/app/views/formily/forms/show.haml +1 -0
- data/app/views/formily/helpers/_iframe_formily_modal.html.haml +3 -0
- data/app/views/formily/helpers/_related_forms.html.haml +12 -0
- data/app/views/formily/helpers/_related_forms_tr.html.haml +28 -0
- data/app/views/formily/iframe/forms/show.haml +1 -0
- data/app/views/formily/inputs/_group.haml +40 -0
- data/app/views/formily/inputs/_group_input.haml +36 -0
- data/app/views/formily/inputs/_input.haml +35 -0
- data/app/views/formily/inputs/_input_fieldset.haml +12 -0
- data/app/views/formily/inputs/render_input_html.haml +7 -0
- data/app/views/formily/partial/_form.haml +37 -0
- data/app/views/formily/partial/inputs/_checkbox_input.haml +18 -0
- data/app/views/formily/partial/inputs/_checkbox_input_group.haml +36 -0
- data/app/views/formily/partial/inputs/_conditioned_fields.haml +36 -0
- data/app/views/formily/partial/inputs/_date_time_input.haml +15 -0
- data/app/views/formily/partial/inputs/_file_input.haml +20 -0
- data/app/views/formily/partial/inputs/_file_preview.haml +14 -0
- data/app/views/formily/partial/inputs/_input.haml +1 -0
- data/app/views/formily/partial/inputs/_multiple_file_input.haml +25 -0
- data/app/views/formily/partial/inputs/_options_input_group.haml +77 -0
- data/app/views/formily/partial/inputs/_radio_input_group.haml +41 -0
- data/app/views/formily/partial/inputs/_static_text.haml +11 -0
- data/app/views/formily/partial/inputs/_text_input.haml +19 -0
- data/app/views/formily/partial/inputs/_textarea_input.haml +19 -0
- data/app/views/formily/submit_data/submit.html.erb +5 -0
- data/app/views/formily/submit_data/submit.json.jbuilder +5 -0
- data/app/views/layouts/formily_iframe.haml +16 -0
- data/config/routes.rb +41 -0
- data/formily.gemspec +41 -0
- data/lib/formily.rb +37 -0
- data/lib/formily/config.rb +72 -0
- data/lib/formily/engine.rb +12 -0
- data/lib/formily/helpers/view_helper.rb +114 -0
- data/lib/formily/relation.rb +26 -0
- data/lib/formily/relation/formily_methods.rb +30 -0
- data/lib/formily/relation/has_many_methods.rb +16 -0
- data/lib/formily/submitted_data_table.rb +74 -0
- data/lib/formily/version.rb +4 -0
- data/lib/generators/formily/install/install_generator.rb +43 -0
- data/lib/generators/formily/install/templates/create_formily_data.rb +28 -0
- data/lib/generators/formily/install/templates/create_formily_files.rb +13 -0
- data/lib/generators/formily/install/templates/create_formily_form_types.rb +12 -0
- data/lib/generators/formily/install/templates/create_formily_forms.rb +16 -0
- data/lib/generators/formily/install/templates/create_formily_inputs.rb +24 -0
- data/lib/generators/formily/install/templates/create_formilyable_forms.rb +17 -0
- data/lib/generators/formily/install/templates/formily.rb +21 -0
- data/lib/generators/formily/views/views_generator.rb +11 -0
- 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
|