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,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