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