binda 0.1.7 → 0.1.8
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 +4 -4
- data/README.md +7 -0
- data/app/assets/javascripts/binda/components/fileupload.js +19 -0
- data/app/assets/javascripts/binda/dist/binda.bundle.js +161 -139
- data/app/controllers/binda/svgs_controller.rb +71 -0
- data/app/controllers/concerns/binda/fieldable_helpers.rb +48 -20
- data/app/models/binda/binda.rb +7 -0
- data/app/models/binda/field_setting.rb +8 -6
- data/app/models/binda/image.rb +2 -2
- data/app/models/binda/svg.rb +7 -0
- data/app/models/concerns/binda/fieldable_association_helpers.rb +10 -454
- data/app/models/concerns/binda/fieldable_association_helpers/fieldable_audio_helpers.rb +55 -0
- data/app/models/concerns/binda/fieldable_association_helpers/fieldable_date_helpers.rb +30 -0
- data/app/models/concerns/binda/fieldable_association_helpers/fieldable_image_helpers.rb +95 -0
- data/app/models/concerns/binda/fieldable_association_helpers/fieldable_relation_helpers.rb +68 -0
- data/app/models/concerns/binda/fieldable_association_helpers/fieldable_repeater_helpers.rb +32 -0
- data/app/models/concerns/binda/fieldable_association_helpers/fieldable_selection_helpers.rb +60 -0
- data/app/models/concerns/binda/fieldable_association_helpers/fieldable_string_helpers.rb +56 -0
- data/app/models/concerns/binda/fieldable_association_helpers/fieldable_svg_helpers.rb +74 -0
- data/app/models/concerns/binda/fieldable_association_helpers/fieldable_text_helpers.rb +59 -0
- data/app/models/concerns/binda/fieldable_association_helpers/fieldable_video_helpers.rb +56 -0
- data/app/models/concerns/binda/fieldable_associations.rb +4 -2
- data/app/uploaders/binda/svg_uploader.rb +62 -0
- data/app/views/binda/fieldable/_form_item_svg.html.erb +33 -0
- data/app/views/binda/fieldable/_form_item_video.html.erb +9 -8
- data/app/views/binda/fieldable/_form_section.html.erb +1 -1
- data/app/views/binda/structures/form_section/_form_section_header.html.erb +1 -1
- data/config/initializers/simple_form__fileupload.rb +14 -9
- data/config/initializers/simple_form_custom.rb +1 -1
- data/config/locales/en.yml +1 -0
- data/config/routes.rb +5 -0
- data/db/migrate/1_create_binda_tables.rb +1 -0
- data/lib/binda/version.rb +1 -1
- data/lib/generators/binda/setup/setup_generator.rb +5 -1
- data/lib/tasks/update_image_details_task.rake +1 -1
- metadata +17 -2
@@ -0,0 +1,59 @@
|
|
1
|
+
module Binda
|
2
|
+
module FieldableAssociationHelpers
|
3
|
+
module FieldableTextHelpers
|
4
|
+
|
5
|
+
extend ActiveSupport::Concern
|
6
|
+
# Get the object related to that field setting
|
7
|
+
# If the object doesn't exists yet it will return nil
|
8
|
+
#
|
9
|
+
# @param field_slug [string] The slug of the field setting
|
10
|
+
# @return [string] Returns the content of the text
|
11
|
+
# @return [error] Raise an error if no record is found
|
12
|
+
def get_text(field_slug)
|
13
|
+
obj = Text
|
14
|
+
.includes(:field_setting)
|
15
|
+
.where(fieldable_id: self.id, fieldable_type: self.class.name)
|
16
|
+
.where(binda_field_settings: { slug: field_slug })
|
17
|
+
.where.not(binda_field_settings: { field_type: "string" })
|
18
|
+
.first
|
19
|
+
unless obj.nil?
|
20
|
+
# to_s ensures the returned object is class String
|
21
|
+
obj.content.to_s
|
22
|
+
else
|
23
|
+
check_text_error field_slug
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
# Check why get_text doesn't return a value
|
28
|
+
# This method isn't supposed to be used by anything other than get_text method
|
29
|
+
def check_text_error(field_slug)
|
30
|
+
you_mean_string = !self.strings.find{ |t| t.field_setting_id == FieldSetting.get_id( field_slug ) && t.type == 'Binda::String' }.nil?
|
31
|
+
if you_mean_string
|
32
|
+
raise ArgumentError, "This slug (#{field_slug}) is associated to a string not a text. Use get_string() instead on instance (#{self.class.name} ##{self.id}).", caller
|
33
|
+
else
|
34
|
+
raise ArgumentError, "There isn't any text associated to the current slug (#{field_slug}) on instance (#{self.class.name} ##{self.id}).", caller
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
# Get the object related to that field setting
|
39
|
+
#
|
40
|
+
# @param field_slug [string] The slug of the field setting
|
41
|
+
# @return [boolean]
|
42
|
+
def has_text(field_slug)
|
43
|
+
obj = Text
|
44
|
+
.includes(:field_setting)
|
45
|
+
.where(fieldable_id: self.id, fieldable_type: self.class.name)
|
46
|
+
.where(binda_field_settings: { slug: field_slug })
|
47
|
+
.where.not(binda_field_settings: { field_type: "string" })
|
48
|
+
.first
|
49
|
+
raise ArgumentError, "There isn't any text associated to the current slug (#{field_slug}) on instance (#{self.class.name} ##{self.id}).", caller if obj.nil?
|
50
|
+
if obj.present?
|
51
|
+
return !obj.content.nil?
|
52
|
+
else
|
53
|
+
return false
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
module Binda
|
2
|
+
module FieldableAssociationHelpers
|
3
|
+
module FieldableVideoHelpers
|
4
|
+
|
5
|
+
# Check if the field has an attached video
|
6
|
+
#
|
7
|
+
# @param field_slug [string] The slug of the field setting
|
8
|
+
# @return [boolean]
|
9
|
+
def has_video(field_slug)
|
10
|
+
obj = self.videos.find{ |t| t.field_setting_id == FieldSetting.get_id( field_slug ) }
|
11
|
+
# Alternative query
|
12
|
+
# obj = Image.where(field_setting_id: FieldSetting.get_id( field_slug ), fieldable_id: self.id, fieldable_type: self.class.to_s ).first
|
13
|
+
raise ArgumentError, "There isn't any video associated to the current slug (#{field_slug}) on instance (#{self.class.name} ##{self.id}).", caller if obj.nil?
|
14
|
+
return obj.video.present?
|
15
|
+
end
|
16
|
+
|
17
|
+
# Get the video url based on the size provided,
|
18
|
+
# default is Carrierwave default (usually the real size)
|
19
|
+
#
|
20
|
+
# @param field_slug [string] The slug of the field setting
|
21
|
+
# @param size [string] The size. It can be 'thumb' 200x200 cropped,
|
22
|
+
# 'medium' 700x700 max size, 'large' 1400x1400 max size, or blank
|
23
|
+
# @return [string] The url of the video
|
24
|
+
def get_video_url(field_slug)
|
25
|
+
get_video_info( field_slug, 'url' )
|
26
|
+
end
|
27
|
+
|
28
|
+
# Get the video path based on the size provided,
|
29
|
+
# default is Carrierwave default (usually the real size)
|
30
|
+
#
|
31
|
+
# @param field_slug [string] The slug of the field setting
|
32
|
+
# @param size [string] The size. It can be 'thumb' 200x200 cropped,
|
33
|
+
# 'medium' 700x700 max size, 'large' 1400x1400 max size, or blank
|
34
|
+
# @return [string] The url of the video
|
35
|
+
def get_video_path(field_slug)
|
36
|
+
get_video_info( field_slug, 'path' )
|
37
|
+
end
|
38
|
+
|
39
|
+
# Get the object related to that field setting
|
40
|
+
#
|
41
|
+
# @param field_slug [string] The slug of the field setting
|
42
|
+
# @param info [string] String of the info to be retrieved
|
43
|
+
# @return [string] The info requested if present
|
44
|
+
# @return [boolean] Returns false if no info is found or if image isn't found
|
45
|
+
def get_video_info(field_slug, info)
|
46
|
+
obj = self.videos.find{ |t| t.field_setting_id == FieldSetting.get_id( field_slug ) }
|
47
|
+
# Alternative query
|
48
|
+
# obj = video.where(field_setting_id: FieldSetting.get_id( field_slug ), fieldable_id: self.id, fieldable_type: self.class.to_s ).first
|
49
|
+
raise ArgumentError, "There isn't any video associated to the current slug (#{field_slug}) on instance (#{self.class.name} ##{self.id}).", caller if obj.nil?
|
50
|
+
if obj.video.present?
|
51
|
+
obj.video.send(info)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
@@ -29,9 +29,10 @@ module Binda
|
|
29
29
|
has_many :radios, as: :fieldable, dependent: :delete_all
|
30
30
|
has_many :selections, as: :fieldable, dependent: :delete_all
|
31
31
|
has_many :checkboxes, as: :fieldable, dependent: :delete_all
|
32
|
+
has_many :svgs, as: :fieldable, dependent: :delete_all
|
32
33
|
# Repeaters need destroy_all, not delete_all
|
33
34
|
has_many :repeaters, as: :fieldable, dependent: :destroy
|
34
|
-
|
35
|
+
has_many :relations, as: :fieldable, dependent: :destroy
|
35
36
|
|
36
37
|
|
37
38
|
has_many :owner_relations, class_name: "RelationLink",
|
@@ -53,7 +54,7 @@ module Binda
|
|
53
54
|
source: :owner
|
54
55
|
|
55
56
|
|
56
|
-
accepts_nested_attributes_for :texts, :strings, :dates, :assets, :images, :videos, :audios, :galleries, :repeaters, :radios, :selections, :checkboxes, :relations, allow_destroy: true
|
57
|
+
accepts_nested_attributes_for :texts, :strings, :dates, :assets, :images, :videos, :audios, :galleries, :repeaters, :radios, :selections, :checkboxes, :relations, :svgs, allow_destroy: true
|
57
58
|
|
58
59
|
validates_associated :texts
|
59
60
|
validates_associated :strings
|
@@ -67,6 +68,7 @@ module Binda
|
|
67
68
|
validates_associated :selections
|
68
69
|
validates_associated :checkboxes
|
69
70
|
validates_associated :relations
|
71
|
+
validates_associated :svgs
|
70
72
|
|
71
73
|
after_save :generate_fields
|
72
74
|
|
@@ -0,0 +1,62 @@
|
|
1
|
+
module Binda
|
2
|
+
class SvgUploader < CarrierWave::Uploader::Base
|
3
|
+
# Include RMagick or MiniMagick support:
|
4
|
+
# include CarrierWave::RMagick
|
5
|
+
# include CarrierWave::MiniMagick
|
6
|
+
|
7
|
+
# Choose what kind of storage to use for this uploader:
|
8
|
+
# storage :file
|
9
|
+
# storage :fog
|
10
|
+
|
11
|
+
# Override the directory where uploaded files will be stored.
|
12
|
+
# This is a sensible default for uploaders that are meant to be mounted:
|
13
|
+
def store_dir
|
14
|
+
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
|
15
|
+
end
|
16
|
+
|
17
|
+
process :register_details
|
18
|
+
|
19
|
+
def register_details
|
20
|
+
if file && model
|
21
|
+
model.content_type = file.content_type if file.content_type
|
22
|
+
model.file_size = file.size
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
# Provide a default URL as a default if there hasn't been a file uploaded:
|
27
|
+
# def default_url(*args)
|
28
|
+
# # For Rails 3.1+ asset pipeline compatibility:
|
29
|
+
# # ActionController::Base.helpers.asset_path("fallback/" + [version_name, "default.png"].compact.join('_'))
|
30
|
+
#
|
31
|
+
# "/images/fallback/" + [version_name, "default.png"].compact.join('_')
|
32
|
+
# end
|
33
|
+
|
34
|
+
# Process files as they are uploaded:
|
35
|
+
# process scale: [200, 300]
|
36
|
+
#
|
37
|
+
# def scale(width, height)
|
38
|
+
# # do something
|
39
|
+
# end
|
40
|
+
|
41
|
+
# Create different versions of your uploaded files:
|
42
|
+
# version :thumb do
|
43
|
+
# process resize_to_fit: [50, 50]
|
44
|
+
# end
|
45
|
+
|
46
|
+
|
47
|
+
# Add a white list of extensions which are allowed to be uploaded.
|
48
|
+
# For images you might use something like this:
|
49
|
+
# def extension_whitelist
|
50
|
+
# %w(jpg jpeg gif png)
|
51
|
+
# end
|
52
|
+
def extension_whitelist
|
53
|
+
%w(svg)
|
54
|
+
end
|
55
|
+
|
56
|
+
# Override the filename of the uploaded files:
|
57
|
+
# Avoid using model.id or version_name here, see uploader/store.rb for details.
|
58
|
+
# def filename
|
59
|
+
# "something.jpg" if original_filename
|
60
|
+
# end
|
61
|
+
end
|
62
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
<div id="standard-form--image-<%= field_setting.id %>" class="standard-form--image form-item">
|
2
|
+
<div id="fileupload-<%= ff.object.id %>"
|
3
|
+
class="fileupload form-group"
|
4
|
+
data-message="<%= t('binda.upload_loading_message') %>"
|
5
|
+
data-error="<%= t('binda.upload_error_message')%>">
|
6
|
+
<p class="control-label">
|
7
|
+
<%= field_setting.name %>
|
8
|
+
</p>
|
9
|
+
<% image = ff.object.image.thumb.url if ff.object.image.present? %>
|
10
|
+
<div class="fileupload--field">
|
11
|
+
<%= ff.input :svg,
|
12
|
+
label: "<i class=\"fa fa-upload\" aria-hidden=\"true\"></i> #{t('binda.choose_file_button')}".html_safe,
|
13
|
+
hint: field_setting.description.nil? ? false : field_setting.description.html_safe,
|
14
|
+
url: url_for([ff.object, action: :remove_svg]).html_safe,
|
15
|
+
object: ff.object,
|
16
|
+
wrapper: false,
|
17
|
+
input_html: {
|
18
|
+
'data-url': url_for([
|
19
|
+
@instance.structure,
|
20
|
+
@instance,
|
21
|
+
action: :upload,
|
22
|
+
repeater: { id: "#{field_setting.parent_id}" }]),
|
23
|
+
'data-id': ff.object.id
|
24
|
+
} %>
|
25
|
+
</div>
|
26
|
+
<%= ff.input :svg_cache, as: :hidden %>
|
27
|
+
<%= ff.input :field_setting_id, as: :hidden, input_html: { value: field_setting.id } %>
|
28
|
+
<%= ff.input :id, as: :hidden, input_html: { value: ff.object.id } %>
|
29
|
+
<%= ff.input :fieldable_id, as: :hidden %>
|
30
|
+
<%= ff.input :fieldable_type, as: :hidden %>
|
31
|
+
<div class="clearfix"></div>
|
32
|
+
</div>
|
33
|
+
</div>
|
@@ -7,19 +7,20 @@
|
|
7
7
|
<p class="control-label"><%= field_setting.name %></p>
|
8
8
|
|
9
9
|
<div class="fileupload--field">
|
10
|
-
|
11
|
-
<%= ff.input :video,
|
10
|
+
<%= ff.input :video,
|
12
11
|
label: "<i class=\"fa fa-upload\" aria-hidden=\"true\"></i> #{t('binda.choose_file_button')}".html_safe,
|
13
12
|
hint: field_setting.description.nil? ? false : field_setting.description.html_safe,
|
14
13
|
url: url_for([ff.object, action: :remove_video]).html_safe,
|
15
14
|
object: ff.object,
|
16
15
|
wrapper: false,
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
16
|
+
input_html: {
|
17
|
+
class: 'form-item--video--uploader',
|
18
|
+
'data-url': url_for([
|
19
|
+
@instance.structure,
|
20
|
+
@instance,
|
21
|
+
action: :upload]),
|
22
|
+
'data-id': ff.object.id,
|
23
|
+
} %>
|
23
24
|
</div>
|
24
25
|
|
25
26
|
<%= ff.input :video_cache, as: :hidden %>
|
@@ -1,4 +1,4 @@
|
|
1
|
-
<% if %w(text string date image video audio relation).include? field_setting.field_type %>
|
1
|
+
<% if %w(text string date image video audio relation svg).include? field_setting.field_type %>
|
2
2
|
<% current = @instance.find_or_create_a_field_by( field_setting.id, field_setting.field_type) %>
|
3
3
|
<%= f.simple_fields_for "#{field_setting.field_type}s_attributes[]", current do |ff| %>
|
4
4
|
<%= render "binda/fieldable/form_item_#{field_setting.field_type}", f: f, ff: ff, field_setting: field_setting %>
|
@@ -18,7 +18,7 @@
|
|
18
18
|
data-id="<%= f.object.id %>"
|
19
19
|
data-params="id=<%= f.object.id %>">
|
20
20
|
<i class="fa fa-plus" aria-hidden="true"></i>
|
21
|
-
<%= t('binda.
|
21
|
+
<%= t('binda.field_group.new') %>
|
22
22
|
</a>
|
23
23
|
<p class="control-label clearfix">
|
24
24
|
<%= f.object.name %> <%= t('binda.field_group.plural') %>
|
@@ -17,6 +17,8 @@ module SimpleForm
|
|
17
17
|
html << " fileupload--preview--uploaded"
|
18
18
|
elsif options[:object].audio.present?
|
19
19
|
html << " fileupload--preview--uploaded fileupload--preview--hidden"
|
20
|
+
elsif options[:object].svg.present?
|
21
|
+
html << " fileupload--preview--uploaded\" style=\"background-image: url(#{options[:object].svg.url})"
|
20
22
|
end
|
21
23
|
|
22
24
|
# Add no-preview text
|
@@ -54,7 +56,7 @@ module SimpleForm
|
|
54
56
|
obj = options[:object]
|
55
57
|
url = options[:url]
|
56
58
|
html = '<a class="b-btn b-btn-outline-danger fileupload--remove-image-btn'
|
57
|
-
html << ' fileupload--remove-image-btn--hidden' unless obj.image.present? || obj.video.present? || obj.audio.present?
|
59
|
+
html << ' fileupload--remove-image-btn--hidden' unless obj.image.present? || obj.video.present? || obj.audio.present? || obj.svg.present?
|
58
60
|
html << '" href="'
|
59
61
|
html << url
|
60
62
|
html << '" data-method="delete" data-remote="true" data-confirm="'
|
@@ -81,32 +83,35 @@ module SimpleForm
|
|
81
83
|
obj = options[:object]
|
82
84
|
|
83
85
|
html = '<div class="fileupload--details'
|
84
|
-
html << ' fileupload--details--hidden' unless obj.image.present? || obj.video.present? || obj.audio.present?
|
86
|
+
html << ' fileupload--details--hidden' unless obj.image.present? || obj.video.present? || obj.audio.present? || obj.svg.present?
|
85
87
|
html << '"><p class="fileupload--name">'
|
86
88
|
html << "<strong>#{t 'binda.filename'}:</strong> "
|
87
89
|
html << '<span class="fileupload--filename">'
|
88
90
|
html << File.basename(obj.image.path).to_s if obj.image.present?
|
89
91
|
html << File.basename(obj.video.path).to_s if obj.video.present?
|
90
92
|
html << File.basename(obj.audio.path).to_s if obj.audio.present?
|
93
|
+
html << File.basename(obj.svg.path).to_s if obj.svg.present?
|
91
94
|
html << '</span></p>'
|
92
95
|
html << '<p class="fileupload--size">'
|
93
96
|
html << "<strong>#{t 'binda.filesize'}:</strong> "
|
94
97
|
html << '<span class="fileupload--filesize">'
|
95
98
|
html << bytes_to_megabytes(obj.file_size).to_s unless obj.file_size.blank?
|
96
99
|
html << 'MB</span></p>'
|
97
|
-
html << '<p class="fileupload--dimension">'
|
98
|
-
html << "<strong>#{t 'binda.filedimension'}:</strong> "
|
99
|
-
html << '<span class="fileupload--width">'
|
100
|
-
html << obj.file_width.round.to_s unless obj.file_width.blank?
|
101
|
-
html << '</span> x <span class="fileupload--height">'
|
102
|
-
html << obj.file_height.round.to_s unless obj.file_height.blank?
|
103
|
-
html << '</span> px</p>'
|
100
|
+
html << '<p class="fileupload--dimension">' unless obj.svg.present?
|
101
|
+
html << "<strong>#{t 'binda.filedimension'}:</strong> " unless obj.svg.present?
|
102
|
+
html << '<span class="fileupload--width">' unless obj.svg.present?
|
103
|
+
html << obj.file_width.round.to_s unless obj.file_width.blank? unless obj.svg.present?
|
104
|
+
html << '</span> x <span class="fileupload--height">' unless obj.svg.present?
|
105
|
+
html << obj.file_height.round.to_s unless obj.file_height.blank? || obj.svg.present?
|
106
|
+
html << '</span> px</p>' unless obj.svg.present?
|
104
107
|
html << '<p class="fileupload--previewlink"><a href="'
|
105
108
|
html << obj.video.url if obj.video.present?
|
106
109
|
html << obj.audio.url if obj.audio.present?
|
110
|
+
html << obj.svg.url if obj.svg.present?
|
107
111
|
html << '" target="_blank"><i class="fas fa-external-link-alt"></i> <strong>'
|
108
112
|
html << t('binda.filevideolink') if obj.class.name.demodulize == 'Video'
|
109
113
|
html << t('binda.fileaudiolink') if obj.class.name.demodulize == 'Audio'
|
114
|
+
html << t('binda.filesvglink') if obj.class.name.demodulize == 'Svg'
|
110
115
|
html << '</strong></a></p>'
|
111
116
|
|
112
117
|
html << '</div>'
|
@@ -119,7 +119,7 @@ SimpleForm.setup do |config|
|
|
119
119
|
b.optional :maxlength
|
120
120
|
b.optional :readonly
|
121
121
|
|
122
|
-
b.use :preview
|
122
|
+
b.use :preview
|
123
123
|
b.wrapper tag: 'div', class: 'fileupload--dashboard' do |bb|
|
124
124
|
bb.use :label, class: 'control-label b-btn b-btn-primary', wrap_with: { tag: 'div', class: 'control-label-wrap' }
|
125
125
|
bb.use :delete_button
|
data/config/locales/en.yml
CHANGED
@@ -59,6 +59,7 @@ en:
|
|
59
59
|
filedimension: Dimension
|
60
60
|
filevideolink: Preview video
|
61
61
|
fileaudiolink: Preview audio
|
62
|
+
filesvglink: Preview svg
|
62
63
|
select_placeholder: Select a option
|
63
64
|
new_item_in_repeater: New %{arg1} item
|
64
65
|
null_is_not_allowed: You need to select at least one choice
|
data/config/routes.rb
CHANGED
data/lib/binda/version.rb
CHANGED
@@ -15,7 +15,11 @@ module Binda
|
|
15
15
|
puts "Implement Binda settings"
|
16
16
|
puts
|
17
17
|
|
18
|
-
|
18
|
+
if Structure.find_by(slug: 'dashboard').nil?
|
19
|
+
dashboard_structure = Structure.create!(name: 'dashboard', slug: 'dashboard', instance_type: 'board')
|
20
|
+
else
|
21
|
+
dashboard_structure = Structure.find_by(slug: 'dashboard')
|
22
|
+
end
|
19
23
|
@dashboard = dashboard_structure.board
|
20
24
|
|
21
25
|
# By default each structure has a field group which will be used to store the default field settings
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: binda
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alessandro Barbieri
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-03-
|
11
|
+
date: 2018-03-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -680,6 +680,7 @@ files:
|
|
680
680
|
- app/controllers/binda/manage/users_controller.rb
|
681
681
|
- app/controllers/binda/repeaters_controller.rb
|
682
682
|
- app/controllers/binda/structures_controller.rb
|
683
|
+
- app/controllers/binda/svgs_controller.rb
|
683
684
|
- app/controllers/binda/users/audios_controller.rb
|
684
685
|
- app/controllers/binda/users/confirmations_controller.rb
|
685
686
|
- app/controllers/binda/users/omniauth_callbacks_controller.rb
|
@@ -708,6 +709,7 @@ files:
|
|
708
709
|
- app/models/binda/asset.rb
|
709
710
|
- app/models/binda/audio.rb
|
710
711
|
- app/models/binda/b.rb
|
712
|
+
- app/models/binda/binda.rb
|
711
713
|
- app/models/binda/board.rb
|
712
714
|
- app/models/binda/category.rb
|
713
715
|
- app/models/binda/checkbox.rb
|
@@ -726,6 +728,7 @@ files:
|
|
726
728
|
- app/models/binda/selection.rb
|
727
729
|
- app/models/binda/string.rb
|
728
730
|
- app/models/binda/structure.rb
|
731
|
+
- app/models/binda/svg.rb
|
729
732
|
- app/models/binda/text.rb
|
730
733
|
- app/models/binda/user.rb
|
731
734
|
- app/models/binda/video.rb
|
@@ -733,10 +736,21 @@ files:
|
|
733
736
|
- app/models/concerns/binda/deprecations.rb
|
734
737
|
- app/models/concerns/binda/field_uniqueness.rb
|
735
738
|
- app/models/concerns/binda/fieldable_association_helpers.rb
|
739
|
+
- app/models/concerns/binda/fieldable_association_helpers/fieldable_audio_helpers.rb
|
740
|
+
- app/models/concerns/binda/fieldable_association_helpers/fieldable_date_helpers.rb
|
741
|
+
- app/models/concerns/binda/fieldable_association_helpers/fieldable_image_helpers.rb
|
742
|
+
- app/models/concerns/binda/fieldable_association_helpers/fieldable_relation_helpers.rb
|
743
|
+
- app/models/concerns/binda/fieldable_association_helpers/fieldable_repeater_helpers.rb
|
744
|
+
- app/models/concerns/binda/fieldable_association_helpers/fieldable_selection_helpers.rb
|
745
|
+
- app/models/concerns/binda/fieldable_association_helpers/fieldable_string_helpers.rb
|
746
|
+
- app/models/concerns/binda/fieldable_association_helpers/fieldable_svg_helpers.rb
|
747
|
+
- app/models/concerns/binda/fieldable_association_helpers/fieldable_text_helpers.rb
|
748
|
+
- app/models/concerns/binda/fieldable_association_helpers/fieldable_video_helpers.rb
|
736
749
|
- app/models/concerns/binda/fieldable_associations.rb
|
737
750
|
- app/models/concerns/binda/fields.rb
|
738
751
|
- app/uploaders/binda/audio/audio_uploader.rb
|
739
752
|
- app/uploaders/binda/image/image_uploader.rb
|
753
|
+
- app/uploaders/binda/svg_uploader.rb
|
740
754
|
- app/uploaders/binda/video/video_uploader.rb
|
741
755
|
- app/views/binda/assets/_form.html.erb
|
742
756
|
- app/views/binda/assets/edit.html.erb
|
@@ -787,6 +801,7 @@ files:
|
|
787
801
|
- app/views/binda/fieldable/_form_item_repeater.html.erb
|
788
802
|
- app/views/binda/fieldable/_form_item_selections.html.erb
|
789
803
|
- app/views/binda/fieldable/_form_item_string.html.erb
|
804
|
+
- app/views/binda/fieldable/_form_item_svg.html.erb
|
790
805
|
- app/views/binda/fieldable/_form_item_text.html.erb
|
791
806
|
- app/views/binda/fieldable/_form_item_video.html.erb
|
792
807
|
- app/views/binda/fieldable/_form_section.html.erb
|