toronto 0.0.1
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/.gitignore +21 -0
- data/.travis.yml +8 -0
- data/Gemfile +28 -0
- data/MIT-LICENSE +20 -0
- data/README.md +179 -0
- data/Rakefile +147 -0
- data/lib/generators/toronto/install/install_generator.rb +68 -0
- data/lib/generators/toronto/install/templates/assets/stylesheets/bootstrap-variables.less +861 -0
- data/lib/generators/toronto/install/templates/assets/stylesheets/bootstrap-variables.scss +866 -0
- data/lib/generators/toronto/install/templates/assets/stylesheets/starter.css +22 -0
- data/lib/generators/toronto/install/templates/assets/stylesheets/starter.less +23 -0
- data/lib/generators/toronto/install/templates/assets/stylesheets/starter.scss +23 -0
- data/lib/generators/toronto/install/templates/config/initializers/locales.rb +4 -0
- data/lib/generators/toronto/install/templates/form_builders/form_builder/_form.html.erb +39 -0
- data/lib/generators/toronto/install/templates/form_builders/form_builder/_form.html.haml +26 -0
- data/lib/generators/toronto/install/templates/form_builders/form_builder/_form.html.slim +21 -0
- data/lib/generators/toronto/install/templates/helpers/menu_helper.rb +7 -0
- data/lib/generators/toronto/install/templates/layouts/starter.html.erb +57 -0
- data/lib/generators/toronto/install/templates/layouts/starter.html.haml +48 -0
- data/lib/generators/toronto/install/templates/layouts/starter.html.slim +53 -0
- data/lib/generators/toronto/install/templates/lib/rails/generators/haml/scaffold/scaffold_generator.rb +51 -0
- data/lib/generators/toronto/install/templates/lib/templates/erb/controller/view.html.erb +4 -0
- data/lib/generators/toronto/install/templates/lib/templates/erb/scaffold/edit.html.erb +13 -0
- data/lib/generators/toronto/install/templates/lib/templates/erb/scaffold/index.html.erb +33 -0
- data/lib/generators/toronto/install/templates/lib/templates/erb/scaffold/new.html.erb +9 -0
- data/lib/generators/toronto/install/templates/lib/templates/erb/scaffold/show.html.erb +19 -0
- data/lib/generators/toronto/install/templates/lib/templates/haml/controller/view.html.haml +3 -0
- data/lib/generators/toronto/install/templates/lib/templates/haml/scaffold/edit.html.haml +10 -0
- data/lib/generators/toronto/install/templates/lib/templates/haml/scaffold/en.yml +23 -0
- data/lib/generators/toronto/install/templates/lib/templates/haml/scaffold/fr.yml +23 -0
- data/lib/generators/toronto/install/templates/lib/templates/haml/scaffold/index.html.haml +30 -0
- data/lib/generators/toronto/install/templates/lib/templates/haml/scaffold/new.html.haml +7 -0
- data/lib/generators/toronto/install/templates/lib/templates/haml/scaffold/show.html.haml +18 -0
- data/lib/generators/toronto/install/templates/lib/templates/slim/controller/view.html.slim +5 -0
- data/lib/generators/toronto/install/templates/lib/templates/slim/scaffold/edit.html.slim +12 -0
- data/lib/generators/toronto/install/templates/lib/templates/slim/scaffold/index.html.slim +31 -0
- data/lib/generators/toronto/install/templates/lib/templates/slim/scaffold/new.html.slim +9 -0
- data/lib/generators/toronto/install/templates/lib/templates/slim/scaffold/show.html.slim +16 -0
- data/lib/toronto/version.rb +3 -0
- data/lib/toronto.rb +22 -0
- data/readme-template.md.erb +163 -0
- data/test/dummy/Rakefile +7 -0
- data/test/dummy/app/assets/javascripts/application.js +13 -0
- data/test/dummy/app/assets/stylesheets/application.css +13 -0
- data/test/dummy/config/application.rb +68 -0
- data/test/dummy/config/boot.rb +6 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/test.rb +39 -0
- data/test/dummy/config.ru +4 -0
- data/test/generators/bootstrap/install_generator_test.rb +104 -0
- data/test/test_helper.rb +7 -0
- data/toronto.gemspec +30 -0
- data/vendor/assets/fonts/bootstrap/glyphicons-halflings-regular.eot +0 -0
- data/vendor/assets/fonts/bootstrap/glyphicons-halflings-regular.svg +288 -0
- data/vendor/assets/fonts/bootstrap/glyphicons-halflings-regular.ttf +0 -0
- data/vendor/assets/fonts/bootstrap/glyphicons-halflings-regular.woff +0 -0
- data/vendor/assets/fonts/bootstrap/glyphicons-halflings-regular.woff2 +0 -0
- data/vendor/assets/javascripts/bootstrap/affix.js +162 -0
- data/vendor/assets/javascripts/bootstrap/alert.js +94 -0
- data/vendor/assets/javascripts/bootstrap/button.js +116 -0
- data/vendor/assets/javascripts/bootstrap/carousel.js +237 -0
- data/vendor/assets/javascripts/bootstrap/collapse.js +211 -0
- data/vendor/assets/javascripts/bootstrap/dropdown.js +161 -0
- data/vendor/assets/javascripts/bootstrap/modal.js +339 -0
- data/vendor/assets/javascripts/bootstrap/popover.js +108 -0
- data/vendor/assets/javascripts/bootstrap/scrollspy.js +172 -0
- data/vendor/assets/javascripts/bootstrap/tab.js +153 -0
- data/vendor/assets/javascripts/bootstrap/tooltip.js +476 -0
- data/vendor/assets/javascripts/bootstrap/transition.js +59 -0
- data/vendor/assets/javascripts/bootstrap.js +12 -0
- data/vendor/assets/stylesheets/bootstrap.css.erb +6584 -0
- data/vendor/assets/stylesheets/bootstrap.css.map +1 -0
- data/vendor/twitter/bootstrap/less/alerts.less +73 -0
- data/vendor/twitter/bootstrap/less/badges.less +66 -0
- data/vendor/twitter/bootstrap/less/bootstrap.less +50 -0
- data/vendor/twitter/bootstrap/less/breadcrumbs.less +26 -0
- data/vendor/twitter/bootstrap/less/button-groups.less +243 -0
- data/vendor/twitter/bootstrap/less/buttons.less +160 -0
- data/vendor/twitter/bootstrap/less/carousel.less +269 -0
- data/vendor/twitter/bootstrap/less/close.less +34 -0
- data/vendor/twitter/bootstrap/less/code.less +69 -0
- data/vendor/twitter/bootstrap/less/component-animations.less +33 -0
- data/vendor/twitter/bootstrap/less/dropdowns.less +214 -0
- data/vendor/twitter/bootstrap/less/forms.less +574 -0
- data/vendor/twitter/bootstrap/less/glyphicons.less +305 -0
- data/vendor/twitter/bootstrap/less/grid.less +84 -0
- data/vendor/twitter/bootstrap/less/input-groups.less +166 -0
- data/vendor/twitter/bootstrap/less/jumbotron.less +50 -0
- data/vendor/twitter/bootstrap/less/labels.less +64 -0
- data/vendor/twitter/bootstrap/less/list-group.less +124 -0
- data/vendor/twitter/bootstrap/less/media.less +61 -0
- data/vendor/twitter/bootstrap/less/mixins/alerts.less +14 -0
- data/vendor/twitter/bootstrap/less/mixins/background-variant.less +8 -0
- data/vendor/twitter/bootstrap/less/mixins/border-radius.less +18 -0
- data/vendor/twitter/bootstrap/less/mixins/buttons.less +52 -0
- data/vendor/twitter/bootstrap/less/mixins/center-block.less +7 -0
- data/vendor/twitter/bootstrap/less/mixins/clearfix.less +22 -0
- data/vendor/twitter/bootstrap/less/mixins/forms.less +85 -0
- data/vendor/twitter/bootstrap/less/mixins/gradients.less +59 -0
- data/vendor/twitter/bootstrap/less/mixins/grid-framework.less +91 -0
- data/vendor/twitter/bootstrap/less/mixins/grid.less +122 -0
- data/vendor/twitter/bootstrap/less/mixins/hide-text.less +21 -0
- data/vendor/twitter/bootstrap/less/mixins/image.less +33 -0
- data/vendor/twitter/bootstrap/less/mixins/labels.less +12 -0
- data/vendor/twitter/bootstrap/less/mixins/list-group.less +29 -0
- data/vendor/twitter/bootstrap/less/mixins/nav-divider.less +10 -0
- data/vendor/twitter/bootstrap/less/mixins/nav-vertical-align.less +9 -0
- data/vendor/twitter/bootstrap/less/mixins/opacity.less +8 -0
- data/vendor/twitter/bootstrap/less/mixins/pagination.less +23 -0
- data/vendor/twitter/bootstrap/less/mixins/panels.less +24 -0
- data/vendor/twitter/bootstrap/less/mixins/progress-bar.less +10 -0
- data/vendor/twitter/bootstrap/less/mixins/reset-filter.less +8 -0
- data/vendor/twitter/bootstrap/less/mixins/resize.less +6 -0
- data/vendor/twitter/bootstrap/less/mixins/responsive-visibility.less +15 -0
- data/vendor/twitter/bootstrap/less/mixins/size.less +10 -0
- data/vendor/twitter/bootstrap/less/mixins/tab-focus.less +9 -0
- data/vendor/twitter/bootstrap/less/mixins/table-row.less +28 -0
- data/vendor/twitter/bootstrap/less/mixins/text-emphasis.less +8 -0
- data/vendor/twitter/bootstrap/less/mixins/text-overflow.less +8 -0
- data/vendor/twitter/bootstrap/less/mixins/vendor-prefixes.less +227 -0
- data/vendor/twitter/bootstrap/less/mixins.less +39 -0
- data/vendor/twitter/bootstrap/less/modals.less +150 -0
- data/vendor/twitter/bootstrap/less/navbar.less +660 -0
- data/vendor/twitter/bootstrap/less/navs.less +242 -0
- data/vendor/twitter/bootstrap/less/normalize.less +427 -0
- data/vendor/twitter/bootstrap/less/pager.less +54 -0
- data/vendor/twitter/bootstrap/less/pagination.less +88 -0
- data/vendor/twitter/bootstrap/less/panels.less +265 -0
- data/vendor/twitter/bootstrap/less/popovers.less +135 -0
- data/vendor/twitter/bootstrap/less/print.less +107 -0
- data/vendor/twitter/bootstrap/less/progress-bars.less +87 -0
- data/vendor/twitter/bootstrap/less/responsive-embed.less +35 -0
- data/vendor/twitter/bootstrap/less/responsive-utilities.less +194 -0
- data/vendor/twitter/bootstrap/less/scaffolding.less +162 -0
- data/vendor/twitter/bootstrap/less/tables.less +234 -0
- data/vendor/twitter/bootstrap/less/theme.less +273 -0
- data/vendor/twitter/bootstrap/less/thumbnails.less +36 -0
- data/vendor/twitter/bootstrap/less/tooltip.less +102 -0
- data/vendor/twitter/bootstrap/less/type.less +302 -0
- data/vendor/twitter/bootstrap/less/utilities.less +55 -0
- data/vendor/twitter/bootstrap/less/variables.less +861 -0
- data/vendor/twitter/bootstrap/less/wells.less +29 -0
- data/vendor/twitter/bootstrap/sass/_bootstrap-compass.scss +9 -0
- data/vendor/twitter/bootstrap/sass/_bootstrap-mincer.scss +19 -0
- data/vendor/twitter/bootstrap/sass/_bootstrap-sprockets.scss +9 -0
- data/vendor/twitter/bootstrap/sass/_bootstrap.scss +50 -0
- data/vendor/twitter/bootstrap/sass/bootstrap/_alerts.scss +73 -0
- data/vendor/twitter/bootstrap/sass/bootstrap/_badges.scss +68 -0
- data/vendor/twitter/bootstrap/sass/bootstrap/_breadcrumbs.scss +26 -0
- data/vendor/twitter/bootstrap/sass/bootstrap/_button-groups.scss +243 -0
- data/vendor/twitter/bootstrap/sass/bootstrap/_buttons.scss +160 -0
- data/vendor/twitter/bootstrap/sass/bootstrap/_carousel.scss +269 -0
- data/vendor/twitter/bootstrap/sass/bootstrap/_close.scss +36 -0
- data/vendor/twitter/bootstrap/sass/bootstrap/_code.scss +69 -0
- data/vendor/twitter/bootstrap/sass/bootstrap/_component-animations.scss +37 -0
- data/vendor/twitter/bootstrap/sass/bootstrap/_dropdowns.scss +214 -0
- data/vendor/twitter/bootstrap/sass/bootstrap/_forms.scss +578 -0
- data/vendor/twitter/bootstrap/sass/bootstrap/_glyphicons.scss +305 -0
- data/vendor/twitter/bootstrap/sass/bootstrap/_grid.scss +84 -0
- data/vendor/twitter/bootstrap/sass/bootstrap/_input-groups.scss +166 -0
- data/vendor/twitter/bootstrap/sass/bootstrap/_jumbotron.scss +50 -0
- data/vendor/twitter/bootstrap/sass/bootstrap/_labels.scss +66 -0
- data/vendor/twitter/bootstrap/sass/bootstrap/_list-group.scss +124 -0
- data/vendor/twitter/bootstrap/sass/bootstrap/_media.scss +61 -0
- data/vendor/twitter/bootstrap/sass/bootstrap/_mixins.scss +39 -0
- data/vendor/twitter/bootstrap/sass/bootstrap/_modals.scss +150 -0
- data/vendor/twitter/bootstrap/sass/bootstrap/_navbar.scss +662 -0
- data/vendor/twitter/bootstrap/sass/bootstrap/_navs.scss +242 -0
- data/vendor/twitter/bootstrap/sass/bootstrap/_normalize.scss +427 -0
- data/vendor/twitter/bootstrap/sass/bootstrap/_pager.scss +54 -0
- data/vendor/twitter/bootstrap/sass/bootstrap/_pagination.scss +88 -0
- data/vendor/twitter/bootstrap/sass/bootstrap/_panels.scss +265 -0
- data/vendor/twitter/bootstrap/sass/bootstrap/_popovers.scss +135 -0
- data/vendor/twitter/bootstrap/sass/bootstrap/_print.scss +107 -0
- data/vendor/twitter/bootstrap/sass/bootstrap/_progress-bars.scss +87 -0
- data/vendor/twitter/bootstrap/sass/bootstrap/_responsive-embed.scss +35 -0
- data/vendor/twitter/bootstrap/sass/bootstrap/_responsive-utilities.scss +177 -0
- data/vendor/twitter/bootstrap/sass/bootstrap/_scaffolding.scss +162 -0
- data/vendor/twitter/bootstrap/sass/bootstrap/_tables.scss +234 -0
- data/vendor/twitter/bootstrap/sass/bootstrap/_theme.scss +273 -0
- data/vendor/twitter/bootstrap/sass/bootstrap/_thumbnails.scss +38 -0
- data/vendor/twitter/bootstrap/sass/bootstrap/_tooltip.scss +102 -0
- data/vendor/twitter/bootstrap/sass/bootstrap/_type.scss +298 -0
- data/vendor/twitter/bootstrap/sass/bootstrap/_utilities.scss +55 -0
- data/vendor/twitter/bootstrap/sass/bootstrap/_variables.scss +866 -0
- data/vendor/twitter/bootstrap/sass/bootstrap/_wells.scss +29 -0
- data/vendor/twitter/bootstrap/sass/bootstrap/mixins/_alerts.scss +14 -0
- data/vendor/twitter/bootstrap/sass/bootstrap/mixins/_background-variant.scss +11 -0
- data/vendor/twitter/bootstrap/sass/bootstrap/mixins/_border-radius.scss +18 -0
- data/vendor/twitter/bootstrap/sass/bootstrap/mixins/_buttons.scss +52 -0
- data/vendor/twitter/bootstrap/sass/bootstrap/mixins/_center-block.scss +7 -0
- data/vendor/twitter/bootstrap/sass/bootstrap/mixins/_clearfix.scss +22 -0
- data/vendor/twitter/bootstrap/sass/bootstrap/mixins/_forms.scss +88 -0
- data/vendor/twitter/bootstrap/sass/bootstrap/mixins/_gradients.scss +58 -0
- data/vendor/twitter/bootstrap/sass/bootstrap/mixins/_grid-framework.scss +81 -0
- data/vendor/twitter/bootstrap/sass/bootstrap/mixins/_grid.scss +122 -0
- data/vendor/twitter/bootstrap/sass/bootstrap/mixins/_hide-text.scss +21 -0
- data/vendor/twitter/bootstrap/sass/bootstrap/mixins/_image.scss +33 -0
- data/vendor/twitter/bootstrap/sass/bootstrap/mixins/_labels.scss +12 -0
- data/vendor/twitter/bootstrap/sass/bootstrap/mixins/_list-group.scss +31 -0
- data/vendor/twitter/bootstrap/sass/bootstrap/mixins/_nav-divider.scss +10 -0
- data/vendor/twitter/bootstrap/sass/bootstrap/mixins/_nav-vertical-align.scss +9 -0
- data/vendor/twitter/bootstrap/sass/bootstrap/mixins/_opacity.scss +8 -0
- data/vendor/twitter/bootstrap/sass/bootstrap/mixins/_pagination.scss +23 -0
- data/vendor/twitter/bootstrap/sass/bootstrap/mixins/_panels.scss +24 -0
- data/vendor/twitter/bootstrap/sass/bootstrap/mixins/_progress-bar.scss +10 -0
- data/vendor/twitter/bootstrap/sass/bootstrap/mixins/_reset-filter.scss +8 -0
- data/vendor/twitter/bootstrap/sass/bootstrap/mixins/_resize.scss +6 -0
- data/vendor/twitter/bootstrap/sass/bootstrap/mixins/_responsive-visibility.scss +21 -0
- data/vendor/twitter/bootstrap/sass/bootstrap/mixins/_size.scss +10 -0
- data/vendor/twitter/bootstrap/sass/bootstrap/mixins/_tab-focus.scss +9 -0
- data/vendor/twitter/bootstrap/sass/bootstrap/mixins/_table-row.scss +28 -0
- data/vendor/twitter/bootstrap/sass/bootstrap/mixins/_text-emphasis.scss +11 -0
- data/vendor/twitter/bootstrap/sass/bootstrap/mixins/_text-overflow.scss +8 -0
- data/vendor/twitter/bootstrap/sass/bootstrap/mixins/_vendor-prefixes.scss +222 -0
- metadata +312 -0
@@ -0,0 +1,22 @@
|
|
1
|
+
/*
|
2
|
+
*= require bootstrap
|
3
|
+
*= require_self
|
4
|
+
*/
|
5
|
+
|
6
|
+
body {
|
7
|
+
padding-top: 60px;
|
8
|
+
}
|
9
|
+
|
10
|
+
.page-header a.btn {
|
11
|
+
float: right;
|
12
|
+
}
|
13
|
+
|
14
|
+
.page-header a.btn + a.btn {
|
15
|
+
margin-right: 8px;
|
16
|
+
}
|
17
|
+
|
18
|
+
input[type="radio"], input[type="checkbox"] {
|
19
|
+
width: initial;
|
20
|
+
height: initial;
|
21
|
+
margin-top: 7px;
|
22
|
+
}
|
@@ -0,0 +1,23 @@
|
|
1
|
+
@import "bootstrap";
|
2
|
+
|
3
|
+
body {
|
4
|
+
padding-top: @navbar-height + 10px;
|
5
|
+
}
|
6
|
+
|
7
|
+
@import "bootstrap-variables";
|
8
|
+
|
9
|
+
.page-header {
|
10
|
+
a.btn {
|
11
|
+
float: right;
|
12
|
+
}
|
13
|
+
|
14
|
+
a.btn + a.btn {
|
15
|
+
margin-right: 8px;
|
16
|
+
}
|
17
|
+
}
|
18
|
+
|
19
|
+
input[type="radio"], input[type="checkbox"] {
|
20
|
+
width: initial;
|
21
|
+
height: initial;
|
22
|
+
margin-top: 7px;
|
23
|
+
}
|
@@ -0,0 +1,23 @@
|
|
1
|
+
@import "bootstrap-variables.scss";
|
2
|
+
@import "bootstrap-sprockets.scss";
|
3
|
+
@import "bootstrap.scss";
|
4
|
+
|
5
|
+
body {
|
6
|
+
padding-top: $navbar-height + 10px;
|
7
|
+
}
|
8
|
+
|
9
|
+
.page-header {
|
10
|
+
a.btn {
|
11
|
+
float: right;
|
12
|
+
}
|
13
|
+
|
14
|
+
a.btn + a.btn {
|
15
|
+
margin-right: 8px;
|
16
|
+
}
|
17
|
+
}
|
18
|
+
|
19
|
+
input[type="radio"], input[type="checkbox"] {
|
20
|
+
width: initial;
|
21
|
+
height: initial;
|
22
|
+
margin-top: 7px;
|
23
|
+
}
|
@@ -0,0 +1,39 @@
|
|
1
|
+
<%%= form_for(@<%= singular_table_name %>, html: { class: "form-horizontal", role: "form" }) do |f| %>
|
2
|
+
<%% if @<%= singular_table_name %>.errors.any? %>
|
3
|
+
<div class="alert alert-danger alert-dismissable" role="alert">
|
4
|
+
<button type="button" class="close" data-dismiss="alert"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button>
|
5
|
+
<h4><%%= pluralize(@<%= singular_table_name %>.errors.count, "error") %> prohibited this <%= singular_table_name %> from being saved:</h4>
|
6
|
+
|
7
|
+
<ul>
|
8
|
+
<%% @<%= singular_table_name %>.errors.full_messages.each do |msg| %>
|
9
|
+
<li><%%= msg %></li>
|
10
|
+
<%% end %>
|
11
|
+
</ul>
|
12
|
+
</div>
|
13
|
+
<%% end %>
|
14
|
+
|
15
|
+
<% attributes.each do |attribute| -%>
|
16
|
+
<div class="form-group">
|
17
|
+
<% if attribute.field_type == :check_box %>
|
18
|
+
<div class="col-sm-offset-2 col-sm-10">
|
19
|
+
<div class="checkbox">
|
20
|
+
<label>
|
21
|
+
<%%= f.<%= attribute.field_type %> :<%= attribute.name %> %>
|
22
|
+
<%= attribute.human_name %>
|
23
|
+
</label>
|
24
|
+
</div>
|
25
|
+
</div>
|
26
|
+
<% else %>
|
27
|
+
<%%= f.label :<%= attribute.name %>, class: "col-sm-2 control-label" %>
|
28
|
+
<div class="col-sm-10">
|
29
|
+
<%%= f.<%= attribute.field_type %> :<%= attribute.name %>, class: "form-control" %>
|
30
|
+
</div>
|
31
|
+
<% end %>
|
32
|
+
</div>
|
33
|
+
<% end -%>
|
34
|
+
<div class="form-group">
|
35
|
+
<div class="col-sm-offset-2 col-sm-10">
|
36
|
+
<%%= f.submit class: "btn btn-primary" %>
|
37
|
+
</div>
|
38
|
+
</div>
|
39
|
+
<%% end %>
|
@@ -0,0 +1,26 @@
|
|
1
|
+
= form_for @<%= singular_table_name %>, html: { class: "form-horizontal", role: "form" } do |f|
|
2
|
+
-if @<%= singular_table_name %>.errors.any?
|
3
|
+
.alert.alert-danger.alert-dismissable{role: "alert"}
|
4
|
+
%button.close{type: "button", data: {dismiss: "alert"} }
|
5
|
+
%span{aria: {hidden: "true"} } ×
|
6
|
+
%span.sr-only Close
|
7
|
+
%h4= "#{pluralize(@<%= singular_table_name %>.errors.count, "error")} prohibited this <%= singular_table_name %> from being saved:"
|
8
|
+
|
9
|
+
%ul
|
10
|
+
- @<%= singular_table_name %>.errors.full_messages.each do |msg|
|
11
|
+
%li= msg
|
12
|
+
|
13
|
+
<% for attribute in attributes -%>
|
14
|
+
.form-group
|
15
|
+
= f.label :<%= attribute.name %>, class: 'col-sm-2 control-label'
|
16
|
+
.col-sm-10
|
17
|
+
<% if attribute.type == :references %>
|
18
|
+
= f.collection_select :<%= attribute.name %>_id, <%= attribute.name.camelize %>.all, :id, :name, prompt: true
|
19
|
+
<% else %>
|
20
|
+
= f.<%= attribute.field_type %> :<%= attribute.name %>, class: 'form-control'
|
21
|
+
<% end %>
|
22
|
+
|
23
|
+
<% end -%>
|
24
|
+
.form-group
|
25
|
+
.col-sm-offset-2.col-sm-10
|
26
|
+
= f.submit class: 'btn btn-primary', value: t( '.submit' ), 'data-disable-with' => t( '.submit' )
|
@@ -0,0 +1,21 @@
|
|
1
|
+
= form_for(@<%= singular_table_name %>, html: { class: "form-horizontal", role: "form" }) do |f|
|
2
|
+
- if @<%= singular_table_name %>.errors.any?
|
3
|
+
.alert.alert-danger.alert-dismissable role="alert"
|
4
|
+
button.close type="button" data-dismiss="alert"
|
5
|
+
span aria-hidden="true"
|
6
|
+
| ×
|
7
|
+
span.sr-only
|
8
|
+
| Close
|
9
|
+
h4= "#{pluralize(@<%= singular_table_name %>.errors.count,"error")} prohibited this <%= singular_table_name %> from being saved:"
|
10
|
+
ul
|
11
|
+
- @<%= singular_table_name %>.errors.full_messages.each do |msg|
|
12
|
+
li= msg
|
13
|
+
<%- attributes.each do |attribute| -%>
|
14
|
+
.form-group
|
15
|
+
= f.label :<%= attribute.name %>, class: "col-sm-2 control-label"
|
16
|
+
.col-sm-10
|
17
|
+
= f.<%= attribute.field_type %> :<%= attribute.name %>, class: "form-control"
|
18
|
+
<%- end -%>
|
19
|
+
.form-group
|
20
|
+
.col-sm-offset-2.col-sm-10
|
21
|
+
= f.submit class: "btn btn-primary"
|
@@ -0,0 +1,57 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta charset="utf-8">
|
5
|
+
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
6
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
7
|
+
<meta name="description" content="">
|
8
|
+
<meta name="author" content="">
|
9
|
+
<title>Starter Template for Bootstrap</title>
|
10
|
+
|
11
|
+
<!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
|
12
|
+
<!--[if lt IE 9]>
|
13
|
+
<%%= javascript_include_tag "https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js", "https://oss.maxcdn.com/respond/1.4.2/respond.min.js" %>
|
14
|
+
<![endif]-->
|
15
|
+
|
16
|
+
<%- if options[:skip_turbolinks] -%>
|
17
|
+
<%%= stylesheet_link_tag 'application', media: 'all' %>
|
18
|
+
<%%= javascript_include_tag 'application' %>
|
19
|
+
<%- else -%>
|
20
|
+
<%%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %>
|
21
|
+
<%%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
|
22
|
+
<%- end -%>
|
23
|
+
<%%= csrf_meta_tags %>
|
24
|
+
</head>
|
25
|
+
<body>
|
26
|
+
<nav class="navbar navbar-inverse navbar-fixed-top" role="navigation">
|
27
|
+
<div class="container">
|
28
|
+
<div class="navbar-header">
|
29
|
+
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
|
30
|
+
<span class="sr-only">Toggle navigation</span>
|
31
|
+
<span class="icon-bar"></span>
|
32
|
+
<span class="icon-bar"></span>
|
33
|
+
<span class="icon-bar"></span>
|
34
|
+
</button>
|
35
|
+
<%%= link_to "Project name", "#", class: "navbar-brand" %>
|
36
|
+
</div>
|
37
|
+
<div id="navbar" class="collapse navbar-collapse">
|
38
|
+
<ul class="nav navbar-nav">
|
39
|
+
<li class="active"><a href="#">Home</a></li>
|
40
|
+
<li><a href="#about">About</a></li>
|
41
|
+
<li><a href="#contact">Contact</a></li>
|
42
|
+
</ul>
|
43
|
+
</div>
|
44
|
+
</div>
|
45
|
+
</nav>
|
46
|
+
<div class="container">
|
47
|
+
<%% flash.each do |name, msg| %>
|
48
|
+
<%%= content_tag :div, class: "alert alert-#{ name == :error ? "danger" : "success" } alert-dismissable", role: "alert" do %>
|
49
|
+
<button type="button" class="close" data-dismiss="alert"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button>
|
50
|
+
<%%= msg %>
|
51
|
+
<%% end %>
|
52
|
+
<%% end %>
|
53
|
+
|
54
|
+
<%%= yield %>
|
55
|
+
</div>
|
56
|
+
</body>
|
57
|
+
</html>
|
@@ -0,0 +1,48 @@
|
|
1
|
+
!!!
|
2
|
+
%html
|
3
|
+
%head
|
4
|
+
%meta{charset: 'utf-8' }
|
5
|
+
%meta{content: 'IE=edge', 'http-equiv' => 'X-UA-Compatible' }
|
6
|
+
%meta{content: 'width=device-width, initial-scale=1', name: 'viewport' }
|
7
|
+
%meta{content: '', name: 'description' }
|
8
|
+
%meta{content: '', name: 'author' }
|
9
|
+
%title Starter Template for Bootstrap
|
10
|
+
|
11
|
+
/ HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries
|
12
|
+
/[if lt IE 9]
|
13
|
+
= javascript_include_tag 'https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js', 'https://oss.maxcdn.com/respond/1.4.2/respond.min.js'
|
14
|
+
|
15
|
+
<%- if options[:skip_turbolinks] -%>
|
16
|
+
= stylesheet_link_tag 'application', media: 'all'
|
17
|
+
= javascript_include_tag 'application'
|
18
|
+
<%- else -%>
|
19
|
+
= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true
|
20
|
+
= javascript_include_tag 'application', 'data-turbolinks-track' => true
|
21
|
+
<%- end -%>
|
22
|
+
= csrf_meta_tags
|
23
|
+
%body
|
24
|
+
%nav.navbar.navbar-inverse.navbar-fixed-top{role: 'navigation'}
|
25
|
+
.container
|
26
|
+
.navbar-header
|
27
|
+
%button.navbar-toggle.collapsed{type: 'button', data: {toggle: 'collapse', target: '#navbar'}, aria: {expanded: 'false', controls: 'navbar'} }
|
28
|
+
%span.sr-only Toggle navigation
|
29
|
+
%span.icon-bar
|
30
|
+
%span.icon-bar
|
31
|
+
%span.icon-bar
|
32
|
+
= link_to "Project name", "#", class: "navbar-brand"
|
33
|
+
#navbar.collapse.navbar-collapse
|
34
|
+
%ul.nav.navbar-nav
|
35
|
+
%li.active
|
36
|
+
= nav_link( 'Home', '#' )
|
37
|
+
%li
|
38
|
+
= nav_link( 'About', '#about' )
|
39
|
+
%li
|
40
|
+
= nav_link( 'Contact', '#contact' )
|
41
|
+
.container
|
42
|
+
- flash.each do |name, msg|
|
43
|
+
= content_tag :div, class: "alert alert-#{name == :error ? 'danger' : 'success' } alert-dismissable", role: 'alert' do
|
44
|
+
%button.close{type: 'button', data: {dismiss: 'alert'} }
|
45
|
+
%span{aria: {hidden: 'true'} } ×
|
46
|
+
%span.sr-only Close
|
47
|
+
= msg
|
48
|
+
= yield
|
@@ -0,0 +1,53 @@
|
|
1
|
+
doctype html
|
2
|
+
html
|
3
|
+
head
|
4
|
+
meta charset="utf-8"
|
5
|
+
meta http-equiv="X-UA-Compatible" content="IE=edge"
|
6
|
+
meta name="viewport" content="width=device-width, initial-scale=1"
|
7
|
+
meta name="description" content=""
|
8
|
+
meta name="author" content=""
|
9
|
+
title
|
10
|
+
| Starter Template for Bootstrap
|
11
|
+
/! HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries
|
12
|
+
/[if lt IE 9]
|
13
|
+
= javascript_include_tag "https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js", "https://oss.maxcdn.com/respond/1.4.2/respond.min.js"
|
14
|
+
<%- if options[:skip_turbolinks] -%>
|
15
|
+
= stylesheet_link_tag 'application', media: 'all'
|
16
|
+
= javascript_include_tag 'application'
|
17
|
+
<%- else -%>
|
18
|
+
= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true
|
19
|
+
= javascript_include_tag 'application', 'data-turbolinks-track' => true
|
20
|
+
<%- end -%>
|
21
|
+
= csrf_meta_tags
|
22
|
+
body
|
23
|
+
nav.navbar.navbar-inverse.navbar-fixed-top role="navigation"
|
24
|
+
.container
|
25
|
+
.navbar-header
|
26
|
+
button.navbar-toggle.collapsed type="button" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar"
|
27
|
+
span.sr-only
|
28
|
+
| Toggle navigation
|
29
|
+
span.icon-bar
|
30
|
+
span.icon-bar
|
31
|
+
span.icon-bar
|
32
|
+
= link_to "Project name", "#", class: "navbar-brand"
|
33
|
+
#navbar.collapse.navbar-collapse
|
34
|
+
ul.nav.navbar-nav
|
35
|
+
li.active
|
36
|
+
a href="#"
|
37
|
+
| Home
|
38
|
+
li
|
39
|
+
a href="#about"
|
40
|
+
| About
|
41
|
+
li
|
42
|
+
a href="#contact"
|
43
|
+
| Contact
|
44
|
+
.container
|
45
|
+
- flash.each do |name, msg|
|
46
|
+
= content_tag :div, class: "alert alert-#{ name == :error ? "danger" : "success" } alert-dismissable", role: "alert" do
|
47
|
+
button.close type="button" data-dismiss="alert"
|
48
|
+
span aria-hidden="true"
|
49
|
+
| ×
|
50
|
+
span.sr-only
|
51
|
+
| Close
|
52
|
+
= msg
|
53
|
+
= yield
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'rails/generators/erb/scaffold/scaffold_generator'
|
2
|
+
require 'yaml'
|
3
|
+
|
4
|
+
module Haml
|
5
|
+
module Generators
|
6
|
+
class ScaffoldGenerator < Erb::Generators::ScaffoldGenerator
|
7
|
+
source_root File.expand_path("../templates", __FILE__)
|
8
|
+
|
9
|
+
def copy_view_files
|
10
|
+
available_views.each do |view|
|
11
|
+
filename = filename_with_extensions(view)
|
12
|
+
template "#{view}.html.haml", File.join("app/views", controller_file_path, filename)
|
13
|
+
end
|
14
|
+
|
15
|
+
languages = %w( en fr )
|
16
|
+
|
17
|
+
languages.each do |lang|
|
18
|
+
template "#{lang}.yml", File.join( 'config/locales', lang, "#{name.downcase.pluralize}.yml" )
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
|
23
|
+
hook_for :form_builder, :as => :scaffold
|
24
|
+
|
25
|
+
def copy_form_file
|
26
|
+
if options[:form_builder].nil?
|
27
|
+
filename = filename_with_extensions("_form")
|
28
|
+
template "_form.html.haml", File.join("app/views", controller_file_path, filename)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def add_menu
|
33
|
+
data = %{
|
34
|
+
%li
|
35
|
+
= nav_link( '#{name.humanize.pluralize}', #{name.underscore.pluralize}_path )}
|
36
|
+
insert_into_file 'app/views/layouts/application.html.haml', data, :after => "= nav_link( 'Home', '#' )"
|
37
|
+
end
|
38
|
+
|
39
|
+
protected
|
40
|
+
|
41
|
+
def available_views
|
42
|
+
%w(index edit show new)
|
43
|
+
end
|
44
|
+
|
45
|
+
def handler
|
46
|
+
:haml
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
<div class="page-header">
|
2
|
+
<%%= link_to <%= index_helper %>_path, class: 'btn btn-default' do %>
|
3
|
+
<span class="glyphicon glyphicon-list-alt"></span>
|
4
|
+
Back
|
5
|
+
<%% end %>
|
6
|
+
<%%= link_to @<%= singular_table_name %>, class: 'btn btn-primary' do %>
|
7
|
+
<span class="glyphicon glyphicon-info-sign"></span>
|
8
|
+
Show
|
9
|
+
<%% end %>
|
10
|
+
<h1>Editing <%= singular_table_name %></h1>
|
11
|
+
</div>
|
12
|
+
|
13
|
+
<%%= render 'form' %>
|
@@ -0,0 +1,33 @@
|
|
1
|
+
<div class="page-header">
|
2
|
+
<%%= link_to new_<%= singular_table_name %>_path, class: 'btn btn-primary' do %>
|
3
|
+
<span class="glyphicon glyphicon-plus"></span>
|
4
|
+
New <%= human_name %>
|
5
|
+
<%% end %>
|
6
|
+
<h1>Listing <%= plural_table_name %></h1>
|
7
|
+
</div>
|
8
|
+
|
9
|
+
<div class="table-responsive">
|
10
|
+
<table class="table table-striped table-bordered table-hover">
|
11
|
+
<thead>
|
12
|
+
<tr>
|
13
|
+
<% attributes.each do |attribute| -%>
|
14
|
+
<th><%= attribute.human_name %></th>
|
15
|
+
<% end -%>
|
16
|
+
<th></th>
|
17
|
+
<th></th>
|
18
|
+
<th></th>
|
19
|
+
</tr>
|
20
|
+
</thead>
|
21
|
+
|
22
|
+
<tbody>
|
23
|
+
<%%= content_tag_for(:tr, @<%= plural_table_name %>) do |<%= singular_table_name %>| %>
|
24
|
+
<% attributes.each do |attribute| -%>
|
25
|
+
<td><%%= <%= singular_table_name %>.<%= attribute.name %> %></td>
|
26
|
+
<% end -%>
|
27
|
+
<td><%%= link_to 'Show', <%= singular_table_name %> %></td>
|
28
|
+
<td><%%= link_to 'Edit', edit_<%= singular_table_name %>_path(<%= singular_table_name %>) %></td>
|
29
|
+
<td><%%= link_to 'Destroy', <%= singular_table_name %>, method: :delete, data: { confirm: 'Are you sure?' } %></td>
|
30
|
+
<%% end %>
|
31
|
+
</tbody>
|
32
|
+
</table>
|
33
|
+
</div>
|
@@ -0,0 +1,19 @@
|
|
1
|
+
<div class="page-header">
|
2
|
+
<%%= link_to <%= index_helper %>_path, class: 'btn btn-default' do %>
|
3
|
+
<span class="glyphicon glyphicon-list-alt"></span>
|
4
|
+
Back
|
5
|
+
<%% end %>
|
6
|
+
<%%= link_to edit_<%= singular_table_name %>_path(@<%= singular_table_name %>), class: 'btn btn-primary' do %>
|
7
|
+
<span class="glyphicon glyphicon-pencil"></span>
|
8
|
+
Edit
|
9
|
+
<%% end %>
|
10
|
+
<h1>Show <%= singular_table_name %></h1>
|
11
|
+
</div>
|
12
|
+
|
13
|
+
<dl class="dl-horizontal">
|
14
|
+
<%- attributes.each do |attribute| -%>
|
15
|
+
<dt><%= attribute.human_name %>:</dt>
|
16
|
+
<dd><%%= @<%= singular_table_name %>.<%= attribute.name %> %></dd>
|
17
|
+
|
18
|
+
<%- end -%>
|
19
|
+
</dl>
|
@@ -0,0 +1,10 @@
|
|
1
|
+
.page-header
|
2
|
+
= link_to <%= index_helper %>_path, class: 'btn btn-default' do
|
3
|
+
%span.glyphicon.glyphicon-list-alt
|
4
|
+
= t( '.back' )
|
5
|
+
= link_to @<%= singular_table_name %>, class: 'btn btn-primary' do
|
6
|
+
%span.glyphicon.glyphicon-info-sign
|
7
|
+
= t( '.show' )
|
8
|
+
%h1= t( '.title' )
|
9
|
+
|
10
|
+
= render 'form'
|
@@ -0,0 +1,23 @@
|
|
1
|
+
en:
|
2
|
+
<%= plural_table_name %>:
|
3
|
+
index:
|
4
|
+
title: Index
|
5
|
+
edit: Edit
|
6
|
+
new: New
|
7
|
+
show: Show
|
8
|
+
delete: Delete
|
9
|
+
confirm: Are you sure ?
|
10
|
+
edit:
|
11
|
+
title: Edit
|
12
|
+
back: Back
|
13
|
+
show: Show
|
14
|
+
show:
|
15
|
+
title: Show
|
16
|
+
back: Back
|
17
|
+
edit: Edit
|
18
|
+
new:
|
19
|
+
title: New
|
20
|
+
back: Back
|
21
|
+
form:
|
22
|
+
submit: Submit
|
23
|
+
|
@@ -0,0 +1,23 @@
|
|
1
|
+
fr:
|
2
|
+
<%= plural_table_name %>:
|
3
|
+
index:
|
4
|
+
title: Liste
|
5
|
+
edit: Editer
|
6
|
+
new: Nouveau
|
7
|
+
show: Détail
|
8
|
+
delete: Suppression
|
9
|
+
confirm: Etes vous sur ?
|
10
|
+
edit:
|
11
|
+
title: Editer
|
12
|
+
back: Retour
|
13
|
+
show: Détail
|
14
|
+
show:
|
15
|
+
title: Détail
|
16
|
+
back: Retour
|
17
|
+
edit: Editer
|
18
|
+
new:
|
19
|
+
title: Ajouter
|
20
|
+
back: Retour
|
21
|
+
form:
|
22
|
+
submit: Valider
|
23
|
+
|
@@ -0,0 +1,30 @@
|
|
1
|
+
.page-header
|
2
|
+
= link_to new_<%= singular_table_name %>_path, class: 'btn btn-primary' do
|
3
|
+
%span.glyphicon.glyphicon-plus
|
4
|
+
= t( '.new' )
|
5
|
+
%h1= t( '.title' )
|
6
|
+
|
7
|
+
.table-responsive
|
8
|
+
%table.table.table-striped.table-bordered.table-hover
|
9
|
+
%thead
|
10
|
+
%tr
|
11
|
+
<% for attribute in attributes -%>
|
12
|
+
%th= <%= "t( '." + attribute.name + "')" %>
|
13
|
+
<% end -%>
|
14
|
+
%th
|
15
|
+
%th
|
16
|
+
%th
|
17
|
+
|
18
|
+
%tbody
|
19
|
+
- @<%= plural_table_name %>.each do |<%= singular_table_name %>|
|
20
|
+
%tr
|
21
|
+
<% for attribute in attributes -%>
|
22
|
+
<% if attribute.type == :references %>
|
23
|
+
%td= <%= singular_table_name %>.<%= attribute.name %>.name
|
24
|
+
<% else %>
|
25
|
+
%td= <%= singular_table_name %>.<%= attribute.name %>
|
26
|
+
<% end %>
|
27
|
+
<% end -%>
|
28
|
+
%td= link_to t( '.show' ), <%= singular_table_name %>
|
29
|
+
%td= link_to t( '.edit' ), edit_<%= singular_table_name %>_path(<%= singular_table_name %>)
|
30
|
+
%td= link_to t( '.delete' ), <%= singular_table_name %>, data: { confirm: t( '.confirm' ) }, method: :delete
|
@@ -0,0 +1,18 @@
|
|
1
|
+
.page-header
|
2
|
+
= link_to <%= index_helper %>_path, class: 'btn btn-default' do
|
3
|
+
%span.glyphicon.glyphicon-list-alt
|
4
|
+
= t( '.back' )
|
5
|
+
= link_to edit_<%= singular_table_name %>_path(@<%= singular_table_name %>), class: 'btn btn-primary' do
|
6
|
+
%span.glyphicon.glyphicon-pencil
|
7
|
+
= t( '.edit' )
|
8
|
+
%h1= t( '.title' )
|
9
|
+
|
10
|
+
%dl.dl-horizontal
|
11
|
+
<%- for attribute in attributes -%>
|
12
|
+
%dt= <%= "t( '." + attribute.name + "')" %> + ' :'
|
13
|
+
<% if attribute.type == :references %>
|
14
|
+
%dd= @<%= singular_table_name %>.<%= attribute.name %>.name
|
15
|
+
<% else %>
|
16
|
+
%dd= @<%= singular_table_name %>.<%= attribute.name %>
|
17
|
+
<% end %>
|
18
|
+
<%- end -%>
|
@@ -0,0 +1,12 @@
|
|
1
|
+
.page-header
|
2
|
+
= link_to <%= index_helper %>_path, class: 'btn btn-default' do
|
3
|
+
span.glyphicon.glyphicon-list-alt
|
4
|
+
| Back
|
5
|
+
= link_to @<%= singular_table_name %>, class: 'btn btn-primary' do
|
6
|
+
span.glyphicon.glyphicon-info-sign
|
7
|
+
| Show
|
8
|
+
h1
|
9
|
+
| Editing
|
10
|
+
| <%= singular_table_name %>
|
11
|
+
|
12
|
+
= render 'form'
|
@@ -0,0 +1,31 @@
|
|
1
|
+
.page-header
|
2
|
+
= link_to new_<%= singular_table_name %>_path, class: 'btn btn-primary' do
|
3
|
+
span.glyphicon.glyphicon-plus
|
4
|
+
| New <%= human_name %>
|
5
|
+
h1
|
6
|
+
| Listing <%= plural_table_name %>
|
7
|
+
|
8
|
+
.table-responsive
|
9
|
+
table.table.table-striped.table-bordered.table-hover
|
10
|
+
thead
|
11
|
+
tr
|
12
|
+
<%- for attribute in attributes -%>
|
13
|
+
th
|
14
|
+
| <%= attribute.human_name %>
|
15
|
+
<%- end -%>
|
16
|
+
th
|
17
|
+
th
|
18
|
+
th
|
19
|
+
tbody
|
20
|
+
- @<%= plural_table_name %>.each do | <%= singular_table_name %> |
|
21
|
+
tr
|
22
|
+
<%- for attribute in attributes -%>
|
23
|
+
td
|
24
|
+
= <%= singular_table_name %>.<%= attribute.name %>
|
25
|
+
<%- end -%>
|
26
|
+
td
|
27
|
+
= link_to 'Show', <%= singular_table_name %>
|
28
|
+
td
|
29
|
+
= link_to 'Edit', edit_<%= singular_table_name %>_path(<%= singular_table_name %>)
|
30
|
+
td
|
31
|
+
= link_to 'Destroy', <%= singular_table_name %>, method: :delete, data: { confirm: 'Are you sure?' }
|