the-admin 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.DS_Store +0 -0
- data/.gitignore +25 -0
- data/.rspec +2 -0
- data/Gemfile +8 -0
- data/LICENSE.txt +13 -0
- data/README.md +50 -0
- data/Rakefile +20 -0
- data/lib/the-admin.rb +139 -0
- data/lib/the-admin/form.rb +1401 -0
- data/lib/the-admin/layout.rb +179 -0
- data/lib/the-admin/version.rb +3 -0
- data/spec/layout_spec.rb +19 -0
- data/spec/spec_helper.rb +16 -0
- data/the-admin.gemspec +28 -0
- metadata +130 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 7604eb9ddc4a5f9034a7a3949fb743fede534aa0
|
4
|
+
data.tar.gz: b6c46ee7fab6b067eb0e0930417f2a9fe408c4dc
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: be203b590ba70b476c0d3598322b529b8b48e9fb5412a3ed3be18503171f14c7b04093104e02772b621e9a311379858016fe367c43c5b151561fdda919e06d7c
|
7
|
+
data.tar.gz: 418790d96e636e33e4c4f3a80482d859116d3173a7a98c254eeb2fa7cc7b92fb3028f620d6648f4e3252795f646dca10e156b5032467634294d44634455a0255
|
data/.DS_Store
ADDED
Binary file
|
data/.gitignore
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
*.gem
|
2
|
+
*.rbc
|
3
|
+
.bundle
|
4
|
+
.config
|
5
|
+
.yardoc
|
6
|
+
Gemfile.lock
|
7
|
+
InstalledFiles
|
8
|
+
_yardoc
|
9
|
+
coverage
|
10
|
+
doc/
|
11
|
+
lib/bundler/man
|
12
|
+
pkg
|
13
|
+
rdoc
|
14
|
+
spec/reports
|
15
|
+
test/tmp
|
16
|
+
test/version_tmp
|
17
|
+
tmp
|
18
|
+
*.bundle
|
19
|
+
*.so
|
20
|
+
*.o
|
21
|
+
*.a
|
22
|
+
mkmf.log
|
23
|
+
|
24
|
+
.ruby-version
|
25
|
+
.ruby-gemset
|
data/.rspec
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
Copyright (c) 2018 timmushen
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Use by Permission only
|
6
|
+
|
7
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
8
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
9
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
10
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
11
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
12
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
13
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
# The Admin
|
2
|
+
|
3
|
+
TODO: Write a gem description
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
Add this line to your application's Gemfile:
|
8
|
+
|
9
|
+
gem 'the-admin'
|
10
|
+
|
11
|
+
And then execute:
|
12
|
+
|
13
|
+
$ bundle
|
14
|
+
|
15
|
+
Or install it yourself as:
|
16
|
+
|
17
|
+
$ gem install the-admin
|
18
|
+
|
19
|
+
## Usage
|
20
|
+
|
21
|
+
To use in Sinatra add
|
22
|
+
|
23
|
+
require 'the-admin'
|
24
|
+
|
25
|
+
## Configuration
|
26
|
+
|
27
|
+
the-admin.configuration do |config|
|
28
|
+
config.bugsnag_api_key = "string"
|
29
|
+
end
|
30
|
+
|
31
|
+
## Documentation
|
32
|
+
|
33
|
+
The gem is documented with YARD. You can run yard documentation using its inbuilt
|
34
|
+
server. Following git clone...
|
35
|
+
|
36
|
+
~# cd the-admin-gem
|
37
|
+
~# bundle install
|
38
|
+
~# yard server --reload
|
39
|
+
|
40
|
+
and visit localhost:8808.
|
41
|
+
|
42
|
+
If you prefer to compile it to html (ex: to host)..
|
43
|
+
|
44
|
+
~# yard
|
45
|
+
|
46
|
+
For more information visit [yardoc website](http://yardoc.org/) or use...
|
47
|
+
|
48
|
+
~# yard --help
|
49
|
+
|
50
|
+
## Contributing
|
data/Rakefile
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'rspec/core/rake_task'
|
2
|
+
require "bundler/gem_tasks"
|
3
|
+
|
4
|
+
desc "Check into repo, build & install"
|
5
|
+
task :gbuild do
|
6
|
+
# Your code goes here
|
7
|
+
puts `git add -Av`
|
8
|
+
puts `git commit -m 'updated gem'`
|
9
|
+
puts `rake build`
|
10
|
+
puts `git push origin master`
|
11
|
+
puts `rake install`
|
12
|
+
end
|
13
|
+
|
14
|
+
# Default directory to look in is `/specs`
|
15
|
+
# Run with `rake spec`
|
16
|
+
RSpec::Core::RakeTask.new(:spec) do |task|
|
17
|
+
# task.rspec_opts = ['--color', '--format']
|
18
|
+
end
|
19
|
+
|
20
|
+
task :default => :spec
|
data/lib/the-admin.rb
ADDED
@@ -0,0 +1,139 @@
|
|
1
|
+
# TheAdmin - gems
|
2
|
+
require "the-admin/version"
|
3
|
+
require "the-admin/form"
|
4
|
+
require "the-admin/layout"
|
5
|
+
|
6
|
+
# 3rd party gems
|
7
|
+
require "sinatra/base"
|
8
|
+
require "sinatra/contrib/all"
|
9
|
+
require "digest"
|
10
|
+
require "base64"
|
11
|
+
require "json"
|
12
|
+
|
13
|
+
|
14
|
+
module TheAdmin
|
15
|
+
|
16
|
+
class << self
|
17
|
+
# Controls the app configuration
|
18
|
+
# @return [TheAdmin::Configuration] configuration object
|
19
|
+
attr_accessor :configuration
|
20
|
+
end
|
21
|
+
|
22
|
+
# Configure the TheAdmin gem
|
23
|
+
#
|
24
|
+
# @example
|
25
|
+
# TheAdmin.confgure do |config|
|
26
|
+
# config.bugsnag_api_key = "XYZ"
|
27
|
+
#
|
28
|
+
# config.mail_from = "John Doe"
|
29
|
+
# config.mail_address = "johndoe@example.com"
|
30
|
+
# config.mail_port = "578"
|
31
|
+
# config.mail_domain = "smtp.mailgun.org"
|
32
|
+
# config.mail_user_name = ""
|
33
|
+
# config.mail_password = ""
|
34
|
+
# config.mail_authentication = "plain"
|
35
|
+
#
|
36
|
+
# config.aws_bucket = ""
|
37
|
+
# config.aws_access_key_id = ""
|
38
|
+
# config.aws_secret_access_key = ""
|
39
|
+
# config.aws_region = ""
|
40
|
+
# end
|
41
|
+
def self.configure
|
42
|
+
self.configuration ||= Configuration.new
|
43
|
+
yield(configuration)
|
44
|
+
end
|
45
|
+
|
46
|
+
#
|
47
|
+
# TheAdmin configuration class.
|
48
|
+
#
|
49
|
+
# @author Tim Mushen
|
50
|
+
#
|
51
|
+
class Configuration
|
52
|
+
|
53
|
+
# Controls the bugsnag api key attribute
|
54
|
+
# @return [String] Bugsnag api key
|
55
|
+
# attr_accessor :bugsnag_api_key
|
56
|
+
|
57
|
+
# Controls the mail from
|
58
|
+
# @return [String] the mail from
|
59
|
+
attr_accessor :mail_from
|
60
|
+
|
61
|
+
# Controls the mail address
|
62
|
+
# @return [String] the mail address
|
63
|
+
attr_accessor :mail_address
|
64
|
+
|
65
|
+
# Controls the mail port number
|
66
|
+
# @return [String] the mail port number
|
67
|
+
attr_accessor :mail_port
|
68
|
+
|
69
|
+
# Controls the mail domain
|
70
|
+
# @return [String] the mail domain
|
71
|
+
attr_accessor :mail_domain
|
72
|
+
|
73
|
+
# Controls the mail user name
|
74
|
+
# @return [String] the mail user name
|
75
|
+
attr_accessor :mail_user_name
|
76
|
+
|
77
|
+
# Controls the mail password
|
78
|
+
# @return [String] the mail password
|
79
|
+
attr_accessor :mail_password
|
80
|
+
|
81
|
+
# Controls mail authentication
|
82
|
+
# @return [String] mail authentication
|
83
|
+
attr_accessor :mail_authentication
|
84
|
+
|
85
|
+
# Controls the aws bucket name
|
86
|
+
# @return [String] aws bucket name
|
87
|
+
attr_accessor :aws_bucket
|
88
|
+
|
89
|
+
# Controls the aws access key id
|
90
|
+
# @return [String] the aws access key id
|
91
|
+
attr_accessor :aws_access_key_id
|
92
|
+
|
93
|
+
# Controls the aws secret access key
|
94
|
+
# @return [String] the aws secret access key
|
95
|
+
attr_accessor :aws_secret_access_key
|
96
|
+
|
97
|
+
# Controls the aws region
|
98
|
+
# @return [String] aws region
|
99
|
+
attr_accessor :aws_region
|
100
|
+
|
101
|
+
# Initialize TheAdmin configuration object and set defaults
|
102
|
+
def initialize
|
103
|
+
# Bugsnag
|
104
|
+
# @bugsnag_api_key = ""
|
105
|
+
|
106
|
+
# X_mail
|
107
|
+
@mail_from = ""
|
108
|
+
@mail_address = "smtp.mailgun.org"
|
109
|
+
@mail_port = "587"
|
110
|
+
@mail_domain = "smtp.mailgun.org"
|
111
|
+
@mail_user_name = ""
|
112
|
+
@mail_password = ""
|
113
|
+
@mail_authentication = "plain"
|
114
|
+
|
115
|
+
# For AWS/Fog
|
116
|
+
@aws_bucket = ""
|
117
|
+
@aws_secret_access_key = ""
|
118
|
+
@aws_access_key_id = ""
|
119
|
+
@aws_region = ""
|
120
|
+
end
|
121
|
+
|
122
|
+
end
|
123
|
+
|
124
|
+
|
125
|
+
# TheAdmin - Sinatra module
|
126
|
+
module Sinatra
|
127
|
+
|
128
|
+
def self.registered(app)
|
129
|
+
|
130
|
+
app.helpers TheAdmin::FormHelpers
|
131
|
+
app.helpers TheAdmin::LayoutHelpers
|
132
|
+
|
133
|
+
end
|
134
|
+
|
135
|
+
end # End Sinatra
|
136
|
+
end
|
137
|
+
|
138
|
+
#Register Helpers
|
139
|
+
Sinatra.register TheAdmin::Sinatra
|
@@ -0,0 +1,1401 @@
|
|
1
|
+
module TheAdmin
|
2
|
+
module FormHelpers
|
3
|
+
|
4
|
+
# View helper to generate check box
|
5
|
+
# @param id [String] the checkbox id attribute
|
6
|
+
# @param name [String] the checkbox name attribute
|
7
|
+
# @param value [String] the checkbox value
|
8
|
+
# @param label [String] the checkbox label
|
9
|
+
# @param checked [Boolean] if the checkbox is checked
|
10
|
+
# @param switch [Boolean] if the checkbox is a switch
|
11
|
+
# @param align [String] if the alignment should be left or right
|
12
|
+
# @param inline [Boolean] if the element is inline
|
13
|
+
# @param form_group [Boolean] if a form group
|
14
|
+
# @param required [Boolean] if required or not
|
15
|
+
# @return [String] Compiled html checkbox
|
16
|
+
def x_checkbox(id: "", name: "", value: "", label: "", checked: false, switch: false, align: false, inline: false, form_group: true, required: false)
|
17
|
+
|
18
|
+
checked_output = ""
|
19
|
+
switchery_div = ""
|
20
|
+
switchery_input = ""
|
21
|
+
align_class = ""
|
22
|
+
inline_class = ""
|
23
|
+
form_group_start = ""
|
24
|
+
form_group_end = ""
|
25
|
+
required_output = ""
|
26
|
+
|
27
|
+
if checked == true then checked_output='checked="checked"' end
|
28
|
+
if switch == true then switchery_div='checkbox-switchery' end
|
29
|
+
if switch == true then switchery_input='switch' end
|
30
|
+
if align == "left" then align_class='pull-left' end
|
31
|
+
if align == "right" then align_class='pull-right' end
|
32
|
+
if inline == true then inline_class ='inline' end
|
33
|
+
if form_group == true then form_group_start = '<div class="form-group">' end
|
34
|
+
if form_group == true then form_group_end = '</div>' end
|
35
|
+
if required == true then required_output = "data-parsley-mincheck='1'" end
|
36
|
+
|
37
|
+
cb = <<EOS
|
38
|
+
#{form_group_start}
|
39
|
+
<div class="checkbox #{switchery_div}">
|
40
|
+
<label class="#{align_class} #{inline_class}">
|
41
|
+
<input type="hidden" id="#{id}" name="post[#{name}]" value="0">
|
42
|
+
<input type="checkbox" class="#{switchery_input}" id="#{id}" name="post[#{name}]" value="1" #{checked_output} data-toggle="checkbox" #{required_output}/>
|
43
|
+
#{label} </label>
|
44
|
+
</div>
|
45
|
+
#{form_group_end}
|
46
|
+
EOS
|
47
|
+
return cb
|
48
|
+
end
|
49
|
+
|
50
|
+
# Check box helper
|
51
|
+
# @param id [String] the checkbox id
|
52
|
+
# @param name [String] the name attribute of the checkbox
|
53
|
+
# @param value [String] the checkbox value
|
54
|
+
# @param label [String] the label text of the checkbox
|
55
|
+
# @param checked [Boolean] if the checkbox is checked
|
56
|
+
# @param switch [Boolean] if the checkbox is a switchery input
|
57
|
+
# @param align [String] if the check box aligned 'left' or 'right'
|
58
|
+
# @param inline [Boolean] if the checkbox is inline or not
|
59
|
+
# @param form_group [Boolean] if the checkbox is of form group
|
60
|
+
# @param required [Boolean] if checkbox is required
|
61
|
+
# @return [String] the compiled checkbox
|
62
|
+
def x_checkbox_string(id: "", name: "", value: "", label: "", checked: false, switch: false, align: false, inline: false, form_group: true, required: false)
|
63
|
+
|
64
|
+
checked_output = ""
|
65
|
+
switchery_div = ""
|
66
|
+
switchery_input = ""
|
67
|
+
align_class = ""
|
68
|
+
inline_class = ""
|
69
|
+
form_group_start = ""
|
70
|
+
form_group_end = ""
|
71
|
+
required_output = ""
|
72
|
+
|
73
|
+
if checked == true then checked_output='checked="checked"' end
|
74
|
+
if switch == true then switchery_div='checkbox-switchery' end
|
75
|
+
if switch == true then switchery_input='switch' end
|
76
|
+
if align == "left" then align_class='pull-left' end
|
77
|
+
if align == "right" then align_class='pull-right' end
|
78
|
+
if inline == true then inline_class ='inline' end
|
79
|
+
if form_group == true then form_group_start = '<div class="form-group">' end
|
80
|
+
if form_group == true then form_group_end = '</div>' end
|
81
|
+
if required == true then required_output = "data-parsley-mincheck='1'" end
|
82
|
+
|
83
|
+
cb = <<EOS
|
84
|
+
#{form_group_start}
|
85
|
+
<div class="checkbox #{switchery_div}">
|
86
|
+
<label class="#{align_class} #{inline_class}">
|
87
|
+
<input type="checkbox" class="#{switchery_input}" id="#{id}" name="#{name}" value="#{value}" #{checked_output} data-toggle="checkbox" #{required_output}/>
|
88
|
+
#{label} </label>
|
89
|
+
</div>
|
90
|
+
#{form_group_end}
|
91
|
+
EOS
|
92
|
+
return cb
|
93
|
+
end
|
94
|
+
|
95
|
+
|
96
|
+
# Radio button view helper
|
97
|
+
# @param id [String] the radio id
|
98
|
+
# @param name [String] the name attribute of the radio
|
99
|
+
# @param value [String] the radio value
|
100
|
+
# @param label [String] the label text of the radio
|
101
|
+
# @param checked [Boolean] if the radio is checked
|
102
|
+
# @param align [String] if the check box aligned 'left' or 'right'
|
103
|
+
# @param inline [Boolean] if the radio is inline or not
|
104
|
+
# @param form_group [Boolean] if the radio is of form group
|
105
|
+
# @return [String] the compiled radio
|
106
|
+
def x_radio(id: "", name: "", value: "1", label: "", checked: false, checked_if: "", align: false, inline: false, include_false_as_hidden: false ,form_group: true)
|
107
|
+
|
108
|
+
checked_output = ""
|
109
|
+
align_class = ""
|
110
|
+
inline_class = ""
|
111
|
+
form_group_start = ""
|
112
|
+
form_group_end = ""
|
113
|
+
include_false_as_hidden_element = ""
|
114
|
+
|
115
|
+
if checked == checked_if then checked_output='checked="checked"' end
|
116
|
+
if checked_if != "" then checked = false end
|
117
|
+
if checked == true then checked_output='checked="checked"' end
|
118
|
+
if align == "left" then align_class='pull-left' end
|
119
|
+
if align == "right" then align_class='pull-right' end
|
120
|
+
if inline == true then inline_class ='inline' end
|
121
|
+
if form_group == true then form_group_start = '<div class="form-group">' end
|
122
|
+
if form_group == true then form_group_end = '</div>' end
|
123
|
+
if include_false_as_hidden == true then include_false_as_hidden_element = '<input type="hidden" id="#{id}" name="post[#{name}]" value="0">' end
|
124
|
+
radio_btn = <<EOS
|
125
|
+
#{form_group_start}
|
126
|
+
<div class="radio">
|
127
|
+
<label class="#{align_class} #{inline_class}">
|
128
|
+
#{include_false_as_hidden_element}
|
129
|
+
<input type="radio" id="#{id}" name="post[#{name}]" value="#{value}" #{checked_output} data-toggle="radio"/>
|
130
|
+
#{label}</label>
|
131
|
+
</div>
|
132
|
+
#{form_group_end}
|
133
|
+
EOS
|
134
|
+
return radio_btn
|
135
|
+
end
|
136
|
+
|
137
|
+
# Hidden input helper
|
138
|
+
# @param id [String] hidden input id
|
139
|
+
# @param name [String] hidden input name
|
140
|
+
# @param value [String] hidden input value
|
141
|
+
# @return [String] compiled hidden input html
|
142
|
+
def x_hidden(id: "", name: "", value: "")
|
143
|
+
|
144
|
+
hi = <<EOS
|
145
|
+
<input type="hidden" id="#{id}" name="post[#{name}]" value="#{value}"/>
|
146
|
+
EOS
|
147
|
+
return hi
|
148
|
+
end
|
149
|
+
|
150
|
+
|
151
|
+
# Text input helper
|
152
|
+
# @param id [String] input element id
|
153
|
+
# @param name [String] input element name
|
154
|
+
# @param value [String] input element value
|
155
|
+
# @param label [String] input element label
|
156
|
+
# @param required [Boolean] if input element is required
|
157
|
+
# @param placeholder [String] input element placeholder
|
158
|
+
# @param mask [String] input element mask
|
159
|
+
# @param maxlength [String] input element max length
|
160
|
+
# @return [String] compiled input element
|
161
|
+
def x_input(id: "", name: "", value: "", label: "", required: false, placeholder: "", mask: "", maxlength: "", css:"")
|
162
|
+
|
163
|
+
id = name unless id != ""
|
164
|
+
if required
|
165
|
+
if label != ""
|
166
|
+
required_output = '<sup class="text-danger">*</sup>'
|
167
|
+
else
|
168
|
+
required_output = ''
|
169
|
+
end
|
170
|
+
required_tag = 'required="required"'
|
171
|
+
else
|
172
|
+
required_output = ""
|
173
|
+
required_tag = ""
|
174
|
+
end
|
175
|
+
|
176
|
+
if label != ""
|
177
|
+
label = "<label>#{label}</label>"
|
178
|
+
end
|
179
|
+
|
180
|
+
if maxlength != ""
|
181
|
+
maxlength = "maxlength='#{maxlength}'"
|
182
|
+
end
|
183
|
+
|
184
|
+
if mask != ""
|
185
|
+
mask = "data-masked-input='#{mask}'"
|
186
|
+
end
|
187
|
+
|
188
|
+
tb = <<EOS
|
189
|
+
<div class="form-group">
|
190
|
+
#{label}#{required_output}
|
191
|
+
<input type="text" class="form-control #{css}" id="#{id}" name="post[#{name}]" value="#{value}" placeholder="#{placeholder}" #{required_tag} #{mask} #{maxlength} />
|
192
|
+
</div>
|
193
|
+
EOS
|
194
|
+
return tb
|
195
|
+
end
|
196
|
+
|
197
|
+
|
198
|
+
# Money input helper
|
199
|
+
# @param id [String] the money input id
|
200
|
+
# @param name [String] the money input name
|
201
|
+
# @param label [String] the money input label
|
202
|
+
# @param required [Boolean] if money input is required or not
|
203
|
+
# @param placeholder [String] the moeny input placeholder
|
204
|
+
# @param mask [String] the money input mask
|
205
|
+
# @param maxlength [String] max length of the input
|
206
|
+
# @return [String] compiled money input html
|
207
|
+
def x_money(id: "", name: "", value: "", label: "", required: false, placeholder: "", mask: "", maxlength: "")
|
208
|
+
|
209
|
+
id = name unless id != ""
|
210
|
+
if required
|
211
|
+
if label != ""
|
212
|
+
required_output = '<sup class="text-danger">*</sup>'
|
213
|
+
else
|
214
|
+
required_output = ''
|
215
|
+
end
|
216
|
+
required_tag = 'required="required"'
|
217
|
+
else
|
218
|
+
required_output = ""
|
219
|
+
required_tag = ""
|
220
|
+
end
|
221
|
+
|
222
|
+
if label != ""
|
223
|
+
label = "<label>#{label}</label>"
|
224
|
+
end
|
225
|
+
|
226
|
+
if maxlength != ""
|
227
|
+
maxlength = "maxlength='#{maxlength}'"
|
228
|
+
end
|
229
|
+
|
230
|
+
if mask != ""
|
231
|
+
mask = "data-masked-input='#{mask}'"
|
232
|
+
end
|
233
|
+
|
234
|
+
if value == 0 || value.nil? || value == ""
|
235
|
+
value = "0.00"
|
236
|
+
else
|
237
|
+
value = "%.2f" % value rescue nil
|
238
|
+
end
|
239
|
+
|
240
|
+
tb = <<EOS
|
241
|
+
<div class="form-group">
|
242
|
+
#{label}#{required_output}
|
243
|
+
<div class="input-group">
|
244
|
+
<span class="input-group-addon">$</span>
|
245
|
+
<input type="text" class="form-control money" id="#{id}" name="post[#{name}]" value="#{value}" placeholder="#{placeholder}" data-parsley-type="number" #{required_tag} #{mask} #{maxlength} />
|
246
|
+
</div>
|
247
|
+
</div>
|
248
|
+
EOS
|
249
|
+
return tb
|
250
|
+
end
|
251
|
+
|
252
|
+
# Percentage input helper
|
253
|
+
# @param id [String] percentage input id
|
254
|
+
# @param name [String] percentage input name
|
255
|
+
# @param value [String] percentage input value
|
256
|
+
# @param label [String] percentage input label
|
257
|
+
# @param required [Boolean] if percentage input is required
|
258
|
+
# @param placeholder [String] percentage input placeholder
|
259
|
+
# @param mask [String] percentage input mask
|
260
|
+
# @param maxlength [String] percentage input maxlength
|
261
|
+
def x_percentage(id: "", name: "", value: "", label: "", required: false, placeholder: "", mask: "", maxlength: "")
|
262
|
+
|
263
|
+
id = name unless id != ""
|
264
|
+
if required
|
265
|
+
if label != ""
|
266
|
+
required_output = '<sup class="text-danger">*</sup>'
|
267
|
+
else
|
268
|
+
required_output = ''
|
269
|
+
end
|
270
|
+
required_tag = 'required="required"'
|
271
|
+
else
|
272
|
+
required_output = ""
|
273
|
+
required_tag = ""
|
274
|
+
end
|
275
|
+
|
276
|
+
if label != ""
|
277
|
+
label = "<label>#{label}</label>"
|
278
|
+
end
|
279
|
+
|
280
|
+
if maxlength != ""
|
281
|
+
maxlength = "maxlength='#{maxlength}'"
|
282
|
+
end
|
283
|
+
|
284
|
+
if mask != ""
|
285
|
+
mask = "data-masked-input='#{mask}'"
|
286
|
+
end
|
287
|
+
|
288
|
+
tb = <<EOS
|
289
|
+
<div class="form-group">
|
290
|
+
#{label}#{required_output}
|
291
|
+
<div class="input-group">
|
292
|
+
<span class="input-group-addon">%</span>
|
293
|
+
<input type="text" class="form-control" id="#{id}" name="post[#{name}]" value="#{value}" placeholder="#{placeholder}" data-parsley-type="number" #{required_tag} #{mask} #{maxlength} />
|
294
|
+
</div>
|
295
|
+
</div>
|
296
|
+
EOS
|
297
|
+
return tb
|
298
|
+
end
|
299
|
+
|
300
|
+
# Sq Ft input helper
|
301
|
+
# @param id [String] percentage input id
|
302
|
+
# @param name [String] percentage input name
|
303
|
+
# @param value [String] percentage input value
|
304
|
+
# @param label [String] percentage input label
|
305
|
+
# @param required [Boolean] if percentage input is required
|
306
|
+
# @param placeholder [String] percentage input placeholder
|
307
|
+
# @param mask [String] percentage input mask
|
308
|
+
# @param maxlength [String] percentage input maxlength
|
309
|
+
def x_sqft(id: "", name: "", value: "", label: "", required: false, placeholder: "", mask: "", maxlength: "")
|
310
|
+
|
311
|
+
id = name unless id != ""
|
312
|
+
if required
|
313
|
+
if label != ""
|
314
|
+
required_output = '<sup class="text-danger">*</sup>'
|
315
|
+
else
|
316
|
+
required_output = ''
|
317
|
+
end
|
318
|
+
required_tag = 'required="required"'
|
319
|
+
else
|
320
|
+
required_output = ""
|
321
|
+
required_tag = ""
|
322
|
+
end
|
323
|
+
|
324
|
+
if label != ""
|
325
|
+
label = "<label>#{label}</label>"
|
326
|
+
end
|
327
|
+
|
328
|
+
if maxlength != ""
|
329
|
+
maxlength = "maxlength='#{maxlength}'"
|
330
|
+
end
|
331
|
+
|
332
|
+
if mask != ""
|
333
|
+
mask = "data-masked-input='#{mask}'"
|
334
|
+
end
|
335
|
+
|
336
|
+
tb = <<EOS
|
337
|
+
<div class="form-group">
|
338
|
+
#{label}#{required_output}
|
339
|
+
<div class="input-group">
|
340
|
+
<input type="text" class="form-control sq_ft" id="#{id}" name="post[#{name}]" value="#{value}" placeholder="#{placeholder}" data-parsley-type="number" #{required_tag} #{mask} #{maxlength} />
|
341
|
+
<span class="input-group-addon">sqft</span>
|
342
|
+
</div>
|
343
|
+
</div>
|
344
|
+
EOS
|
345
|
+
|
346
|
+
return tb
|
347
|
+
end
|
348
|
+
|
349
|
+
|
350
|
+
# Number input helper
|
351
|
+
# @param id [String] number input id
|
352
|
+
# @param name [String] number input name
|
353
|
+
# @param value [String] number input value
|
354
|
+
# @param label [String] number input label
|
355
|
+
# @param required [Boolean] if required or not
|
356
|
+
# @param placeholder [String] number input placeholder text
|
357
|
+
# @param mask [String] number input mask
|
358
|
+
# @param maxlength [String] nuber input max length
|
359
|
+
# @return [String] compiled html of number input
|
360
|
+
def x_number(id: "", name: "", value: "", label: "", required: false, placeholder: "", mask: "", maxlength: "")
|
361
|
+
|
362
|
+
if required
|
363
|
+
if label != ""
|
364
|
+
required_output = '<sup class="text-danger">*</sup>'
|
365
|
+
else
|
366
|
+
required_output = ''
|
367
|
+
end
|
368
|
+
required_tag = 'required="required"'
|
369
|
+
else
|
370
|
+
required_output = ""
|
371
|
+
required_tag = ""
|
372
|
+
end
|
373
|
+
|
374
|
+
if label != ""
|
375
|
+
label = "<label>#{label}#{required_output}</label>"
|
376
|
+
end
|
377
|
+
|
378
|
+
if maxlength != ""
|
379
|
+
maxlength = "maxlength='#{maxlength}'"
|
380
|
+
end
|
381
|
+
|
382
|
+
if mask != ""
|
383
|
+
mask = "data-masked-input='#{mask}'"
|
384
|
+
end
|
385
|
+
|
386
|
+
tb = <<EOS
|
387
|
+
<div class="form-group">
|
388
|
+
#{label}
|
389
|
+
<input type="text" class="form-control" id="#{id}" name="post[#{name}]" value="#{value}" #{required_tag} placeholder="#{placeholder}" data-parsley-type="number" #{mask} #{maxlength}/>
|
390
|
+
</div>
|
391
|
+
EOS
|
392
|
+
return tb
|
393
|
+
end
|
394
|
+
|
395
|
+
|
396
|
+
|
397
|
+
# Phone input helper
|
398
|
+
# @param id [String] phone input id
|
399
|
+
# @param name [String] phone input name
|
400
|
+
# @param value [String] phone input value
|
401
|
+
# @param label [String] phone input label
|
402
|
+
# @param required [Boolean] if required or not
|
403
|
+
# @param placeholder [String] phone input placeholder text
|
404
|
+
# @param mask [String] phone input mask
|
405
|
+
# @param maxlength [String] nuber input max length
|
406
|
+
# @return [String] compiled html of phone input
|
407
|
+
def x_phone(id: "", name: "", value: "", label: "", required: false, placeholder: "", mask: "(999) 999-9999 x99999", maxlength: "22")
|
408
|
+
|
409
|
+
if required
|
410
|
+
if label != ""
|
411
|
+
required_output = '<sup class="text-danger">*</sup>'
|
412
|
+
else
|
413
|
+
required_output = ''
|
414
|
+
end
|
415
|
+
required_tag = 'required="required"'
|
416
|
+
else
|
417
|
+
required_output = ""
|
418
|
+
required_tag = ""
|
419
|
+
end
|
420
|
+
|
421
|
+
if label != ""
|
422
|
+
label = "<label>#{label}#{required_output}</label>"
|
423
|
+
end
|
424
|
+
|
425
|
+
if mask != ""
|
426
|
+
mask = "data-masked-input='#{mask}'"
|
427
|
+
end
|
428
|
+
|
429
|
+
if maxlength != ""
|
430
|
+
maxlength = "maxlength='#{maxlength}'"
|
431
|
+
end
|
432
|
+
|
433
|
+
tb = <<EOS
|
434
|
+
<div class="form-group">
|
435
|
+
#{label}
|
436
|
+
<input type="text" class="form-control" id="#{id}" name="post[#{name}]" value="#{value}" #{required_tag} placeholder="#{placeholder}" #{mask} #{maxlength} />
|
437
|
+
</div>
|
438
|
+
EOS
|
439
|
+
return tb
|
440
|
+
end
|
441
|
+
|
442
|
+
|
443
|
+
# SSN input helper
|
444
|
+
# @param id [String] ssn input id
|
445
|
+
# @param name [String] ssn input name
|
446
|
+
# @param value [String] ssn input value
|
447
|
+
# @param label [String] ssn input label
|
448
|
+
# @param required [Boolean] if required or not
|
449
|
+
# @param placeholder [String] ssn input placeholder text
|
450
|
+
# @param mask [String] ssn input mask
|
451
|
+
# @param maxlength [String] nuber input max length
|
452
|
+
# @return [String] compiled html of ssn input
|
453
|
+
def x_ssn(id: "", name: "", value: "", label: "", required: false, placeholder: "", mask: "999-99-9999")
|
454
|
+
|
455
|
+
if required
|
456
|
+
if label != ""
|
457
|
+
required_output = '<sup class="text-danger">*</sup>'
|
458
|
+
else
|
459
|
+
required_output = ''
|
460
|
+
end
|
461
|
+
required_tag = 'required="required"'
|
462
|
+
else
|
463
|
+
required_output = ""
|
464
|
+
required_tag = ""
|
465
|
+
end
|
466
|
+
|
467
|
+
if label != ""
|
468
|
+
label = "<label>#{label}#{required_output}</label>"
|
469
|
+
end
|
470
|
+
|
471
|
+
if mask != ""
|
472
|
+
mask = "data-masked-input='#{mask}'"
|
473
|
+
end
|
474
|
+
|
475
|
+
|
476
|
+
tb = <<EOS
|
477
|
+
<div class="form-group">
|
478
|
+
#{label}
|
479
|
+
<input type="text" class="form-control ssn" id="#{id}" name="post[#{name}]" value="#{value}" #{required_tag} data-parsley-minlength="11" placeholder="#{placeholder}" #{mask} />
|
480
|
+
</div>
|
481
|
+
EOS
|
482
|
+
return tb
|
483
|
+
end
|
484
|
+
|
485
|
+
# EIN input helper
|
486
|
+
# @param id [String] ein input id
|
487
|
+
# @param name [String] ein input name
|
488
|
+
# @param value [String] ein input value
|
489
|
+
# @param label [String] ein input label
|
490
|
+
# @param required [Boolean] if required or not
|
491
|
+
# @param placeholder [String] ein input placeholder text
|
492
|
+
# @param mask [String] ein input mask
|
493
|
+
# @param maxlength [String] nuber input max length
|
494
|
+
# @return [String] compiled html of ein input
|
495
|
+
def x_ein(id: "", name: "", value: "", label: "", required: false, placeholder: "", mask: "99-9999999", maxlength: "10")
|
496
|
+
|
497
|
+
if required
|
498
|
+
if label != ""
|
499
|
+
required_output = '<sup class="text-danger">*</sup>'
|
500
|
+
else
|
501
|
+
required_output = ''
|
502
|
+
end
|
503
|
+
required_tag = 'required="required"'
|
504
|
+
else
|
505
|
+
required_output = ""
|
506
|
+
required_tag = ""
|
507
|
+
end
|
508
|
+
|
509
|
+
if label != ""
|
510
|
+
label = "<label>#{label}#{required_output}</label>"
|
511
|
+
end
|
512
|
+
|
513
|
+
if mask != ""
|
514
|
+
mask = "data-masked-input='#{mask}'"
|
515
|
+
end
|
516
|
+
|
517
|
+
if maxlength != ""
|
518
|
+
maxlength = "maxlength='#{maxlength}'"
|
519
|
+
end
|
520
|
+
|
521
|
+
tb = <<EOS
|
522
|
+
<div class="form-group">
|
523
|
+
#{label}
|
524
|
+
<input type="text" class="form-control ein" id="#{id}" name="post[#{name}]" value="#{value}" #{required_tag} data-parsley-minlength="10" placeholder="#{placeholder}" #{mask} #{maxlength} />
|
525
|
+
</div>
|
526
|
+
EOS
|
527
|
+
return tb
|
528
|
+
end
|
529
|
+
|
530
|
+
# Zip input helper
|
531
|
+
# @param id [String] zip input id
|
532
|
+
# @param name [String] zip input name
|
533
|
+
# @param value [String] zip input value
|
534
|
+
# @param label [String] zip input label
|
535
|
+
# @param required [Boolean] if required or not
|
536
|
+
# @param placeholder [String] zip input placeholder text
|
537
|
+
# @param mask [String] zip input mask
|
538
|
+
# @param maxlength [String] nuber input max length
|
539
|
+
# @return [String] compiled html of zip input
|
540
|
+
def x_zip(id: "", name: "", value: "", label: "", required: false, placeholder: "", mask: "99999", maxlength: "5")
|
541
|
+
|
542
|
+
if required
|
543
|
+
if label != ""
|
544
|
+
required_output = '<sup class="text-danger">*</sup>'
|
545
|
+
else
|
546
|
+
required_output = ''
|
547
|
+
end
|
548
|
+
required_tag = 'required="required"'
|
549
|
+
else
|
550
|
+
required_output = ""
|
551
|
+
required_tag = ""
|
552
|
+
end
|
553
|
+
|
554
|
+
if label != ""
|
555
|
+
label = "<label>#{label}#{required_output}</label>"
|
556
|
+
end
|
557
|
+
|
558
|
+
if mask != ""
|
559
|
+
mask = "data-masked-input='#{mask}'"
|
560
|
+
end
|
561
|
+
|
562
|
+
if maxlength != ""
|
563
|
+
maxlength = "maxlength='#{maxlength}'"
|
564
|
+
end
|
565
|
+
|
566
|
+
tb = <<EOS
|
567
|
+
<div class="form-group">
|
568
|
+
#{label}
|
569
|
+
<input type="text" class="form-control zip" id="#{id}" name="post[#{name}]" value="#{value}" #{required_tag} placeholder="#{placeholder}" #{mask} data-parsley-length="[5,5]" data-parsley-length-message="This value should be exactly 5 digits long" data-parsley-type="digits" />
|
570
|
+
</div>
|
571
|
+
EOS
|
572
|
+
return tb
|
573
|
+
end
|
574
|
+
|
575
|
+
# State input helper
|
576
|
+
# @param id [String] state input id
|
577
|
+
# @param name [String] state input name
|
578
|
+
# @param value [String] state input value
|
579
|
+
# @param label [String] state input label
|
580
|
+
# @param required [Boolean] if required or not
|
581
|
+
# @param placeholder [String] state input placeholder text
|
582
|
+
# @param mask [String] state input mask
|
583
|
+
# @param maxlength [String] nuber input max length
|
584
|
+
# @return [String] compiled html of state input
|
585
|
+
def x_state(id: "", name: "", value: "", label: "", required: false, placeholder: "", mask: "aa", maxlength: "2")
|
586
|
+
|
587
|
+
if required
|
588
|
+
if label != ""
|
589
|
+
required_output = '<sup class="text-danger">*</sup>'
|
590
|
+
else
|
591
|
+
required_output = ''
|
592
|
+
end
|
593
|
+
required_tag = 'required="required"'
|
594
|
+
else
|
595
|
+
required_output = ""
|
596
|
+
required_tag = ""
|
597
|
+
end
|
598
|
+
|
599
|
+
if label != ""
|
600
|
+
label = "<label>#{label}#{required_output}</label>"
|
601
|
+
end
|
602
|
+
|
603
|
+
if mask != ""
|
604
|
+
mask = "data-masked-input='#{mask}'"
|
605
|
+
end
|
606
|
+
|
607
|
+
if maxlength != ""
|
608
|
+
maxlength = "maxlength='#{maxlength}'"
|
609
|
+
end
|
610
|
+
|
611
|
+
tb = <<EOS
|
612
|
+
<div class="form-group">
|
613
|
+
#{label}
|
614
|
+
<input type="text" class="form-control state" id="#{id}" name="post[#{name}]" value="#{value}" #{required_tag} data-parsley-pattern="^[A-Za-z]*$" data-parsley-minlength="2" placeholder="#{placeholder}" #{maxlength} />
|
615
|
+
</div>
|
616
|
+
EOS
|
617
|
+
return tb
|
618
|
+
end
|
619
|
+
|
620
|
+
|
621
|
+
# Credit card input helper
|
622
|
+
# @param id [String] credit card input id
|
623
|
+
# @param name [String] credit card input name
|
624
|
+
# @param value [String] credit card input value
|
625
|
+
# @param label [String] credit card label
|
626
|
+
# @param required [Boolean] if required or not
|
627
|
+
# @param placeholder [String] credit card input placeholder text
|
628
|
+
# @param mask [String] credit card input mask
|
629
|
+
# @param maxlength [String] nuber input max length
|
630
|
+
# @return [String] compiled html of credit card input
|
631
|
+
def x_credit_card(id: "", name: "", value: "", label: "", required: false, placeholder: "", maxlength: "16", mask:"")
|
632
|
+
|
633
|
+
if required
|
634
|
+
if label != ""
|
635
|
+
required_output = '<sup class="text-danger">*</sup>'
|
636
|
+
else
|
637
|
+
required_output = ''
|
638
|
+
end
|
639
|
+
required_tag = 'required="required"'
|
640
|
+
else
|
641
|
+
required_output = ""
|
642
|
+
required_tag = ""
|
643
|
+
end
|
644
|
+
|
645
|
+
if label != ""
|
646
|
+
label = "<label>#{label}#{required_output} <small>(Numbers Only)</small></label>"
|
647
|
+
end
|
648
|
+
|
649
|
+
if mask != ""
|
650
|
+
mask = "data-masked-input='#{mask}'"
|
651
|
+
end
|
652
|
+
|
653
|
+
if maxlength != ""
|
654
|
+
maxlength = "maxlength='#{maxlength}'"
|
655
|
+
end
|
656
|
+
|
657
|
+
tb = <<EOS
|
658
|
+
<div class="form-group">
|
659
|
+
#{label}
|
660
|
+
<input type="number" pattern="[0-9]{13,16}" class="form-control" id="#{id}" name="post[#{name}]" value="#{value}" #{required_tag} data-parsley-type="integer" data-parsley-length="[13, 16]" placeholder="#{placeholder}" #{mask} #{maxlength} />
|
661
|
+
</div>
|
662
|
+
EOS
|
663
|
+
return tb
|
664
|
+
end
|
665
|
+
|
666
|
+
# CVC input helper
|
667
|
+
# @param id [String] cvc input id
|
668
|
+
# @param name [String] cvc input name
|
669
|
+
# @param value [String] cvc input value
|
670
|
+
# @param lable [String] cvc label
|
671
|
+
# @param required [Boolean] if required or not
|
672
|
+
# @param placeholder [String] cvc input placeholder text
|
673
|
+
# @param mask [String] cvc input mask
|
674
|
+
# @param maxlength [String] nuber input max length
|
675
|
+
# @return [String] compiled html of cvc input
|
676
|
+
def x_cvc(id: "", name: "", value: "", label: "", required: false, placeholder: "", maxlength: "4", mask:"999999999999999999")
|
677
|
+
|
678
|
+
if required
|
679
|
+
if label != ""
|
680
|
+
required_output = '<sup class="text-danger">*</sup>'
|
681
|
+
else
|
682
|
+
required_output = ''
|
683
|
+
end
|
684
|
+
required_tag = 'required="required"'
|
685
|
+
else
|
686
|
+
required_output = ""
|
687
|
+
required_tag = ""
|
688
|
+
end
|
689
|
+
if label != ""
|
690
|
+
label = "<label>#{label}</label>"
|
691
|
+
end
|
692
|
+
|
693
|
+
if mask != ""
|
694
|
+
mask = "data-masked-input='#{mask}'"
|
695
|
+
end
|
696
|
+
|
697
|
+
if maxlength != ""
|
698
|
+
maxlength = "maxlength='#{maxlength}'"
|
699
|
+
end
|
700
|
+
|
701
|
+
tb = <<EOS
|
702
|
+
<div class="form-group">
|
703
|
+
#{label}#{required_output}
|
704
|
+
<input type="number" pattern="[0-9]{3,4}" class="form-control" id="#{id}" name="post[#{name}]" value="#{value}" #{required_tag} data-parsley-type="integer" data-parsley-length="[3, 4]" placeholder="#{placeholder}" #{mask} #{maxlength} />
|
705
|
+
</div>
|
706
|
+
EOS
|
707
|
+
return tb
|
708
|
+
end
|
709
|
+
|
710
|
+
# Email input helper
|
711
|
+
# @param id [String] email input id
|
712
|
+
# @param name [String] email input name
|
713
|
+
# @param value [String] email input value
|
714
|
+
# @param label [String] email input label
|
715
|
+
# @param required [Boolean] if required or not
|
716
|
+
# @param placeholder [String] email input placeholder text
|
717
|
+
# @return [String] compiled html of email input
|
718
|
+
def x_email(id: "", name: "", value: "", label: "", required: false, placeholder: "")
|
719
|
+
|
720
|
+
if required
|
721
|
+
if label != ""
|
722
|
+
required_output = '<sup class="text-danger">*</sup>'
|
723
|
+
else
|
724
|
+
required_output = ''
|
725
|
+
end
|
726
|
+
required_tag = 'required="required"'
|
727
|
+
else
|
728
|
+
required_output = ""
|
729
|
+
required_tag = ""
|
730
|
+
end
|
731
|
+
if label != ""
|
732
|
+
label = "<label>#{label}</label>"
|
733
|
+
end
|
734
|
+
|
735
|
+
tb = <<EOS
|
736
|
+
<div class="form-group">
|
737
|
+
#{label}#{required_output}
|
738
|
+
<input type="email" class="form-control" id="#{id}" name="post[#{name}]" value="#{value}" #{required_tag} data-parsley-type="email" placeholder="#{placeholder}" />
|
739
|
+
</div>
|
740
|
+
EOS
|
741
|
+
return tb
|
742
|
+
end
|
743
|
+
|
744
|
+
|
745
|
+
# URL input helper
|
746
|
+
# @param id [String] url input id
|
747
|
+
# @param name [String] url input name
|
748
|
+
# @param value [String] url input value
|
749
|
+
# @param label [String] url input label
|
750
|
+
# @param required [Boolean] if required or not
|
751
|
+
# @param placeholder [String] url input placeholder text
|
752
|
+
# @return [String] compiled html of url input
|
753
|
+
def x_url(id:"", name:"", value:"", label:"", required: false, placeholder: "")
|
754
|
+
|
755
|
+
if required
|
756
|
+
if label != ""
|
757
|
+
required_output = '<sup class="text-danger">*</sup>'
|
758
|
+
else
|
759
|
+
required_output = ''
|
760
|
+
end
|
761
|
+
required_tag = 'required="required"'
|
762
|
+
else
|
763
|
+
required_output = ""
|
764
|
+
required_tag = ""
|
765
|
+
end
|
766
|
+
if label != ""
|
767
|
+
label = "<label>#{label}</label>"
|
768
|
+
end
|
769
|
+
|
770
|
+
tb = <<EOS
|
771
|
+
<div class="form-group">
|
772
|
+
#{label}#{required_output}
|
773
|
+
<input type="url" class="form-control" id="#{id}" name="post[#{name}]" value="#{value}" #{required_tag} data-parsley-type="url" placeholder="#{placeholder}" />
|
774
|
+
</div>
|
775
|
+
EOS
|
776
|
+
return tb
|
777
|
+
end
|
778
|
+
|
779
|
+
# File input helper
|
780
|
+
# @param id [String] file input id
|
781
|
+
# @param name [String] file input name
|
782
|
+
# @param value [String] file input value
|
783
|
+
# @param label [String] file input label
|
784
|
+
# @param required [Boolean] if required or not
|
785
|
+
# @param placeholder [String] file input placeholder text
|
786
|
+
# @param css [String] file input css
|
787
|
+
# @return [String] compiled html of file input
|
788
|
+
def x_file(id:"", name:"", value:"", label:"", required: false, placeholder: "", css: "")
|
789
|
+
|
790
|
+
if required
|
791
|
+
if label != ""
|
792
|
+
required_output = '<sup class="text-danger">*</sup>'
|
793
|
+
else
|
794
|
+
required_output = ''
|
795
|
+
end
|
796
|
+
required_tag = 'required="required"'
|
797
|
+
else
|
798
|
+
required_output = ""
|
799
|
+
required_tag = ""
|
800
|
+
end
|
801
|
+
if label != ""
|
802
|
+
label = "<label>#{label}</label>"
|
803
|
+
end
|
804
|
+
tb = <<EOS
|
805
|
+
<div class="form-group">
|
806
|
+
#{label}#{required_output}
|
807
|
+
<input type="file" class="form-control file #{css}" id="#{id}" name="filename" value="#{value}" #{required_tag} placeholder="#{placeholder}" />
|
808
|
+
</div>
|
809
|
+
EOS
|
810
|
+
return tb
|
811
|
+
end
|
812
|
+
|
813
|
+
# Image Upload
|
814
|
+
# @param id [String] file input id
|
815
|
+
# @param name [String] file input name
|
816
|
+
# @param value [String] file input value
|
817
|
+
# @param label [String] file input label
|
818
|
+
# @param required [Boolean] if required or not
|
819
|
+
# @param placeholder [String] file input placeholder text
|
820
|
+
# @param css [String] file input css
|
821
|
+
# @return [String] compiled html of file input
|
822
|
+
def x_image_upload(id: "input1",name: "input1",value: "",label: "Input1",required: false, size: "1M",height: "",default: "")
|
823
|
+
|
824
|
+
if required && label != ""
|
825
|
+
required_output = '<sup class="text-danger">*</sup>'
|
826
|
+
required_tag = 'required="required"'
|
827
|
+
else
|
828
|
+
required_output = ""
|
829
|
+
required_tag = ""
|
830
|
+
end
|
831
|
+
|
832
|
+
if height == ""
|
833
|
+
height = ""
|
834
|
+
else
|
835
|
+
height="data-height='#{height}'"
|
836
|
+
end
|
837
|
+
|
838
|
+
|
839
|
+
tb = <<EOS
|
840
|
+
<div class="form-group">
|
841
|
+
<label>#{label}</label>
|
842
|
+
<input type="file" class="form-control file dropify" data-default-file="#{value}" data-max-file-size="#{size}" id="#{id}" name="filename" value="#{value}" #{required_tag} #{height}/>
|
843
|
+
</div>
|
844
|
+
EOS
|
845
|
+
return tb
|
846
|
+
end
|
847
|
+
|
848
|
+
# Date input helper
|
849
|
+
# @param id [String] date input id
|
850
|
+
# @param name [String] date input name
|
851
|
+
# @param value [String] date input value
|
852
|
+
# @param label [String] date input label
|
853
|
+
# @param required [Boolean] if required or not
|
854
|
+
# @param placeholder [String] date input placeholder text
|
855
|
+
# @return [String] compiled html of date input
|
856
|
+
def x_date(id: "", name: "", value: "", label: "", required: false, placeholder: "")
|
857
|
+
|
858
|
+
if required
|
859
|
+
if label != ""
|
860
|
+
required_output = '<sup class="text-danger">*</sup>'
|
861
|
+
else
|
862
|
+
required_output = ''
|
863
|
+
end
|
864
|
+
required_tag = 'required="required"'
|
865
|
+
else
|
866
|
+
required_output = ""
|
867
|
+
required_tag = ""
|
868
|
+
end
|
869
|
+
if label != ""
|
870
|
+
label = "<label for='#{id}' class='control-label'>#{label}</label>"
|
871
|
+
end
|
872
|
+
|
873
|
+
tb = <<EOS
|
874
|
+
<div class="form-group">
|
875
|
+
#{label}#{required_output}
|
876
|
+
<div class="input-group">
|
877
|
+
<span class="input-group-addon"><i class="fa fa-calendar"></i></span>
|
878
|
+
<input type="text" class="form-control datepicker" id="#{id}" name="post[#{name}]" value="#{value}" #{required_tag} placeholder="#{placeholder}" />
|
879
|
+
</div>
|
880
|
+
</div>
|
881
|
+
EOS
|
882
|
+
return tb
|
883
|
+
end
|
884
|
+
|
885
|
+
# Date-time input helper
|
886
|
+
# @param id [String] date-time input id
|
887
|
+
# @param name [String] date-time input name
|
888
|
+
# @param value [String] date-time input value
|
889
|
+
# @param label [String] date-time input label
|
890
|
+
# @param required [Boolean] if required or not
|
891
|
+
# @param placeholder [String] date-time input placeholder text
|
892
|
+
# @return [String] compiled html of date-time input
|
893
|
+
def x_datetime(id: "", name: "", value: "", label: "", required: false, placeholder: "")
|
894
|
+
|
895
|
+
if required
|
896
|
+
if label != ""
|
897
|
+
required_output = '<sup class="text-danger">*</sup>'
|
898
|
+
else
|
899
|
+
required_output = ''
|
900
|
+
end
|
901
|
+
required_tag = 'required="required"'
|
902
|
+
else
|
903
|
+
required_output = ""
|
904
|
+
required_tag = ""
|
905
|
+
end
|
906
|
+
if label != ""
|
907
|
+
label = "<label for='#{id}' class='control-label'>#{label}</label>"
|
908
|
+
end
|
909
|
+
|
910
|
+
tb = <<EOS
|
911
|
+
<div class="form-group">
|
912
|
+
#{label}#{required_output}
|
913
|
+
<div class="input-group">
|
914
|
+
<span class="input-group-addon"><i class="fa fa-calendar"></i></span>
|
915
|
+
<input type="text" class="form-control datetimepicker" id="#{id}" name="post[#{name}]" value="#{value}" #{required_tag} placeholder="#{placeholder}" />
|
916
|
+
</div>
|
917
|
+
</div>
|
918
|
+
EOS
|
919
|
+
return tb
|
920
|
+
end
|
921
|
+
|
922
|
+
# Time input helper
|
923
|
+
# @param id [String] time input id
|
924
|
+
# @param name [String] time input name
|
925
|
+
# @param value [String] time input value
|
926
|
+
# @param label [String] time input label
|
927
|
+
# @param required [Boolean] if required or not
|
928
|
+
# @param placeholder [String] time input placeholder text
|
929
|
+
# @return [String] compiled html of time input
|
930
|
+
def x_time(id: "", name: "", value: "", label: "", required: false, placeholder: "")
|
931
|
+
|
932
|
+
if required
|
933
|
+
if label != ""
|
934
|
+
required_output = '<sup class="text-danger">*</sup>'
|
935
|
+
else
|
936
|
+
required_output = ''
|
937
|
+
end
|
938
|
+
required_tag = 'required="required"'
|
939
|
+
else
|
940
|
+
required_output = ""
|
941
|
+
required_tag = ""
|
942
|
+
end
|
943
|
+
if label != ""
|
944
|
+
label = "<label for='#{id}' class='control-label'>#{label}</label>"
|
945
|
+
end
|
946
|
+
|
947
|
+
tb = <<EOS
|
948
|
+
<div class="form-group">
|
949
|
+
#{label}#{required_output}
|
950
|
+
<div class="input-group">
|
951
|
+
<span class="input-group-addon"><i class="fa fa fa-clock-o"></i></span>
|
952
|
+
<input type="text" class="form-control timepicker" id="#{id}" name="post[#{name}]" value="#{value}" #{required_tag} placeholder="#{placeholder}" />
|
953
|
+
</div>
|
954
|
+
</div>
|
955
|
+
EOS
|
956
|
+
return tb
|
957
|
+
end
|
958
|
+
|
959
|
+
|
960
|
+
# Password input helper
|
961
|
+
# @param id [String] password input id
|
962
|
+
# @param name [String] password input name
|
963
|
+
# @param value [String] password input value
|
964
|
+
# @param label [String] password input label
|
965
|
+
# @param required [Boolean] if required or not
|
966
|
+
# @param placeholder [String] password input placeholder text
|
967
|
+
# @return [String] compiled html of password input
|
968
|
+
def x_password(id: "",name: "", value: "", label: "", required: false, placeholder: "")
|
969
|
+
|
970
|
+
if required
|
971
|
+
if label != ""
|
972
|
+
required_output = '<sup class="text-danger">*</sup>'
|
973
|
+
else
|
974
|
+
required_output = ''
|
975
|
+
end
|
976
|
+
required_tag = 'required="required"'
|
977
|
+
else
|
978
|
+
required_output = ""
|
979
|
+
required_tag = ""
|
980
|
+
end
|
981
|
+
if label != ""
|
982
|
+
label = "<label>#{label}</label>"
|
983
|
+
end
|
984
|
+
|
985
|
+
tb = <<EOS
|
986
|
+
<div class="form-group">
|
987
|
+
#{label}#{required_output}
|
988
|
+
<input type="password" class="form-control" id="#{id}" name="post[#{name}]" value="#{value}" #{required_tag} data-parsley-length="[6, 34]" placeholder="#{placeholder}" />
|
989
|
+
</div>
|
990
|
+
EOS
|
991
|
+
return tb
|
992
|
+
end
|
993
|
+
|
994
|
+
# Submit Helper
|
995
|
+
# @param label [String] submit button label
|
996
|
+
# @param css [String] submit button css
|
997
|
+
# @param icon [String] submit button icon
|
998
|
+
# @param size [String] submit button size
|
999
|
+
# @param wrapper_css [String] submit button wrapper css
|
1000
|
+
# @return [String] compiled html of submit button
|
1001
|
+
def x_submit(label: "Submit", css: "btn-primary", icon: "", size: "", wrapper_css: "pull-right")
|
1002
|
+
|
1003
|
+
if icon != ""
|
1004
|
+
icon = "<i class='fa #{icon}'></i> "
|
1005
|
+
end
|
1006
|
+
|
1007
|
+
submit = <<EOS
|
1008
|
+
<div class="form-group form-actions #{wrapper_css}">
|
1009
|
+
<button type="submit" class="btn #{css} #{size}">#{icon}#{label}</button>
|
1010
|
+
</div>
|
1011
|
+
<div class="clearfix"></div>
|
1012
|
+
EOS
|
1013
|
+
|
1014
|
+
return submit
|
1015
|
+
end
|
1016
|
+
|
1017
|
+
|
1018
|
+
|
1019
|
+
# Text Area Helper
|
1020
|
+
# @param id [String] textarea id
|
1021
|
+
# @param name [String] textarea name
|
1022
|
+
# @param value [String] textarea value
|
1023
|
+
# @param placeholder [String] textarea placeholder text
|
1024
|
+
# @param label [String] textarea label
|
1025
|
+
# @param required [Boolean] if required or not
|
1026
|
+
# @param maxlength [String] textarea max length
|
1027
|
+
# @return [String] compiled html of textarea
|
1028
|
+
def x_textarea(id: "", name: "", value: "",label: "",placeholder: "",required: false, maxlength:"")
|
1029
|
+
|
1030
|
+
if required
|
1031
|
+
if label != ""
|
1032
|
+
required_output = '<sup class="text-danger">*</sup>'
|
1033
|
+
else
|
1034
|
+
required_output = ''
|
1035
|
+
end
|
1036
|
+
required_tag = 'required="required"'
|
1037
|
+
else
|
1038
|
+
required_output = ""
|
1039
|
+
required_tag = ""
|
1040
|
+
end
|
1041
|
+
|
1042
|
+
if label != ""
|
1043
|
+
label = "<label for='#{id}'>#{label}</label>"
|
1044
|
+
end
|
1045
|
+
|
1046
|
+
if label != ""
|
1047
|
+
label = "<label for='#{id}'>#{label}</label>"
|
1048
|
+
end
|
1049
|
+
|
1050
|
+
if maxlength != ""
|
1051
|
+
maxlength = "maxlength='#{maxlength}'"
|
1052
|
+
end
|
1053
|
+
|
1054
|
+
ta = <<EOS
|
1055
|
+
<div class="form-group">
|
1056
|
+
#{label}#{required_output}
|
1057
|
+
<textarea name="post[#{name}]" id="#{id}" rows="4" class="form-control" placeholder="#{placeholder}" #{maxlength} #{required_tag}>#{value}</textarea>
|
1058
|
+
</div>
|
1059
|
+
EOS
|
1060
|
+
return ta
|
1061
|
+
end
|
1062
|
+
|
1063
|
+
# Summernote
|
1064
|
+
# @param id [String] summernote id
|
1065
|
+
# @param name [String] summernote name
|
1066
|
+
# @param value [String] summernote value
|
1067
|
+
# @param label [String] summernote label
|
1068
|
+
# @param required [Boolean] if required or not
|
1069
|
+
# @return [String] compiled html of summernote
|
1070
|
+
def x_html(id: "", name: "", value: "", label: "", help: "", required: false)
|
1071
|
+
|
1072
|
+
if required
|
1073
|
+
if label != ""
|
1074
|
+
required_output = '<sup class="text-danger">*</sup>'
|
1075
|
+
else
|
1076
|
+
required_output = ''
|
1077
|
+
end
|
1078
|
+
required_tag = 'required="required"'
|
1079
|
+
else
|
1080
|
+
required_output = ""
|
1081
|
+
required_tag = ""
|
1082
|
+
end
|
1083
|
+
if label != ""
|
1084
|
+
label = "<label for='#{id}'>#{label}</label>"
|
1085
|
+
end
|
1086
|
+
ta = <<EOS
|
1087
|
+
<div class="form-group">
|
1088
|
+
#{label}
|
1089
|
+
<textarea name="post[#{name}]" id="#{id}" rows="4" class="form-control summernote">#{value}</textarea>
|
1090
|
+
</div>
|
1091
|
+
EOS
|
1092
|
+
return ta
|
1093
|
+
end
|
1094
|
+
|
1095
|
+
|
1096
|
+
|
1097
|
+
# Year Drop down
|
1098
|
+
def x_year
|
1099
|
+
current_year = Time.now.year
|
1100
|
+
|
1101
|
+
year_dd = <<EOS
|
1102
|
+
<select id="selected_year" name="selected_year" class="selectpicker" data-style="btn-primary btn" data-width="auto">
|
1103
|
+
<option selected="selected" value="#{current_year}">#{current_year}</option>
|
1104
|
+
<option value="#{current_year - 1}">#{current_year - 1}</option>
|
1105
|
+
<option value="#{current_year - 2}">#{current_year - 2}</option>
|
1106
|
+
<option value="#{current_year - 3}">#{current_year - 3}</option>
|
1107
|
+
<option value="#{current_year - 4}">#{current_year - 4}</option>
|
1108
|
+
<option value="#{current_year - 5}">#{current_year - 5}</option>
|
1109
|
+
<option value="#{current_year - 6}">#{current_year - 6}</option>
|
1110
|
+
<option value="#{current_year - 7}">#{current_year - 7}</option>
|
1111
|
+
</select>
|
1112
|
+
EOS
|
1113
|
+
end
|
1114
|
+
|
1115
|
+
|
1116
|
+
# Year Drop down (expiry)
|
1117
|
+
def x_exp_year
|
1118
|
+
current_year = Time.now.year
|
1119
|
+
begining_year = Time.now.year + 6
|
1120
|
+
|
1121
|
+
year_dd = <<EOS
|
1122
|
+
<div class="col-md-6">
|
1123
|
+
<div class="form-group">
|
1124
|
+
<label>Expiration Year</label>
|
1125
|
+
<select id="exp_year" name="post[exp_year]" class="form-control" data-stripe="exp-year">
|
1126
|
+
<option value="#{(current_year)}">#{current_year}</option>
|
1127
|
+
<option value="#{(current_year + 1)}">#{current_year + 1}</option>
|
1128
|
+
<option value="#{(current_year + 2)}">#{current_year + 2}</option>
|
1129
|
+
<option value="#{(current_year + 3)}">#{current_year + 3}</option>
|
1130
|
+
<option value="#{(current_year + 4)}">#{current_year + 4}</option>
|
1131
|
+
<option value="#{(current_year + 5)}">#{current_year + 5}</option>
|
1132
|
+
<option value="#{(current_year + 6)}">#{current_year + 6}</option>
|
1133
|
+
<option value="#{(current_year + 7)}">#{current_year + 7}</option>
|
1134
|
+
</select>
|
1135
|
+
</div>
|
1136
|
+
</div>
|
1137
|
+
EOS
|
1138
|
+
end
|
1139
|
+
|
1140
|
+
# Month Drop down
|
1141
|
+
def x_exp_month
|
1142
|
+
current_year = Time.now.year
|
1143
|
+
begining_year = Time.now.year - 6
|
1144
|
+
|
1145
|
+
year_dd = <<EOS
|
1146
|
+
<div class="col-md-6">
|
1147
|
+
<div class="form-group">
|
1148
|
+
<label>Expiration Month</label>
|
1149
|
+
<select id="exp_mo" name="post[exp_mo]" class="form-control" data-stripe="exp-month">
|
1150
|
+
<option value="01">01</option>
|
1151
|
+
<option value="02">02</option>
|
1152
|
+
<option value="03">03</option>
|
1153
|
+
<option value="04">04</option>
|
1154
|
+
<option value="05">05</option>
|
1155
|
+
<option value="06">06</option>
|
1156
|
+
<option value="07">07</option>
|
1157
|
+
<option value="08">08</option>
|
1158
|
+
<option value="09">09</option>
|
1159
|
+
<option value="10">10</option>
|
1160
|
+
<option value="11">11</option>
|
1161
|
+
<option value="12">12</option>
|
1162
|
+
</select>
|
1163
|
+
</div>
|
1164
|
+
</div>
|
1165
|
+
EOS
|
1166
|
+
end
|
1167
|
+
|
1168
|
+
# Switch
|
1169
|
+
# @param id [String] summernote id
|
1170
|
+
# @param name [String] summernote name
|
1171
|
+
# @param value [String] summernote value
|
1172
|
+
# @param label [String] summernote label
|
1173
|
+
# @param checked [Boolen] if checked or not
|
1174
|
+
# @return [String] compiled html of summernote
|
1175
|
+
def x_switch(id: "", name: "", value: "", label: "", checked: false)
|
1176
|
+
|
1177
|
+
checked_output = ""
|
1178
|
+
|
1179
|
+
if checked == true then checked_output='checked="checked"' end
|
1180
|
+
|
1181
|
+
cb = <<EOS
|
1182
|
+
<div class="form-group">
|
1183
|
+
<label>#{label}</label><br>
|
1184
|
+
<div class="switch"
|
1185
|
+
data-on-label="<i class='fa fa-check'></i>"
|
1186
|
+
data-off-label="<i class='fa fa-times'></i>">
|
1187
|
+
<input type="hidden" id="#{id}" name="post[#{name}]" value="0">
|
1188
|
+
<input type="checkbox" id="#{id}" name="post[#{name}]" value="1" #{checked_output}/>
|
1189
|
+
</div>
|
1190
|
+
</div>
|
1191
|
+
EOS
|
1192
|
+
return cb
|
1193
|
+
end
|
1194
|
+
|
1195
|
+
# Tags
|
1196
|
+
# @param id [String] tags id
|
1197
|
+
# @param name [String] tags name
|
1198
|
+
# @param value [String] tags value
|
1199
|
+
# @param label [String] tags label
|
1200
|
+
# @param required [Boolean] if required or not
|
1201
|
+
# @param placeholder [String] tags placeholder text
|
1202
|
+
# @return [String] compiled html of tags
|
1203
|
+
def x_tags(id: "", name: "", value: "", label: "", required: false, placeholder: "")
|
1204
|
+
|
1205
|
+
id = name unless id != ""
|
1206
|
+
if required
|
1207
|
+
if label != ""
|
1208
|
+
required_output = '<sup class="text-danger">*</sup>'
|
1209
|
+
else
|
1210
|
+
required_output = ''
|
1211
|
+
end
|
1212
|
+
required_tag = 'required="required"'
|
1213
|
+
else
|
1214
|
+
required_output = ""
|
1215
|
+
required_tag = ""
|
1216
|
+
end
|
1217
|
+
|
1218
|
+
if label != ""
|
1219
|
+
label = "<label>#{label}</label>"
|
1220
|
+
end
|
1221
|
+
tb = <<EOS
|
1222
|
+
<div class="form-group">
|
1223
|
+
#{label}#{required_output}
|
1224
|
+
<input type="text" class="form-control tagsinput typeahead tag-azure tag-fill" id="#{id}" name="post[#{name}]" value="#{value}" placeholder="#{placeholder}" #{required_tag}/>
|
1225
|
+
</div>
|
1226
|
+
EOS
|
1227
|
+
return tb
|
1228
|
+
end
|
1229
|
+
|
1230
|
+
|
1231
|
+
# Typeahead
|
1232
|
+
# @param id [String] typeahead id
|
1233
|
+
# @param name [String] typeahead name
|
1234
|
+
# @param value [String] typeahead value
|
1235
|
+
# @param label [String] typeahead label
|
1236
|
+
# @param required [Boolean] if required or not
|
1237
|
+
# @param placeholder [String] typeahead placeholder text
|
1238
|
+
# @param css [String] typeahead css
|
1239
|
+
# @return [String] compiled html of typeahead
|
1240
|
+
def x_typeahead(id: "", name: "", value: "", label: "", required: false, placeholder: "", css: "")
|
1241
|
+
|
1242
|
+
id = name unless id != ""
|
1243
|
+
if required
|
1244
|
+
if label != ""
|
1245
|
+
required_output = '<sup class="text-danger">*</sup>'
|
1246
|
+
else
|
1247
|
+
required_output = ''
|
1248
|
+
end
|
1249
|
+
required_tag = 'required="required"'
|
1250
|
+
else
|
1251
|
+
required_output = ""
|
1252
|
+
required_tag = ""
|
1253
|
+
end
|
1254
|
+
|
1255
|
+
if label != ""
|
1256
|
+
label = "<label>#{label}</label>"
|
1257
|
+
end
|
1258
|
+
tb = <<EOS
|
1259
|
+
<div class="form-group">
|
1260
|
+
#{label}#{required_output}
|
1261
|
+
<input type="text" class="form-control typeahead #{css}" autocomplete="off" id="#{id}" name="post[#{name}]" value="#{value}" placeholder="#{placeholder}" #{required_tag}/>
|
1262
|
+
</div>
|
1263
|
+
EOS
|
1264
|
+
return tb
|
1265
|
+
end
|
1266
|
+
|
1267
|
+
|
1268
|
+
# Rating Radios
|
1269
|
+
# @param id [String] id of the survey radio
|
1270
|
+
# @param name [String] name of the survey radio
|
1271
|
+
# @return [String] compiled html of the survey radio
|
1272
|
+
def x_survey_radio(id: "", name: "")
|
1273
|
+
tb = <<EOS
|
1274
|
+
<label class="radio radio-inline">
|
1275
|
+
<input type="radio" id="#{id}" name="#{name}" data-toggle="radio" value="1">
|
1276
|
+
</label>
|
1277
|
+
<label class="radio radio-inline">
|
1278
|
+
<input type="radio" id="#{id}" name="#{name}" data-toggle="radio" value="2">
|
1279
|
+
</label>
|
1280
|
+
<label class="radio radio-inline">
|
1281
|
+
<input type="radio" id="#{id}" name="#{name}" data-toggle="radio" value="3">
|
1282
|
+
</label>
|
1283
|
+
<label class="radio radio-inline">
|
1284
|
+
<input type="radio" id="#{id}" name="#{name}" data-toggle="radio" value="4">
|
1285
|
+
</label>
|
1286
|
+
<label class="radio radio-inline">
|
1287
|
+
<input type="radio" id="#{id}" name="#{name}" data-toggle="radio" value="5">
|
1288
|
+
</label>
|
1289
|
+
<label class="radio radio-inline">
|
1290
|
+
<input type="radio" id="#{id}" name="#{name}" data-toggle="radio" value="6">
|
1291
|
+
</label>
|
1292
|
+
<label class="radio radio-inline">
|
1293
|
+
<input type="radio" id="#{id}" name="#{name}" data-toggle="radio" value="7">
|
1294
|
+
</label>
|
1295
|
+
EOS
|
1296
|
+
return tb
|
1297
|
+
end
|
1298
|
+
|
1299
|
+
|
1300
|
+
# Select Dropdown
|
1301
|
+
# @param id [String] id of the select
|
1302
|
+
# @param name [String] name of the select
|
1303
|
+
# @param value [String] value of the select
|
1304
|
+
# @param name_col [String] name col of the select
|
1305
|
+
# @param value_col [String] vale col of the select
|
1306
|
+
# @param label [String] label of the select
|
1307
|
+
# @param css [String] css of the select
|
1308
|
+
# @param menu_style [String] menu syle of the select
|
1309
|
+
# @param style [String] style classes of the select
|
1310
|
+
# @param option_data [String] option data
|
1311
|
+
# @param option_name [String] option name
|
1312
|
+
# @param option_value [String] option value
|
1313
|
+
# @param selected_value [String] selected value of the select
|
1314
|
+
# @param title [String] title of the select
|
1315
|
+
# @param multple [Boolean] if multiple selection is enabled
|
1316
|
+
# @return [String] compiled select drop down
|
1317
|
+
def x_select(id: "", name: "", value: "",name_col: "name", value_col: "id", label: "", css: "selectpicker", menu_style: "dropdown-blue", style: "btn-default btn-block", option_data: "", option_name: "name", option_value: "id", selected_value: "", title: "", multiple: false, add_none: false, required: false, menu_size: 0, live_search: false)
|
1318
|
+
|
1319
|
+
options_html = ""
|
1320
|
+
show_multiple = ""
|
1321
|
+
add_none_option = ""
|
1322
|
+
live_search_html = ""
|
1323
|
+
|
1324
|
+
if multiple == true
|
1325
|
+
show_multiple = "Multiple"
|
1326
|
+
end
|
1327
|
+
|
1328
|
+
if required
|
1329
|
+
if label != ""
|
1330
|
+
required_output = '<sup class="text-danger">*</sup>'
|
1331
|
+
else
|
1332
|
+
required_output = ''
|
1333
|
+
end
|
1334
|
+
required_tag = 'required="required"'
|
1335
|
+
else
|
1336
|
+
required_output = ""
|
1337
|
+
required_tag = ""
|
1338
|
+
end
|
1339
|
+
|
1340
|
+
multiple_name = ""
|
1341
|
+
if multiple == true
|
1342
|
+
multiple_name = "[]"
|
1343
|
+
end
|
1344
|
+
|
1345
|
+
option_data.each do |i|
|
1346
|
+
selected = ""
|
1347
|
+
|
1348
|
+
if selected_value == i[:id]
|
1349
|
+
selected = "selected='selected'"
|
1350
|
+
end
|
1351
|
+
|
1352
|
+
if selected_value.kind_of?(Array) && (selected_value.include? i[:id])
|
1353
|
+
selected = "selected='selected'"
|
1354
|
+
end
|
1355
|
+
|
1356
|
+
unless name_col.kind_of?(Array)
|
1357
|
+
options_html << "<option value='#{i[value_col.to_sym]}' #{selected}>#{i[name_col.to_sym]}</option>"
|
1358
|
+
else
|
1359
|
+
|
1360
|
+
options_html << "<option value='#{i[value_col.to_sym]}' #{selected}>"
|
1361
|
+
name_col.each do |n|
|
1362
|
+
options_html << "#{i[n.to_sym]} "
|
1363
|
+
end
|
1364
|
+
options_html << "</option>"
|
1365
|
+
|
1366
|
+
end
|
1367
|
+
end
|
1368
|
+
|
1369
|
+
if option_data.count == 0 || option_data.nil?
|
1370
|
+
options_html << "<option value=''>No available selections</option>"
|
1371
|
+
end
|
1372
|
+
|
1373
|
+
if add_none == true
|
1374
|
+
add_none_option = "<option value=''>Select One</option>"
|
1375
|
+
end
|
1376
|
+
|
1377
|
+
if menu_size == 0
|
1378
|
+
menu_size_html = ""
|
1379
|
+
else
|
1380
|
+
menu_size_html = "data-size='#{menu_size}'"
|
1381
|
+
end
|
1382
|
+
|
1383
|
+
if live_search == true
|
1384
|
+
live_search_html = "data-live-search='true'"
|
1385
|
+
end
|
1386
|
+
|
1387
|
+
select = <<EOS
|
1388
|
+
<div class="form-group">
|
1389
|
+
<label>#{label}#{required_output}</label>
|
1390
|
+
<select id="#{id}" name="post[#{name}]#{multiple_name}" class="#{css}" data-title="#{title}" title="#{title}" data-style="#{style}" data-menu-style="#{menu_style}" #{show_multiple} #{required_tag} #{menu_size_html} data-container=".content" #{live_search_html}>
|
1391
|
+
#{add_none_option}
|
1392
|
+
#{options_html}
|
1393
|
+
</select>
|
1394
|
+
</div>
|
1395
|
+
EOS
|
1396
|
+
|
1397
|
+
return select
|
1398
|
+
|
1399
|
+
end
|
1400
|
+
end
|
1401
|
+
end
|