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.
- 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,28 @@
|
|
|
1
|
+
$(document).ready(function() {
|
|
2
|
+
|
|
3
|
+
$(document).on('click', 'span[data-formily-new-response]', function(e){
|
|
4
|
+
var self = $(this);
|
|
5
|
+
var data = self.data('formilyNewResponse');
|
|
6
|
+
var url = self.data('href');
|
|
7
|
+
|
|
8
|
+
if(self.parents('table:first').data('formilyFlag')) {
|
|
9
|
+
data.flag = true;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
$.ajax({
|
|
13
|
+
url: url,
|
|
14
|
+
type: 'POST',
|
|
15
|
+
data: data,
|
|
16
|
+
success: function(){
|
|
17
|
+
$(document).trigger('formily_update_table', data);
|
|
18
|
+
},
|
|
19
|
+
error: function(resp){
|
|
20
|
+
console.error(resp.responseJSON.msg);
|
|
21
|
+
alert(resp.responseJSON.msg);
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
e.preventDefault();
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
});
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
$(document).on('ready ajaxComplete', function() {
|
|
2
|
+
|
|
3
|
+
$('a.response[data-formily-iframe-url]').each(function() {
|
|
4
|
+
$(this).text($(this).text().replace(/\s*(\d{10,})\s*/, function myFunction(x, p1){
|
|
5
|
+
return strftime(' %Y/%m/%d %H:%M %Z ', new Date(p1*1000));
|
|
6
|
+
}));
|
|
7
|
+
});
|
|
8
|
+
|
|
9
|
+
});
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
// required all js files for FormilyEditor functionality
|
|
2
|
+
// and initialization
|
|
3
|
+
|
|
4
|
+
//= require formily/formily_editor
|
|
5
|
+
//= require formily/editor/form_preview
|
|
6
|
+
//= require formily/formily_modal
|
|
7
|
+
|
|
8
|
+
$(document).ready(function(){
|
|
9
|
+
|
|
10
|
+
window.FormilyModal.initialize();
|
|
11
|
+
window.FormilyEditor.initialize();
|
|
12
|
+
$(document).trigger('formily_form_updated');
|
|
13
|
+
|
|
14
|
+
$(document).foundation();
|
|
15
|
+
|
|
16
|
+
$(document).on('formily_update_tr', function (e, data) {
|
|
17
|
+
|
|
18
|
+
if(Object.keys(data).length == 0) {
|
|
19
|
+
data = window.FormilyModal.data;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
var table_id = data.model_id + '_' + data.user_id;
|
|
23
|
+
var table = $('[data-formily-form-table=' + table_id + ']');
|
|
24
|
+
var tr = table.find('tr[data-formily-form-id=' + data.form_id + ']');
|
|
25
|
+
|
|
26
|
+
$.ajax({
|
|
27
|
+
url: '/formily/forms/reload_formily_table',
|
|
28
|
+
type: 'POST',
|
|
29
|
+
data: data,
|
|
30
|
+
success: function(data){
|
|
31
|
+
|
|
32
|
+
if(tr.length > 0){
|
|
33
|
+
tr.replaceWith(data);
|
|
34
|
+
} else {
|
|
35
|
+
table.append(data);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
$(document).on('click', 'td button[data-formily-src]', function(){
|
|
43
|
+
window.location = $(this).data('formily-src');
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
});
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
var changeOrder = function (elem) {
|
|
2
|
+
var input_id, input_order;
|
|
3
|
+
input_id = elem.find('fieldset:first [name$=id]:first').val();
|
|
4
|
+
input_order = elem.find('fieldset:first [name$=field_order]:first').val();
|
|
5
|
+
|
|
6
|
+
$.ajax({
|
|
7
|
+
url: FormilyRoutes.input_update_path(input_id),
|
|
8
|
+
data: {field_order: input_order},
|
|
9
|
+
type: 'PUT'
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
$(document).ready(function(){
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
$(document).on('click', 'a[data-formily], button[data-formily]', function(e){
|
|
19
|
+
|
|
20
|
+
var self, btnType, element, container, formilyModal;
|
|
21
|
+
|
|
22
|
+
self = $(this);
|
|
23
|
+
btnType = self.data('formily');
|
|
24
|
+
element = self.parents('.ff-input-container:first');
|
|
25
|
+
container = element.parents('li:first');
|
|
26
|
+
formilyModal = $('#formily_modal');
|
|
27
|
+
|
|
28
|
+
window.InputModel.clear();
|
|
29
|
+
window.InputModel.getFromFieldset(element.find('fieldset:first'));
|
|
30
|
+
|
|
31
|
+
switch(btnType){
|
|
32
|
+
|
|
33
|
+
case 'add_input':
|
|
34
|
+
window.InputModel.clear();
|
|
35
|
+
window.InputModel.type = 'Formily::TextInput';
|
|
36
|
+
window.FormilyEditor.dialogType = 'input';
|
|
37
|
+
window.FormilyEditor.actionType = 'add';
|
|
38
|
+
window.InputModel.field_order = $('ul#formily_sortable_inputs>li').length + 1;
|
|
39
|
+
|
|
40
|
+
formilyModal.dialog('option', 'title', 'Add New Input');
|
|
41
|
+
formilyModal.dialog('open');
|
|
42
|
+
break;
|
|
43
|
+
|
|
44
|
+
case 'edit_input':
|
|
45
|
+
window.FormilyEditor.dialogType = 'input';
|
|
46
|
+
window.FormilyEditor.actionType = 'edit';
|
|
47
|
+
window.FormilyEditor.element = element;
|
|
48
|
+
|
|
49
|
+
formilyModal.dialog('option', 'title', 'Edit Input');
|
|
50
|
+
formilyModal.dialog('open');
|
|
51
|
+
break;
|
|
52
|
+
|
|
53
|
+
case 'add_group_input':
|
|
54
|
+
window.InputModel.clear();
|
|
55
|
+
window.FormilyEditor.dialogType = 'group';
|
|
56
|
+
window.FormilyEditor.actionType = 'add';
|
|
57
|
+
window.InputModel.type = self.data('group');
|
|
58
|
+
|
|
59
|
+
window.InputModel.group_input_id = self.parents('li:first').find('.ff-input-container fieldset:first input[name$=id]').val();
|
|
60
|
+
window.InputModel.field_order = self.parents('li:first').find('ul.ff-inputs-group-list>li').length + 1;
|
|
61
|
+
|
|
62
|
+
window.FormilyEditor.element = self.parent().find('.ff-inputs-group-list');
|
|
63
|
+
|
|
64
|
+
formilyModal.dialog('option', 'title', 'Add New Group Input');
|
|
65
|
+
formilyModal.dialog('open');
|
|
66
|
+
break;
|
|
67
|
+
|
|
68
|
+
case 'edit_group_input':
|
|
69
|
+
window.FormilyEditor.dialogType = 'group';
|
|
70
|
+
window.FormilyEditor.actionType = 'edit';
|
|
71
|
+
window.FormilyEditor.element = element;
|
|
72
|
+
|
|
73
|
+
formilyModal.dialog('open');
|
|
74
|
+
break;
|
|
75
|
+
|
|
76
|
+
case 'up':
|
|
77
|
+
var el1 = container;
|
|
78
|
+
var el2, update_all;
|
|
79
|
+
|
|
80
|
+
el2 = el1.prev();
|
|
81
|
+
|
|
82
|
+
if(el2.length == 0) {
|
|
83
|
+
el2 = el1.parent().children('li:last');
|
|
84
|
+
el2.after(el1);
|
|
85
|
+
//TODO: need update all fields
|
|
86
|
+
update_all = true;
|
|
87
|
+
} else {
|
|
88
|
+
el1.after(el2);
|
|
89
|
+
update_all = false;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
if(el1.parents('li').length > 0) {
|
|
93
|
+
window.FormilyEditor.inputsGroupUpdate(el1.parents('.ff-inputs-group-list'));
|
|
94
|
+
} else {
|
|
95
|
+
window.FormilyEditor.inputsUpdate();
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
if(update_all) {
|
|
99
|
+
el1.parent().find('li').each(function(_, elem){
|
|
100
|
+
changeOrder($(elem).find('.ff-input-container:first'));
|
|
101
|
+
});
|
|
102
|
+
}else{
|
|
103
|
+
changeOrder(el1);
|
|
104
|
+
changeOrder(el2);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
$(document).trigger('formily_form_updated');
|
|
108
|
+
break;
|
|
109
|
+
|
|
110
|
+
case 'down':
|
|
111
|
+
var el1 = container;
|
|
112
|
+
var el2 ;
|
|
113
|
+
|
|
114
|
+
el2 = el1.next();
|
|
115
|
+
|
|
116
|
+
if(el2.length == 0) {
|
|
117
|
+
el2 = el1.parent().children('li:first');
|
|
118
|
+
el2.before(el1);
|
|
119
|
+
update_all = true;
|
|
120
|
+
} else {
|
|
121
|
+
el1.before(el2);
|
|
122
|
+
update_all = false;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
if(el1.parents('li').length > 0) {
|
|
126
|
+
window.FormilyEditor.inputsGroupUpdate(el1.parents('.ff-inputs-group-list'));
|
|
127
|
+
} else {
|
|
128
|
+
window.FormilyEditor.inputsUpdate();
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
if(update_all) {
|
|
132
|
+
el1.parent().find('li').each(function(_, elem){
|
|
133
|
+
changeOrder($(elem).find('.ff-input-container:first'));
|
|
134
|
+
});
|
|
135
|
+
}else{
|
|
136
|
+
changeOrder(el1);
|
|
137
|
+
changeOrder(el2);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
$(document).trigger('formily_form_updated');
|
|
141
|
+
break;
|
|
142
|
+
|
|
143
|
+
case 'delete':
|
|
144
|
+
// Delete input
|
|
145
|
+
container.hide(300, function(){
|
|
146
|
+
if(confirm('Delete input ?')){
|
|
147
|
+
var elem = container.parents('ul.ff-inputs-group-list');
|
|
148
|
+
var parent = container.parents('ul:first');
|
|
149
|
+
|
|
150
|
+
container.remove();
|
|
151
|
+
|
|
152
|
+
if(elem.length > 0) {
|
|
153
|
+
window.FormilyEditor.inputsGroupUpdate(elem);
|
|
154
|
+
} else {
|
|
155
|
+
window.FormilyEditor.inputsUpdate();
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
if(window.InputModel.id && window.InputModel.id > 0) {
|
|
159
|
+
$.ajax({
|
|
160
|
+
url: FormilyRoutes.input_delete_path(InputModel.id),
|
|
161
|
+
type: 'DELETE',
|
|
162
|
+
success: function(){
|
|
163
|
+
parent.children('li').each(function(_, elem){
|
|
164
|
+
changeOrder($(elem).find('.ff-input-container:first'));
|
|
165
|
+
});
|
|
166
|
+
$(document).trigger('formily_form_updated');
|
|
167
|
+
}
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
} else {
|
|
172
|
+
container.show(0);
|
|
173
|
+
}
|
|
174
|
+
});
|
|
175
|
+
|
|
176
|
+
break;
|
|
177
|
+
|
|
178
|
+
default:
|
|
179
|
+
console.warn('Wrong formily data attr');
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
return false;
|
|
183
|
+
});
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+
});
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
$(document).ready(function(){
|
|
2
|
+
|
|
3
|
+
var timeOutVar;
|
|
4
|
+
|
|
5
|
+
$(document).on('keyup change', '.form_preview', function(e){
|
|
6
|
+
clearTimeout(timeOutVar);
|
|
7
|
+
timeOutVar = setTimeout(function(){
|
|
8
|
+
var val, name, form, url, data;
|
|
9
|
+
var self = $(e.target);
|
|
10
|
+
form = self.parents('form');
|
|
11
|
+
url = form.attr('action');
|
|
12
|
+
val = self.val();
|
|
13
|
+
name = self.attr('name');
|
|
14
|
+
data = {};
|
|
15
|
+
data[name] = val;
|
|
16
|
+
|
|
17
|
+
$.ajax({
|
|
18
|
+
url: url,
|
|
19
|
+
data: data,
|
|
20
|
+
type: 'PUT',
|
|
21
|
+
success: function(data){
|
|
22
|
+
form.attr('action', url.replace(/\d+$/, data.id));
|
|
23
|
+
form.find('input[name="formily_form[id]"]').val(data.id);
|
|
24
|
+
$(document).trigger('formily_form_updated');
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
}, 500);
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
$(document).on('formily_form_updated', function(){
|
|
32
|
+
|
|
33
|
+
var form = $('.ff-container form:first');
|
|
34
|
+
|
|
35
|
+
if (form.length > 0) {
|
|
36
|
+
var data = {};
|
|
37
|
+
data['formily_form[id]'] = form.attr('action').match(/\d+$/)[0];
|
|
38
|
+
|
|
39
|
+
if(form.length > 0){
|
|
40
|
+
$.post(FormilyRoutes.form_preview_path(), data)
|
|
41
|
+
.success(function(data){
|
|
42
|
+
$('#formily_form_preview').html(data);
|
|
43
|
+
$(document).trigger('formily_loaded');
|
|
44
|
+
$(document).foundation();
|
|
45
|
+
})
|
|
46
|
+
.fail(function() {
|
|
47
|
+
console.warn('Error, wrong form data !');
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
});
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
(function() {
|
|
2
|
+
|
|
3
|
+
var InputModel = function(){
|
|
4
|
+
|
|
5
|
+
this.id = 0;
|
|
6
|
+
this.name = '';
|
|
7
|
+
this.type = '';
|
|
8
|
+
this.label = '';
|
|
9
|
+
this.description = '';
|
|
10
|
+
this.field_order = '';
|
|
11
|
+
this.default_value = '';
|
|
12
|
+
this.tag_attributes = '';
|
|
13
|
+
|
|
14
|
+
this.setValue = function(prop_name, value){
|
|
15
|
+
if(this[prop_name] != undefined) {
|
|
16
|
+
|
|
17
|
+
this[prop_name] = value;
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
this.getBaseObj = function(){
|
|
22
|
+
return {
|
|
23
|
+
id: this.id,
|
|
24
|
+
name: this.name,
|
|
25
|
+
type: this.type,
|
|
26
|
+
label: this.label,
|
|
27
|
+
description: this.description,
|
|
28
|
+
field_order: this.field_order,
|
|
29
|
+
default_value: this.default_value,
|
|
30
|
+
tag_attributes: this.tag_attributes
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
this.getFromFieldset = function(fieldset){
|
|
35
|
+
var self = this;
|
|
36
|
+
fieldset.serializeArray().forEach(function(el){
|
|
37
|
+
var name = el.name.replace(/inputs\[\](group_inputs\[\])?/i, '');
|
|
38
|
+
self[name] = el.value;
|
|
39
|
+
});
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
this.getTagAttr = function(){
|
|
43
|
+
try{
|
|
44
|
+
return JSON.parse(this.tag_attributes);
|
|
45
|
+
}catch(e){
|
|
46
|
+
return {};
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
this.setTagAttr = function(name, data){
|
|
51
|
+
var obj = this.getTagAttr();
|
|
52
|
+
obj[name] = data;
|
|
53
|
+
this.tag_attributes = JSON.stringify(obj);
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
this.delTagAttr = function(attr){
|
|
57
|
+
var obj = this.getTagAttr();
|
|
58
|
+
delete(obj[attr]);
|
|
59
|
+
this.tag_attributes = JSON.stringify(obj);
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
this.clear = function(){
|
|
63
|
+
this.id = 0;
|
|
64
|
+
this.name = '';
|
|
65
|
+
this.type = '';
|
|
66
|
+
this.label = '';
|
|
67
|
+
this.description = '';
|
|
68
|
+
this.field_order = '';
|
|
69
|
+
this.default_value = '';
|
|
70
|
+
this.tag_attributes = '';
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
window.InputModel = new InputModel();
|
|
76
|
+
})();
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
$(document).ready(function() {
|
|
2
|
+
|
|
3
|
+
// Show/hide section
|
|
4
|
+
$(document).on('change', 'select[data-ff-name="type"]', function(){
|
|
5
|
+
|
|
6
|
+
var self = $(this);
|
|
7
|
+
var parent = self.parents('section:first');
|
|
8
|
+
|
|
9
|
+
parent.find('section').hide(0);
|
|
10
|
+
parent.find('section[data-formily="' + self.val() + '"]').show(0);
|
|
11
|
+
|
|
12
|
+
// Set model option
|
|
13
|
+
window.InputModel.type = self.val();
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
// For text box & textarea
|
|
17
|
+
$(document).on('keyup keypress', 'input[data-ff-name], textarea[data-ff-name]', function(){
|
|
18
|
+
var self = $(this);
|
|
19
|
+
|
|
20
|
+
if(self.data('ffName') == 'tag_attributes') {
|
|
21
|
+
if(self.val() == '') {
|
|
22
|
+
window.InputModel.delTagAttr(self.data('ffSname'));
|
|
23
|
+
} else {
|
|
24
|
+
window.InputModel.setTagAttr(self.data('ffSname'), self.val());
|
|
25
|
+
}
|
|
26
|
+
} else {
|
|
27
|
+
window.InputModel.setValue(self.data('ffName'), self.val());
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
// For checkbox
|
|
32
|
+
$(document).on('change', 'input[type=checkbox][data-ff-name]', function(){
|
|
33
|
+
var self = $(this);
|
|
34
|
+
|
|
35
|
+
if(self.data('ffName') == 'tag_attributes') {
|
|
36
|
+
if(self.get(0).checked) {
|
|
37
|
+
window.InputModel.setTagAttr(self.data('ffSname'), self.val());
|
|
38
|
+
} else {
|
|
39
|
+
window.InputModel.delTagAttr(self.data('ffSname'));
|
|
40
|
+
}
|
|
41
|
+
} else {
|
|
42
|
+
if(self.get(0).checked) {
|
|
43
|
+
window.InputModel.setValue(self.data('ffName'), self.val());
|
|
44
|
+
} else {
|
|
45
|
+
window.InputModel.setValue(self.data('ffName'), '');
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
$(document).on('change', 'select[data-ff-name]', function(){
|
|
51
|
+
var self = $(this);
|
|
52
|
+
|
|
53
|
+
if(self.data('ffName') == 'tag_attributes') {
|
|
54
|
+
window.InputModel.setTagAttr(self.data('ffSname'), self.val());
|
|
55
|
+
} else {
|
|
56
|
+
window.InputModel.setValue(self.data('ffName'), self.val());
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
var def_input = $('section input[type="text"][data-ff-name="default_value"]');
|
|
60
|
+
var tag = self.parents('section:first').find('ul.related_value_tag');
|
|
61
|
+
|
|
62
|
+
if(self.val() == 'custom_value') {
|
|
63
|
+
def_input.show(0);
|
|
64
|
+
def_input.val('');
|
|
65
|
+
def_input.focus();
|
|
66
|
+
if (tag.length > 0) {
|
|
67
|
+
tag.hide(0);
|
|
68
|
+
tag.tagit('removeAll');
|
|
69
|
+
}
|
|
70
|
+
} else if (self.val() == 'related_value') {
|
|
71
|
+
tag.show(0);
|
|
72
|
+
def_input.hide(0);
|
|
73
|
+
} else {
|
|
74
|
+
def_input.hide(0);
|
|
75
|
+
if (tag.length > 0) {
|
|
76
|
+
tag.hide(0);
|
|
77
|
+
tag.tagit('removeAll');
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
});
|