binco 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/MIT-LICENSE +20 -0
- data/README.md +100 -0
- data/Rakefile +34 -0
- data/app/assets/javascripts/binco.js +4 -0
- data/app/assets/javascripts/select2-rails.coffee +5 -0
- data/app/assets/stylesheets/binco.scss +9 -0
- data/app/helpers/binco/bootstrap_form_builder.rb +121 -0
- data/app/helpers/binco/bootstrap_form_helper.rb +14 -0
- data/app/helpers/binco/breadcrumbs_helper.rb +28 -0
- data/app/helpers/binco/button_helper.rb +41 -0
- data/app/helpers/binco/button_link_helper.rb +41 -0
- data/app/helpers/binco/modal_helper.rb +42 -0
- data/app/views/binco/_breadcrumb.html.erb +11 -0
- data/lib/binco.rb +2 -0
- data/lib/binco/engine.rb +18 -0
- data/lib/binco/version.rb +3 -0
- data/test/binco_test.rb +7 -0
- data/test/dummy/Rakefile +6 -0
- data/test/dummy/app/assets/javascripts/application.js +13 -0
- data/test/dummy/app/assets/stylesheets/application.css +15 -0
- data/test/dummy/app/controllers/application_controller.rb +5 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/views/layouts/application.html.erb +14 -0
- data/test/dummy/bin/bundle +3 -0
- data/test/dummy/bin/rails +4 -0
- data/test/dummy/bin/rake +4 -0
- data/test/dummy/bin/setup +29 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/config/application.rb +29 -0
- data/test/dummy/config/boot.rb +5 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +38 -0
- data/test/dummy/config/environments/production.rb +76 -0
- data/test/dummy/config/environments/test.rb +42 -0
- data/test/dummy/config/initializers/assets.rb +11 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/cookies_serializer.rb +3 -0
- data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/test/dummy/config/initializers/inflections.rb +16 -0
- data/test/dummy/config/initializers/mime_types.rb +4 -0
- data/test/dummy/config/initializers/session_store.rb +3 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +9 -0
- data/test/dummy/config/locales/en.yml +23 -0
- data/test/dummy/config/routes.rb +56 -0
- data/test/dummy/config/secrets.yml +22 -0
- data/test/dummy/public/404.html +67 -0
- data/test/dummy/public/422.html +67 -0
- data/test/dummy/public/500.html +66 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/test_helper.rb +17 -0
- metadata +206 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 174e159bcca99e63b3c550f15252312a83f224dc
|
4
|
+
data.tar.gz: 5c273c604bf98572a504cf6e4391f28436de2f6d
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 434fd2e4feea935bb9370be771d4fde2e8dd99b418e17ed97dc91a068f4e27536bf1c4b6c33df01cbbf8b7c9649da4cfb8e04cbeca5502cb5d1220421a73c5db
|
7
|
+
data.tar.gz: 6450918e1692b55a8bce1acf20b17f24012e913861e3d9adc1cdaf42d321511546d505328b79fd83dbedeeaf3029ecb0107afad73c5c4bc0d8a5a20c61dc6571
|
data/MIT-LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright 2015 vicocamacho
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,100 @@
|
|
1
|
+
# Binco
|
2
|
+
|
3
|
+
This is a wrapper for adding bootstrap to a project. By includinig this gem you'll add:
|
4
|
+
|
5
|
+
* [Bootstrap](https://github.com/twbs/bootstrap-sass)
|
6
|
+
* [Bootstrap Datepicker](https://github.com/Nerian/bootstrap-datepicker-rails)
|
7
|
+
* [Select2](https://github.com/argerim/select2-rails)
|
8
|
+
* Bootstrap Helpers
|
9
|
+
|
10
|
+
|
11
|
+
## Installation
|
12
|
+
|
13
|
+
To install simply include into Gemfile:
|
14
|
+
```
|
15
|
+
gem 'binco'
|
16
|
+
```
|
17
|
+
|
18
|
+
and run:
|
19
|
+
|
20
|
+
```
|
21
|
+
bundle install
|
22
|
+
```
|
23
|
+
|
24
|
+
In your application.scss add:
|
25
|
+
```
|
26
|
+
@include "binco"
|
27
|
+
```
|
28
|
+
|
29
|
+
In your application.js add:
|
30
|
+
```
|
31
|
+
//= require binco
|
32
|
+
```
|
33
|
+
|
34
|
+
#### Optional
|
35
|
+
For customization of datepicker make sure to include your locale js and send it as data attribute when creating a datepicker.
|
36
|
+
```
|
37
|
+
//= require bootstrap-datepicker/locales/bootstrap-datepicker.es.js
|
38
|
+
//= require select2_locale_es
|
39
|
+
```
|
40
|
+
|
41
|
+
|
42
|
+
## Usage
|
43
|
+
|
44
|
+
|
45
|
+
```erb
|
46
|
+
<%= bootstrap_form_for(@object) do |f| %>
|
47
|
+
<%= f.form_group do %>
|
48
|
+
<%= f.label :product_id %>
|
49
|
+
<%= f.collection_select :product_id, @products, :id, :name, class: 'special-select-class-if-needed' %>
|
50
|
+
<% end %>
|
51
|
+
|
52
|
+
<%= f.form_group do %>
|
53
|
+
<%= f.label :name %>
|
54
|
+
<%= f.number_field :name %>
|
55
|
+
<% end %>
|
56
|
+
|
57
|
+
<!-- select2 support -->
|
58
|
+
<%= f.form_group do %>
|
59
|
+
<%= f.label :product %>
|
60
|
+
<%= f.collection_select2 :product_id, @products, :name, :id %>
|
61
|
+
<% end %>
|
62
|
+
|
63
|
+
<!-- select2 support for checkboxes -->
|
64
|
+
<%= f.form_group do %>
|
65
|
+
<%= f.label :products %>
|
66
|
+
<%= f.collection_check_boxes2 :product_id, @products, :name, :id %>
|
67
|
+
<% end %>
|
68
|
+
|
69
|
+
<%= f.submit 'Great!' %>
|
70
|
+
<% end %>
|
71
|
+
```
|
72
|
+
|
73
|
+
### Modals
|
74
|
+
```erb
|
75
|
+
<%= modal 'filter-modal' do %>
|
76
|
+
<%= modal_header 'One fine title'%>
|
77
|
+
<%= modal_body do %>
|
78
|
+
One fine body
|
79
|
+
<% end %>
|
80
|
+
<%= modal_footer do %>
|
81
|
+
<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
|
82
|
+
<button type="button" class="btn btn-primary" data-dismiss="modal">Submit</button>
|
83
|
+
<% end %> <!-- end modal_footer -->
|
84
|
+
<% end %> <!-- end modal -->
|
85
|
+
```
|
86
|
+
|
87
|
+
### Breadcrumbs
|
88
|
+
In your layout render the partial wherever your like
|
89
|
+
```erb
|
90
|
+
<%= render 'binco/breadcrumb' %>
|
91
|
+
```
|
92
|
+
In your views, add an element to breadcrumb with:
|
93
|
+
```erb
|
94
|
+
<%= breadcrumb_add(title: 'new', url: pages_new_path) %>
|
95
|
+
```
|
96
|
+
Notice that first in first out. So be careful with the order.
|
97
|
+
|
98
|
+
|
99
|
+
|
100
|
+
This project rocks and uses MIT-LICENSE.
|
data/Rakefile
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
begin
|
2
|
+
require 'bundler/setup'
|
3
|
+
rescue LoadError
|
4
|
+
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
|
5
|
+
end
|
6
|
+
|
7
|
+
require 'rdoc/task'
|
8
|
+
|
9
|
+
RDoc::Task.new(:rdoc) do |rdoc|
|
10
|
+
rdoc.rdoc_dir = 'rdoc'
|
11
|
+
rdoc.title = 'Binco'
|
12
|
+
rdoc.options << '--line-numbers'
|
13
|
+
rdoc.rdoc_files.include('README.rdoc')
|
14
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
15
|
+
end
|
16
|
+
|
17
|
+
|
18
|
+
|
19
|
+
|
20
|
+
|
21
|
+
|
22
|
+
Bundler::GemHelper.install_tasks
|
23
|
+
|
24
|
+
require 'rake/testtask'
|
25
|
+
|
26
|
+
Rake::TestTask.new(:test) do |t|
|
27
|
+
t.libs << 'lib'
|
28
|
+
t.libs << 'test'
|
29
|
+
t.pattern = 'test/**/*_test.rb'
|
30
|
+
t.verbose = false
|
31
|
+
end
|
32
|
+
|
33
|
+
|
34
|
+
task default: :test
|
@@ -0,0 +1,121 @@
|
|
1
|
+
module Binco
|
2
|
+
class BootstrapFormBuilder < ActionView::Helpers::FormBuilder
|
3
|
+
def text_field(name, options = {})
|
4
|
+
options = add_class_to_options('form-control', options)
|
5
|
+
super name, options
|
6
|
+
end
|
7
|
+
|
8
|
+
def collection_check_boxes(method, collection, value_method, text_method, options = {}, html_options = {}, &block)
|
9
|
+
if block_given?
|
10
|
+
super(method, collection, value_method, text_method, options, html_options, &block)
|
11
|
+
else
|
12
|
+
super method, collection, value_method, text_method, options, html_options do |b|
|
13
|
+
group_tag class: 'checkbox' do
|
14
|
+
b.label do
|
15
|
+
b.check_box + b.text
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
# Since select2 support multiple choices (checkboxes)
|
23
|
+
def collection_check_boxes2(method, collection, value_method, text_method, options = {}, html_options = {})
|
24
|
+
options ||= {}
|
25
|
+
options[:multiple] = 'multiple'
|
26
|
+
collection_select2 method, collection, value_method, text_method, options, html_options
|
27
|
+
end
|
28
|
+
|
29
|
+
def collection_select(method, collection, value_method, text_method, options = {}, html_options = {})
|
30
|
+
html_options = add_class_to_options('form-control', options)
|
31
|
+
super method, collection, value_method, text_method, options, html_options
|
32
|
+
end
|
33
|
+
|
34
|
+
def collection_select2(method, collection, value_method, text_method, options = {}, html_options = {}, &block)
|
35
|
+
options = add_class_to_options('select2-rails', options)
|
36
|
+
collection_select(method, collection, value_method, text_method, options, html_options)
|
37
|
+
end
|
38
|
+
|
39
|
+
def email_field(name, options = {})
|
40
|
+
options = add_class_to_options('form-control', options)
|
41
|
+
super name, options
|
42
|
+
end
|
43
|
+
|
44
|
+
def number_field(name, options = {})
|
45
|
+
options = add_class_to_options('form-control', options)
|
46
|
+
super name, options
|
47
|
+
end
|
48
|
+
|
49
|
+
def password_field(name, options = {})
|
50
|
+
options = add_class_to_options('form-control', options)
|
51
|
+
super name, options
|
52
|
+
end
|
53
|
+
|
54
|
+
def datepicker(method, options = {})
|
55
|
+
options = add_data_to_options({ provide: 'datepicker' }, options)
|
56
|
+
text_field(method, options)
|
57
|
+
end
|
58
|
+
|
59
|
+
def text_area(method, options = {})
|
60
|
+
options = add_class_to_options('form-control', options)
|
61
|
+
super(method, options)
|
62
|
+
end
|
63
|
+
|
64
|
+
def radio_button(method, tag_value, options = {})
|
65
|
+
options = add_class_to_options('radio', options)
|
66
|
+
super method, tag_value, options
|
67
|
+
end
|
68
|
+
|
69
|
+
def check_box(method, options = {}, checked_value = "1", unchecked_value = "0")
|
70
|
+
options = add_class_to_options('checkbox', options)
|
71
|
+
super method, options, checked_value, unchecked_value
|
72
|
+
end
|
73
|
+
|
74
|
+
def submit(value = nil, options = {})
|
75
|
+
options = add_class_to_options('btn btn-success', options)
|
76
|
+
super value, options
|
77
|
+
end
|
78
|
+
|
79
|
+
def form_group(options = {}, &block)
|
80
|
+
options = add_class_to_options('form-group', options)
|
81
|
+
group_tag options, &block
|
82
|
+
end
|
83
|
+
|
84
|
+
def radio_group(options = {}, &block)
|
85
|
+
options = add_class_to_options('radio', options)
|
86
|
+
group_tag options, &block
|
87
|
+
end
|
88
|
+
|
89
|
+
def checkbox_group(options = {}, &block)
|
90
|
+
options = add_class_to_options('checkbox', options)
|
91
|
+
group_tag options, &block
|
92
|
+
end
|
93
|
+
|
94
|
+
def input_group(options = {}, &block)
|
95
|
+
options = add_class_to_options('input-group', options)
|
96
|
+
group_tag options, &block
|
97
|
+
end
|
98
|
+
|
99
|
+
private
|
100
|
+
|
101
|
+
# Add the specified class_name the the options hash
|
102
|
+
def add_class_to_options(class_name, options = {})
|
103
|
+
options[:class] ||= ''
|
104
|
+
options[:class] << " #{class_name}"
|
105
|
+
options
|
106
|
+
end
|
107
|
+
|
108
|
+
# Add the specified data-attributes the the options hash
|
109
|
+
def add_data_to_options(data, options = {})
|
110
|
+
options[:data] ||= {}
|
111
|
+
options[:data].merge! data
|
112
|
+
options
|
113
|
+
end
|
114
|
+
|
115
|
+
def group_tag(attributes = {}, &block)
|
116
|
+
@template.content_tag :div, attributes do
|
117
|
+
yield
|
118
|
+
end
|
119
|
+
end
|
120
|
+
end
|
121
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module Binco
|
2
|
+
module BootstrapFormHelper
|
3
|
+
def bootstrap_form_for(record, options = {}, &block)
|
4
|
+
options[:builder] = BootstrapFormBuilder
|
5
|
+
form_for(record, options, &block)
|
6
|
+
end
|
7
|
+
|
8
|
+
def bootstrap_form_tag(url_for_options = {}, options = {}, &block)
|
9
|
+
options[:acts_like_form_tag] = true
|
10
|
+
options[:url] = url_for_options
|
11
|
+
bootstrap_form_for("", options, &block)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module Binco
|
2
|
+
module BreadcrumbsHelper
|
3
|
+
|
4
|
+
def breadcrumb_default
|
5
|
+
@breadcrumb = []
|
6
|
+
if Binco.breadcrumb_before
|
7
|
+
@breadcrumb << Binco.breadcrumb_before
|
8
|
+
end
|
9
|
+
if Binco.breadcrumb_default
|
10
|
+
Binco.breadcrumb_default.each do |member|
|
11
|
+
@breadcrumb << { title: member[:title], url: member[:url] }
|
12
|
+
end
|
13
|
+
end
|
14
|
+
@breadcrumb
|
15
|
+
end
|
16
|
+
|
17
|
+
def breadcrumb
|
18
|
+
@breadcrumb ||= breadcrumb_default
|
19
|
+
end
|
20
|
+
|
21
|
+
def breadcrumb_add(options = {})
|
22
|
+
breadcrumb << options
|
23
|
+
end
|
24
|
+
|
25
|
+
private
|
26
|
+
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
module Binco
|
2
|
+
module ButtonHelper
|
3
|
+
def button(title, options = {})
|
4
|
+
options[:type] ||= :default
|
5
|
+
options[:class] ||= ''
|
6
|
+
options[:class] << ' ' if options[:class].length > 1
|
7
|
+
options[:class] << "btn btn-#{options[:type]}"
|
8
|
+
content_tag :button, title, options.except(:type)
|
9
|
+
end
|
10
|
+
|
11
|
+
def button_primary(title, options = {})
|
12
|
+
options[:type] = :primary
|
13
|
+
button(title, options)
|
14
|
+
end
|
15
|
+
|
16
|
+
def button_default(title, options = {})
|
17
|
+
options[:type] = :default
|
18
|
+
button(title, options)
|
19
|
+
end
|
20
|
+
|
21
|
+
def button_success(title, options = {})
|
22
|
+
options[:type] = :default
|
23
|
+
button(title, options)
|
24
|
+
end
|
25
|
+
|
26
|
+
def button_info(title, options = {})
|
27
|
+
options[:type] = :info
|
28
|
+
button(title, options)
|
29
|
+
end
|
30
|
+
|
31
|
+
def button_warning(title, options = {})
|
32
|
+
options[:type] = :warning
|
33
|
+
button(title, options)
|
34
|
+
end
|
35
|
+
|
36
|
+
def button_danger(title, options = {})
|
37
|
+
options[:type] = :warning
|
38
|
+
button(title, options)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
module Binco
|
2
|
+
module ButtonLinkHelper
|
3
|
+
def button_link_to(name = nil, options = nil, html_options = {}, &block)
|
4
|
+
html_options[:type] ||= :default
|
5
|
+
html_options[:class] ||= ''
|
6
|
+
html_options[:class] << ' ' if html_options[:class].length > 1
|
7
|
+
html_options[:class] << "btn btn-#{html_options[:type]}"
|
8
|
+
link_to(name, options, html_options.except(:type), &block)
|
9
|
+
end
|
10
|
+
|
11
|
+
def button_primary_link_to(name = nil, options = nil, html_options = {}, &block)
|
12
|
+
html_options[:type] = :primary
|
13
|
+
button_link_to(name, options, html_options, &block)
|
14
|
+
end
|
15
|
+
|
16
|
+
def button_default_link_to(name = nil, options = nil, html_options = {}, &block)
|
17
|
+
html_options[:type] = :default
|
18
|
+
button_link_to(name, options, html_options, &block)
|
19
|
+
end
|
20
|
+
|
21
|
+
def button_danger_link_to(name = nil, options = nil, html_options = {}, &block)
|
22
|
+
html_options[:type] = :danger
|
23
|
+
button_link_to(name, options, html_options, &block)
|
24
|
+
end
|
25
|
+
|
26
|
+
def button_warning_link_to(name = nil, options = nil, html_options = {}, &block)
|
27
|
+
html_options[:type] = :warning
|
28
|
+
button_link_to(name, options, html_options, &block)
|
29
|
+
end
|
30
|
+
|
31
|
+
def button_success_link_to(name = nil, options = nil, html_options = {}, &block)
|
32
|
+
html_options[:type] = :success
|
33
|
+
button_link_to(name, options, html_options, &block)
|
34
|
+
end
|
35
|
+
|
36
|
+
def button_info_link_to(name = nil, options = nil, html_options = {}, &block)
|
37
|
+
html_options[:type] = :info
|
38
|
+
button_link_to(name, options, html_options, &block)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
module Binco
|
2
|
+
module ModalHelper
|
3
|
+
def modal(id, &block)
|
4
|
+
content_tag :div, class: 'modal fade', tabindex: '-1', id: id do
|
5
|
+
content_tag :div, class: 'modal-dialog' do
|
6
|
+
content_tag :div, class: 'modal-content' do
|
7
|
+
yield
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def modal_header(title = nil, &block)
|
14
|
+
content_tag :div, class: 'modal-header' do
|
15
|
+
close = content_tag :button, class: 'close' do
|
16
|
+
content_tag(:span, '×'.html_safe, data: { dismiss: 'modal' } )
|
17
|
+
end
|
18
|
+
if block_given?
|
19
|
+
title = yield
|
20
|
+
else
|
21
|
+
title = content_tag(:h4 , title, class: 'modal-title')
|
22
|
+
end
|
23
|
+
|
24
|
+
"#{close}#{title}".html_safe
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def modal_body(options = {}, &block)
|
29
|
+
options[:class] ||= 'modal-body'
|
30
|
+
options[:class] << ' modal-body'
|
31
|
+
content_tag :div, options do
|
32
|
+
yield
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def modal_footer(&block)
|
37
|
+
content_tag :div, class: 'modal-footer' do
|
38
|
+
yield
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|