formily 0.0.5.5.7

Sign up to get free protection for your applications and to get access to all the features.
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,11 @@
1
+ -attrs = {}
2
+ - attrs['data-location'] = 'location' if input.default_value == 'device_location'
3
+ - attrs['data-location'] = 'address' if input.default_value == 'device_location_address'
4
+
5
+ %p.static-text{attrs}
6
+ - if input.default_value.present?
7
+ = value = input.get_default_value('', self)
8
+ %input{type: :hidden, name: "formily_inputs[#{input.id}]", value: value}
9
+
10
+ - else
11
+ = input.description.html_safe
@@ -0,0 +1,19 @@
1
+ - attrs = {name: "formily_inputs[#{input.id}]", id: "text_#{input.id}"}
2
+ - attrs['data-location'] = 'location' if input.default_value == 'device_location'
3
+ - attrs['data-location'] = 'address' if input.default_value == 'device_location_address'
4
+ - attrs['disabled'] = 'disabled' if @submit.is_complete?
5
+
6
+ - value = input.get_value_from_submit(@submit, self)
7
+ - value = nil if @submit.id.to_i == 0 && input.default_value.present?
8
+
9
+ - unless input.is_deleted? && value.nil?
10
+ .row.formily-input
11
+ .columns.large-12.clearfix
12
+
13
+ %label.left{for: "text_#{input.id}"}= input.label
14
+  
15
+
16
+ - if input.description.present?
17
+ %span.has-tip.tip-bottom{'data-tooltip'=> '', 'aria-haspopup'=> true, title: input.description}  ? 
18
+
19
+ %input{input.render_attributes_hash, attrs, value: value}
@@ -0,0 +1,19 @@
1
+ - value = input.get_value_from_submit(@submit, self)
2
+
3
+ - attrs = {name: "formily_inputs[#{input.id}]", id: "textarea_#{input.id}"}
4
+ - attrs['data-location'] = 'location' if value == 'device_location'
5
+ - attrs['data-location'] = 'address' if input.default_value == 'device_location_address'
6
+ - attrs['disabled'] = 'disabled' if @submit.is_complete?
7
+
8
+ - unless input.is_deleted? && value.nil?
9
+ .row.formily-input
10
+ .columns.large-12.clearfix
11
+
12
+ %label.left{for: "textarea_#{input.id}"}= input.label
13
+  
14
+
15
+ - if input.description.present?
16
+ %span.has-tip.tip-bottom{'data-tooltip'=> '', 'aria-haspopup'=>true, title: input.description}  ? 
17
+
18
+ %textarea{input.render_attributes_hash, attrs}
19
+ = value.to_s.sub(/\s*\z/, '')
@@ -0,0 +1,5 @@
1
+ <script>
2
+ if(window.parent.FormilyModal != undefined) {
3
+ window.parent.FormilyModal.close();
4
+ }
5
+ </script>
@@ -0,0 +1,5 @@
1
+ json.save_and_close @save_and_close
2
+ json.form_id @form_id
3
+ json.resource_id @resource_id
4
+ json.resource_type @resource_type
5
+ json.user_id @user_id
@@ -0,0 +1,16 @@
1
+ !!!
2
+ %html
3
+ %head
4
+ %meta{:content => 'text/html; charset=UTF-8', 'http-equiv' => 'Content-Type'}/
5
+ %meta{name: 'viewport', content: 'width=device-width, initial-scale=1.0'}/
6
+ %title Formily
7
+ = stylesheet_link_tag 'formily_iframe', media: 'all'
8
+ = javascript_include_tag 'formily_iframe'
9
+ = csrf_meta_tags
10
+ %body.formily
11
+ .wrapper
12
+ .header
13
+ = yield :block_in_header
14
+ %a.close-iframe-btn{:href => '#'} &#x2715;
15
+ .row
16
+ = yield
@@ -0,0 +1,41 @@
1
+ # coding: utf-8
2
+ Rails.application.routes.draw do
3
+
4
+ namespace :formily do
5
+
6
+ resources :form_types
7
+
8
+ resources :forms do
9
+ collection do
10
+ post 'add_new_response', action: :add_new_response, as: :add_new_response
11
+ post 'preview/form', action: :preview
12
+ post 'reload_formily_table', action: :reload_formily_table
13
+ end
14
+ end
15
+
16
+ resources :formilyable, only: [:create, :destroy, :new]
17
+
18
+ resources :inputs, only: [:destroy, :create, :update] do
19
+ collection do
20
+ post 'render_input_html', action: :render_input_html
21
+ get 'render_related', action: :render_related
22
+ end
23
+ end
24
+
25
+ resources :submit_data, only: [] do
26
+ collection do
27
+ post 'submit', action: :submit
28
+ post 'upload_file', action: :upload_file
29
+ end
30
+ end
31
+
32
+ resources :file, only: [:destroy]
33
+
34
+ namespace :iframe do
35
+ get 'forms/:id', to: 'forms#show',
36
+ as: :form
37
+ end
38
+
39
+ end
40
+
41
+ end
@@ -0,0 +1,41 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'formily/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = 'formily'
8
+ spec.version = Formily::VERSION
9
+ spec.authors = ['Alex']
10
+ spec.email = ['rormercury@gmail.com']
11
+
12
+ spec.required_ruby_version = '>= 2.0'
13
+
14
+ # if spec.respond_to?(:metadata)
15
+ # spec.metadata['allowed_push_host'] = "Set to 'http://mygemserver.com' to prevent pushes to rubygems.org, or delete to allow pushes to any server."
16
+ # end
17
+
18
+ spec.summary = %q{Write a short summary, because Rubygems requires one.}
19
+ spec.description = %q{Write a longer description or delete this line.}
20
+ spec.homepage = 'https://bitbucket.org/akturatech/form-builder'
21
+ spec.license = 'MIT'
22
+
23
+ spec.files = Dir['{lib,config,app}/**/*', '[A-Z]*']
24
+ spec.require_path = 'lib'
25
+
26
+ spec.bindir = 'exe'
27
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
28
+
29
+ spec.add_development_dependency 'bundler', '~> 1.8'
30
+ spec.add_development_dependency 'rake', '~> 10.0'
31
+
32
+ spec.add_dependency 'rails', '~> 4.0'
33
+ spec.add_dependency 'paperclip', '~> 4.0'
34
+ spec.add_dependency 'paper_trail', '~> 6.0.2', '>= 6.0.2'
35
+ spec.add_dependency 'sass-rails', '~> 5.0'
36
+ spec.add_dependency 'jquery-rails', '~> 4.0'
37
+ spec.add_dependency 'jquery-ui-rails', '~> 5.0'
38
+ spec.add_dependency 'haml', '~> 4.0'
39
+ spec.add_dependency 'browser', '~> 2.2'
40
+
41
+ end
@@ -0,0 +1,37 @@
1
+ # coding: utf-8
2
+ require 'formily/version'
3
+ require 'formily/config'
4
+ require 'formily/helpers/view_helper'
5
+ require 'formily/engine'
6
+ require 'formily/relation/formily_methods'
7
+ require 'formily/relation/has_many_methods'
8
+ require 'formily/relation'
9
+
10
+ require 'paperclip'
11
+ require 'paper_trail'
12
+ require 'jquery-rails'
13
+ require 'jquery-ui-rails'
14
+ require 'haml'
15
+ require 'browser'
16
+
17
+
18
+ module Formily
19
+
20
+ # Get Formily gem config
21
+ # @return [Formily::Config]
22
+ def self.config
23
+ @@config ||= Formily::Config.new
24
+ end
25
+
26
+ def self.formily_models
27
+ @@formily_models
28
+ end
29
+
30
+ def self.set_formily_models(model)
31
+ @@formily_models ||= []
32
+ @@formily_models << model
33
+ end
34
+
35
+ end
36
+
37
+ ActiveRecord::Base.send :include, Formily::Relation
@@ -0,0 +1,72 @@
1
+ # coding: utf-8
2
+ module Formily
3
+ # Formily gem settings
4
+ class Config
5
+
6
+ def initialize
7
+ @editor = Formily::EditorConfig.new
8
+ @paperclip = Formily::PaperclipConfig.new
9
+ end
10
+
11
+ # @return [Formily::EditorConfig]
12
+ def editor
13
+ @editor
14
+ end
15
+
16
+ # @return [Formily::PaperclipConfig]
17
+ def paperclip
18
+ @paperclip
19
+ end
20
+
21
+ # Set variable in do-end block
22
+ # @example
23
+ # tmp.setup do |config|
24
+ # ...
25
+ # end
26
+ def setup
27
+ yield self
28
+ end
29
+
30
+ end
31
+
32
+
33
+ # Formily Form HTML editor config
34
+ class EditorConfig
35
+
36
+ # HTML form editor height (pixel)
37
+ attr_accessor :height
38
+ # HTML form editor width (pixel)
39
+ attr_accessor :width
40
+
41
+ def initialize
42
+ @height = 500
43
+ @width = 720
44
+ end
45
+
46
+ end
47
+
48
+ # Paperclip gem config
49
+ class PaperclipConfig
50
+
51
+ # The full URL of where the attachment is publicly accessible.
52
+ attr_accessor :url
53
+
54
+ # The files that are assigned as attachments are, by default, placed in the directory specified by this option.
55
+ attr_accessor :path
56
+
57
+ # The URL that will be returned if there is no attachment assigned.
58
+ # attr_accessor :default_url
59
+
60
+ #
61
+ attr_accessor :use_timestamp
62
+
63
+ def initialize
64
+ @path = ':rails_root/public/formily_file/:id/:style_:basename.:extension'
65
+ @url = '/formily_file/:id/:style_:basename.:extension'
66
+ # @default_url = ''
67
+ @use_timestamp = false
68
+ end
69
+
70
+ end
71
+
72
+ end
@@ -0,0 +1,12 @@
1
+ # coding: utf-8
2
+ module Formily
3
+ class Engine < Rails::Engine
4
+
5
+ initializer 'formily.helpers' do
6
+ ActiveSupport.on_load :action_view do
7
+ ActionView::Base.send :include, Formily::Helpers::ViewHelper
8
+ end
9
+ end
10
+
11
+ end
12
+ end
@@ -0,0 +1,114 @@
1
+ # encoding: utf-8
2
+ module Formily
3
+ module Helpers
4
+ module ViewHelper
5
+
6
+ # # Create html table from submitted data
7
+ # # @param obj [ActiveRecord::Base]
8
+ # def formily_form_data_table(obj)
9
+ # if obj.is_many_formily?
10
+ # if obj.formily_forms.present?
11
+ # ids = obj.formily_forms.pluck(:form_id)
12
+ # forms = Formily::Form.where(id: ids)
13
+ # render({partial: formily_partial_path('data/many_tables'), :locals => {:@forms => forms, :@res => obj}})
14
+ # end
15
+ # else
16
+ # if obj.formily_form.present?
17
+ # form = obj.formily_form.form
18
+ # render({partial: formily_partial_path('data/table'), :locals => {:@form => form, :@res => obj}})
19
+ # end
20
+ # end
21
+ # end
22
+ #
23
+ # def formily_form_list(obj)
24
+ # if obj.is_many_formily?
25
+ # if obj.formily_forms.present?
26
+ # ids = obj.formily_forms.pluck(:form_id)
27
+ # forms = Formily::Form.where(id: ids)
28
+ # render({partial: formily_partial_path('data/forms_table'), :locals => {:@forms => forms, :@res => obj}})
29
+ # end
30
+ # else
31
+ # if obj.formily_form.present?
32
+ # end
33
+ # end
34
+ # end
35
+ #
36
+ # # Connect formily form to object
37
+ # # @param obj [ActiveRecord::Base]
38
+ # # @param formily_form_id [Integer]
39
+ # def connect_to_formily_url(obj, formily_form_id)
40
+ # formily_forms_connect_form_path({form_id: formily_form_id, model_name: obj.class.to_s, model_id: obj.id})
41
+ # end
42
+ #
43
+
44
+ def show_formily_form_link_tag(form_id, obj, submit_id = 0, user_id = 0, btn_text = 'Connect', html_attrs = {})
45
+
46
+ url_options = {
47
+ id: form_id,
48
+ model_id: obj.id,
49
+ model_name: obj.class.name,
50
+ submit_id: submit_id,
51
+ user_id: user_id
52
+ }
53
+
54
+ html_attrs['data-formily-iframe-url'] = formily_iframe_form_path(url_options)
55
+
56
+ attr_str = html_attrs.map{|k, v| "#{k}=\"#{v}\""}.join(' ')
57
+
58
+ ('<a ' + attr_str + ' >' + btn_text + '</a>').html_safe
59
+ end
60
+
61
+ def connect_form_btn_tag(obj, user_id, btn_text = 'Connect', html_attrs = {})
62
+
63
+ html_attrs['data-formily-iframe-url'] = formily_form_iframe_url(obj, user_id, '/new')
64
+
65
+ attr_str = html_attrs.map{|k, v| "#{k}=\"#{v}\""}.join(' ')
66
+
67
+ ('<button ' + attr_str + ' >' + btn_text + '</button>').html_safe
68
+
69
+ end
70
+
71
+ # Render <iframe> in popup
72
+ def formily_modal_tag
73
+ render({partial: 'formily/helpers/iframe_formily_modal'})
74
+ end
75
+
76
+ # Generate iframe url
77
+ # @param obj [ActiveRecord::Base]
78
+ # @return [String]
79
+ def formily_form_iframe_url(obj, user_id, url = '')
80
+ url = '/formily/formilyable' + url + '?'
81
+ url += 'iframe=true'
82
+ url += '&user_id=' + user_id.to_s
83
+ url += '&model_id=' + obj.id.to_s
84
+ url + '&model_name=' + obj.class.to_s
85
+ end
86
+
87
+ #
88
+ #
89
+ # def formily_form_tag(object, html_attrs = {})
90
+ # if object.is_many_formily?
91
+ # if object.formily_forms.present?
92
+ # ids = object.formily_forms.pluck(:form_id)
93
+ # forms = Formily::Form.where(id: ids)
94
+ # render({partial: 'formily/many_forms', :locals => {:@forms => forms, :@obj_rel => object}})
95
+ # end
96
+ # else
97
+ # if object.formily_form.present?
98
+ # form = object.formily_form.form
99
+ # render({partial: 'formily/form', :locals => {:@form => form, :@obj_rel => object}})
100
+ # end
101
+ # end
102
+ # end
103
+
104
+ def formily_related_form_for(title, obj, user_id, flag = false)
105
+ render({partial: 'formily/helpers/related_forms', locals: {title: title, flag: flag, obj_rel: obj, user_id: user_id}})
106
+ end
107
+
108
+ # def formily_partial_path(path)
109
+ # "formily/#{path}"
110
+ # end
111
+
112
+ end
113
+ end
114
+ end
@@ -0,0 +1,26 @@
1
+ # coding: utf-8
2
+ module Formily
3
+ module Relation
4
+ extend ActiveSupport::Concern
5
+
6
+ module ClassMethods
7
+
8
+ def formily_form_related_model
9
+ @@formily_form_related_model
10
+ end
11
+
12
+ def has_many_formily_forms(related_model)
13
+ self.has_many(:many_formily_forms, as: :formilyable, class_name: 'Formily::FormilyableForm')
14
+ @@formily_form_related_model = related_model
15
+ # include helper methods
16
+ self.send(:include, Formily::Relation::FormilyMethods)
17
+ self.send(:include, Formily::Relation::HasManyMethods)
18
+
19
+ Formily.set_formily_models(self)
20
+ # add callback
21
+ self.send(:after_create, :formily_after_create)
22
+ end
23
+
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,30 @@
1
+ # coding: utf-8
2
+ module Formily
3
+ module Relation
4
+ module FormilyMethods
5
+
6
+ def is_formily?
7
+ true
8
+ end
9
+
10
+ def has_formily_form?(id)
11
+
12
+
13
+
14
+ end
15
+
16
+ def formily_title
17
+ self.to_s
18
+ end
19
+
20
+ protected
21
+ def formily_after_create
22
+ # p '*'*100
23
+ # p 'Formily created'
24
+ # p self
25
+ # p '*'*100
26
+ end
27
+
28
+ end
29
+ end
30
+ end