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,76 @@
1
+ //=require formily/lib/tag-it.min
2
+ window.formilyRelatedTags = [];
3
+
4
+ $(document).on('ready formily_loaded', function(){
5
+
6
+ $('.related_value_tag').each(function(_, element){
7
+ var self = $(element);
8
+ var input = self.parent().find('input.related[data-ff-related]');
9
+
10
+ self.tagit({
11
+ fieldName: '',
12
+ singleFieldNode: input.get(0),
13
+ showAutocompleteOnFocus: true,
14
+ singleField: true,
15
+ singleFieldDelimiter: '.',
16
+ autocomplete:
17
+ {
18
+ delay: 0,
19
+ minLength: 0,
20
+ source: function(request, response) {
21
+
22
+ var value = this.element.parent().find('input[type=hidden]').val();
23
+
24
+ if(value && value.length > 0) {
25
+ value= value.split('.')
26
+ }
27
+
28
+ $.ajax({
29
+ url: '/formily/inputs/render_related',
30
+ data: {related_arr: value},
31
+ type: 'GET',
32
+ success: function(data){
33
+ window.formilyRelatedTags = [];
34
+
35
+ if (data && data.length > 0) {
36
+ data.forEach(function(el, _) { window.formilyRelatedTags.push(el.label)});
37
+ response(data);
38
+ }
39
+
40
+ }
41
+ });
42
+ }
43
+ },
44
+ removeConfirmation: true,
45
+ beforeTagAdded: function(event, ui) {
46
+
47
+ if(ui.tag.hasClass('fake')) {
48
+ return true;
49
+ }
50
+
51
+ if (window.formilyRelatedTags.indexOf(ui.tagLabel) < 0) {
52
+ return false;
53
+ }
54
+ },
55
+ beforeTagRemoved: function(event, ui) {
56
+ var tag = ui.tag;
57
+ var parent = tag.parents('ul:first');
58
+
59
+ tag = tag.next();
60
+
61
+ if(tag && tag.hasClass('tagit-choice')) {
62
+ var label = tag.find('span.tagit-label').text();
63
+ $(parent).tagit('removeTagByLabel', label);
64
+ }
65
+
66
+ }
67
+ });
68
+
69
+
70
+ });
71
+
72
+ $(document).on('change', 'input.related[data-ff-related]', function(){
73
+ window.InputModel.setTagAttr('data-related', $(this).val());
74
+ });
75
+
76
+ });
@@ -0,0 +1,22 @@
1
+ // Formily form functional files
2
+
3
+ //= require formily/base/buttons
4
+ //= require formily/base/ajax_reloader
5
+
6
+ // Formily inputs
7
+ //= require formily/inputs/date_time
8
+ //= require formily/inputs/conditioned
9
+ //= require formily/inputs/multi_file
10
+ //= require formily/inputs/location
11
+ //= require formily/inputs/input_tab
12
+
13
+ // Mobile Popup Keyboard Type FIX
14
+ $(document).on('ready formily_loaded', function() {
15
+
16
+ if (!FormilyMobile.any()) {
17
+ $('input[type=email], input[type=number]').each(function () {
18
+ $(this).attr('type', 'text');
19
+ });
20
+ }
21
+
22
+ });
@@ -0,0 +1,329 @@
1
+ //=require formily/editor/input_model
2
+ //=require formily/editor/input_on_change
3
+ //=require formily/editor/editor_buttons
4
+ //=require formily/editor/related_fields
5
+
6
+ (function() {
7
+ var FormilyEditor = function(){
8
+
9
+ var sortableInputsList, sortableGroup, formilyModal;
10
+
11
+ this.styleCss = 'foundation';
12
+
13
+ this.options = {};
14
+ this.content = null;
15
+
16
+ this.dialogType = 'input';
17
+ this.actionType = 'add';
18
+ this.element = null;
19
+
20
+ // Input object
21
+ this.inputModel = window.InputModel;
22
+
23
+ // For sortable placeholder
24
+ var placeholdeElement = function(currentItem) {
25
+ var plh = $('<li></li>');
26
+ plh.css('height', currentItem.css('height'));
27
+ plh.css('margin', currentItem.css('margin'));
28
+ plh.css('border', '1px dotted #000000');
29
+ return plh.get(0);
30
+ };
31
+
32
+ this.setSortable = function(){
33
+ sortableInputsList = $('#formily_sortable_inputs');
34
+ };
35
+
36
+ this.inputsUpdate = function(){
37
+ // Change index for all inputs
38
+ sortableInputsList.children().each(function(index){
39
+ var self = $(this);
40
+ self.find('[name="inputs[]field_order"]:first').val(index + 1);
41
+
42
+ var id_el = $(this).find('span[data-id]:first');
43
+ id_el.text(index + 1);
44
+ id_el.attr('data-id', index + 1);
45
+ });
46
+ };
47
+
48
+ this.inputsGroupUpdate = function(target){
49
+ var self, id_el;
50
+ target.children().each(function(index){
51
+ self = $(this);
52
+ self.find('[name="inputs[]group_inputs[]field_order"]:first').val(index + 1);
53
+ id_el = self.find('span[data-id]');
54
+ id_el.text(index + 1);
55
+ id_el.attr('data-id', index + 1);
56
+ });
57
+ };
58
+
59
+ this.getHtmlTemplate = function(){
60
+ var list, callbackFun;
61
+ var d = window.InputModel.getBaseObj();
62
+
63
+ if(window.FormilyEditor.dialogType == 'group') {
64
+ list = window.FormilyEditor.element;
65
+ callbackFun = window.FormilyEditor.inputsGroupUpdate;
66
+ d.group_input = true;
67
+ d.group_input_id = window.InputModel.group_input_id;
68
+ } else {
69
+ list = sortableInputsList;
70
+ callbackFun = window.FormilyEditor.inputsUpdate;
71
+ }
72
+
73
+ //create
74
+ delete(d.id);
75
+ d.form_id = $('input[type="hidden"][name="formily_form[id]"]').val();
76
+ $.post(window.FormilyRoutes.input_create_path(), d)
77
+ .success(function(data){
78
+ d.id = data.id;
79
+ $.post('/formily/inputs/render_input_html', d)
80
+ .done(function(data){
81
+ list.append(data);
82
+ callbackFun(list);
83
+ });
84
+ });
85
+ };
86
+
87
+ this.clearDialog = function(modal){
88
+ // Clean all fields
89
+ modal.find('[data-ff-name][type=text]').val('');
90
+ modal.find('textarea[data-ff-name]').val('');
91
+ modal.find('[data-ff-name][type=checkbox]').removeAttr('checked');
92
+ modal.find('select[data-ff-name] option').removeAttr('selected');
93
+ modal.find('section[data-formily="Formily::TextInput"] input[type="text"][data-ff-name="default_value"]').hide(0);
94
+ modal.find('ul.related_value_tag').css('display', 'none');
95
+ var tags = modal.find('ul.related_value_tag');
96
+ tags.tagit('removeAll');
97
+ window.FormilyEditor.options = {};
98
+ };
99
+
100
+ // Event on dialog show
101
+ this.onDialogShow = function(event, ui){
102
+
103
+ var model = window.InputModel.getBaseObj();
104
+
105
+ formilyModal.find('section').hide(0);
106
+ formilyModal.find('section[data-formily="' + window.FormilyEditor.dialogType + '"]').show(0);
107
+ var section = formilyModal.find('section[data-formily="' + model.type + '"]');
108
+ section.show(0);
109
+
110
+ if(window.FormilyEditor.dialogType == 'input') {
111
+ var select = formilyModal.find('select[data-ff-name=type]');
112
+
113
+ if(select.length > 0){
114
+ select.find('option').removeAttr('selected');
115
+ var option = select.find("option[value='" + model.type + "']");
116
+
117
+ if(option.length > 0) {option.get(0).selected = true;}
118
+
119
+ if(window.FormilyEditor.actionType == 'edit'){
120
+ select.attr('disabled', 'disabled')
121
+ } else {
122
+ select.removeAttr('disabled')
123
+ }
124
+ }
125
+ } else {
126
+ section = formilyModal.find('section[data-formily="' + window.FormilyEditor.dialogType + '"]');
127
+ section.show(0);
128
+ section = section.find('section[data-formily="' + model.type + '"]');
129
+ section.show(0);
130
+ }
131
+
132
+ // Initialize text box value
133
+ section.find('input[data-ff-name], textarea[data-ff-name]').not('[type=checkbox]').each(function(_, elem){
134
+ var self = $(elem);
135
+ self.val(model[self.data('ffName')])
136
+ });
137
+
138
+ section.find('select[data-ff-name]').each(function(_, elem){
139
+ var self = $(elem);
140
+
141
+ if(self.data('ffName') != 'type') {
142
+ self.find('option').removeAttr('selected');
143
+
144
+ if (self.data('ffName') == 'tag_attributes') {
145
+ var option = self.find("option[value='" + window.InputModel.getTagAttr()[self.data('ffSname')] + "']");
146
+ if(option.length > 0) {option.get(0).selected = true;}
147
+ } else {
148
+ var option = self.find("option[value='" + model[self.data('ffName')] + "']");
149
+ var input = self.parent().find('input[type=text][data-ff-name=default_value]:first');
150
+ if(option.length > 0) {
151
+ option.get(0).selected = true;
152
+ input.hide(0);
153
+ }
154
+
155
+ if(window.InputModel.default_value == 'custom_value') {
156
+ input.show(0);
157
+ }
158
+
159
+ if(window.InputModel.default_value == 'related_value') {
160
+ var tag = self.parents('section:first').find('ul.related_value_tag');
161
+ tag.show();
162
+
163
+ var tagRelated = window.InputModel.getTagAttr()['data-related'];
164
+
165
+ if(tagRelated && tagRelated.length > 0) {
166
+ var tagArr = tagRelated.split('.');
167
+
168
+ tagArr.forEach(function(item){
169
+ tag.tagit('createTag', item.toString(), 'fake');
170
+ });
171
+ }
172
+ }
173
+
174
+ if(self.data('ffName') == 'default_value' && option.length == 0) {
175
+ // Custom value
176
+ input.show(0);
177
+ input.val(window.InputModel.default_value);
178
+ option = self.find('option[value=custom_value]');
179
+ if(option.length > 0) {option.get(0).selected = true;}
180
+ }
181
+ }
182
+
183
+ }
184
+
185
+ });
186
+
187
+ section.find('input[type=checkbox][data-ff-name]').each(function(_, elem){
188
+ var self = $(elem);
189
+
190
+ if(self.data('ffName') != 'type') {
191
+ if (self.data('ffName') == 'tag_attributes') {
192
+
193
+ if(window.InputModel.getTagAttr()[self.data('ffSname')] != undefined) {
194
+ self.get(0).checked = true;
195
+ } else {
196
+ self.get(0).checked = false;
197
+ }
198
+
199
+ } else {
200
+ if(window.InputModel[self.data('ffName')].toString().length > 0) {
201
+ self.get(0).checked = true;
202
+ } else {
203
+ self.get(0).checked = false;
204
+ }
205
+ }
206
+ }
207
+
208
+ });
209
+
210
+ };
211
+
212
+ this.buttonOkClick = function(){
213
+
214
+ var model = window.InputModel.getBaseObj();
215
+
216
+ if(model.name == '' && model.label == '' && model.type != 'Formily::StaticText') {
217
+
218
+ alert("Name can't be blank !");
219
+
220
+ } else {
221
+
222
+ if(model.name == '') {
223
+ model.name = model.label;
224
+ window.InputModel.name = model.label;
225
+ }
226
+
227
+ if(window.FormilyEditor.actionType == 'edit'){
228
+
229
+ var elem = window.FormilyEditor.element;
230
+ var d = window.InputModel.getBaseObj();
231
+
232
+ $.ajax({
233
+ url: FormilyRoutes.input_update_path(d.id),
234
+ data: d,
235
+ type: 'PUT'
236
+ });
237
+
238
+ elem.find('fieldset:first').find('input').each(function () {
239
+ $(this).val(model[$(this).attr('name').replace(/inputs\[\](group_inputs\[\])?/i, '')]);
240
+ });
241
+
242
+ elem.find('.ff-input-data-container span[data-input="name"] i:first').text(model.name);
243
+ elem.find('.ff-input-data-container span[data-input="description"] i:first').text(model.description);
244
+ elem.find('.ff-input-data-container span[data-input="label"] i:first').text(model.label);
245
+
246
+ } else {
247
+ if(window.FormilyEditor.dialogType == 'input') {
248
+ sortableInputsList.append(window.FormilyEditor.getHtmlTemplate());
249
+ } else {
250
+ window.FormilyEditor.element.append(window.FormilyEditor.getHtmlTemplate());
251
+ }
252
+
253
+ }
254
+
255
+ setTimeout(function(){$(document).trigger('formily_form_updated');}, 1000);
256
+
257
+ $(this).dialog("close");
258
+ }
259
+
260
+ };
261
+
262
+ this.buttonCloseClick = function(){
263
+ $(this).dialog("close");
264
+ };
265
+
266
+ this.setModal = function(){
267
+
268
+ // Create modal dialog
269
+ formilyModal = $("#formily_modal").dialog({
270
+ autoOpen: false,
271
+ title: 'Modal',
272
+ resizable: false,
273
+ draggable: false,
274
+ height: 700,
275
+ width: 600,
276
+ create: function(event, ui) {
277
+ var dialog = $(event.target).parents('.ui-dialog');
278
+
279
+ dialog.addClass('formily-ui');
280
+
281
+ if(window.FormilyEditor.styleCss === 'foundation') {
282
+ //fix button style
283
+ dialog.find('.ui-dialog-buttonpane button.ui-button').attr('class', 'button');
284
+ dialog.find('.ui-dialog-buttonset').attr('class', '')
285
+ }
286
+
287
+ },
288
+ close: function(event, ui) {
289
+ window.FormilyEditor.clearDialog($(this));
290
+ },
291
+ show: {
292
+ effect: "size",
293
+ duration: 400
294
+ },
295
+ hide: {
296
+ effect: "size",
297
+ duration: 400
298
+ },
299
+ open: window.FormilyEditor.onDialogShow,
300
+ buttons: [
301
+ {
302
+ text: "Ok",
303
+ click: window.FormilyEditor.buttonOkClick
304
+ },
305
+ {
306
+ text: "Close",
307
+ click: window.FormilyEditor.buttonCloseClick
308
+ }
309
+ ]
310
+ });
311
+
312
+ // JQuery UI fix
313
+ $(document).on('mouseover mousedown', 'button', function() {
314
+ $(this).removeClass("ui-state-hover");
315
+ $(this).removeClass("ui-state-active");
316
+ $(this).blur();
317
+ $(this).off('focus');
318
+ });
319
+ };
320
+
321
+ this.initialize = function() {
322
+ this.setSortable();
323
+ this.setModal();
324
+ };
325
+ };
326
+
327
+ window.FormilyEditor = new FormilyEditor();
328
+
329
+ })();
@@ -0,0 +1,104 @@
1
+ // Formily modal window
2
+ (function() {
3
+
4
+ var FormilyModal = function(){
5
+
6
+ var modalContainer, modalIframe;
7
+ this.callback = null;
8
+ this.src = '';
9
+ this.data = {};
10
+ this.dataTable = null;
11
+
12
+ this.show = function(src){
13
+ this.src = modalIframe.attr('src', src);
14
+ modalContainer.show();
15
+ };
16
+
17
+ this.close = function(trigger){
18
+ if (trigger && trigger.length > 0) {
19
+ this.data.resource_type = this.data.model_name;
20
+ this.data.resource_id = this.data.model_id;
21
+
22
+ $(document).trigger(trigger, this.data);
23
+ }
24
+ if(modalContainer) {
25
+ $(modalIframe.get(0).contentDocument.body).html('<div class="formily-loading">Loading ...</div>');
26
+ modalContainer.hide();
27
+ }
28
+ };
29
+
30
+ this.runCallback = function(){
31
+ this.callback(this);
32
+ };
33
+
34
+ this.initialize = function(){
35
+
36
+ $(document).on('click', '[data-formily-iframe-url]', function() {
37
+
38
+ var self = $(this);
39
+ var arr = self.data('formilyIframeUrl').replace(/.*?\?/i,'').split('&');
40
+ var m = self.data('formilyIframeUrl').match(/\/(\d+)/);
41
+
42
+ if(m) {
43
+ window.FormilyModal.data.form_id = m[1];
44
+ }
45
+ delete(window.FormilyModal.data.all);
46
+ var tmp = null;
47
+
48
+ arr.forEach(function(el){
49
+ tmp = el.split('=');
50
+ window.FormilyModal.data[tmp[0]] = tmp[1]
51
+ });
52
+
53
+ if(window.FormilyMobile.any()){
54
+ window.open(self.data('formilyIframeUrl'));
55
+ return false;
56
+ }
57
+
58
+ modalContainer = $('#formily_modal_container');
59
+ modalIframe = modalContainer.find('#formily_iframe_modal iframe');
60
+
61
+ modalContainer.show();
62
+ modalIframe.attr('src', self.data('formilyIframeUrl'));
63
+
64
+ var h = 500, w = 620;
65
+
66
+ var div = modalIframe.parent();
67
+
68
+ if (window.FormilyMobile.any()) {
69
+ } else {
70
+ div.css('height', h);
71
+ div.css('width', w);
72
+ div.css('margin-top', -(h/2));
73
+ div.css('margin-left', -(w/2));
74
+ }
75
+
76
+ return false;
77
+ });
78
+
79
+ $(document).on('click', 'a.close-iframe-btn, #formily_modal_container', function(){
80
+
81
+ if(window.parent.FormilyModal != undefined && window.top != window.parent){
82
+
83
+ if(isFormilyFileUploaded()){
84
+ window.parent.FormilyModal.close(false);
85
+ }
86
+
87
+ } else {
88
+ if(modalIframe.get(0).contentWindow.isFormilyFileUploaded()){
89
+ window.FormilyModal.close(false);
90
+ }
91
+ }
92
+
93
+ return false;
94
+ });
95
+
96
+ };
97
+
98
+ };
99
+
100
+ if(typeof(window.FormilyModal) === 'undefined') {
101
+ window.FormilyModal = new FormilyModal();
102
+ }
103
+
104
+ })();