railsstrap 3.2.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.bowerrc +3 -0
- data/README.md +61 -0
- data/Rakefile +24 -0
- data/app/helpers/railsstrap/badge_label_helper.rb +18 -0
- data/app/helpers/railsstrap/bootstrap_flash_helper.rb +27 -0
- data/app/helpers/railsstrap/breadcrumbs.rb +56 -0
- data/app/helpers/railsstrap/breadcrumbs_helper.rb +15 -0
- data/app/helpers/railsstrap/flash_block_helper.rb +19 -0
- data/app/helpers/railsstrap/form_errors_helper.rb +25 -0
- data/app/helpers/railsstrap/glyph_helper.rb +22 -0
- data/app/helpers/railsstrap/icon_helper.rb +22 -0
- data/app/helpers/railsstrap/modal_helper.rb +65 -0
- data/app/helpers/railsstrap/navbar_helper.rb +210 -0
- data/app/views/railsstrap/_breadcrumbs.html.erb +14 -0
- data/lib/generators/railsstrap/install/install_generator.rb +83 -0
- data/lib/generators/railsstrap/install/templates/application.css +7 -0
- data/lib/generators/railsstrap/install/templates/application.js +18 -0
- data/lib/generators/railsstrap/install/templates/bootstrap.coffee +3 -0
- data/lib/generators/railsstrap/install/templates/bootstrap.js +4 -0
- data/lib/generators/railsstrap/install/templates/bootstrap_and_overrides.css +8 -0
- data/lib/generators/railsstrap/install/templates/bootstrap_and_overrides.less +19 -0
- data/lib/generators/railsstrap/install/templates/en.bootstrap.yml +23 -0
- data/lib/generators/railsstrap/layout/layout_generator.rb +20 -0
- data/lib/generators/railsstrap/layout/templates/layout.html.erb +85 -0
- data/lib/generators/railsstrap/layout/templates/layout.html.haml +50 -0
- data/lib/generators/railsstrap/layout/templates/layout.html.slim +50 -0
- data/lib/generators/railsstrap/partial/partial_generator.rb +20 -0
- data/lib/generators/railsstrap/partial/templates/_login.html.erb +28 -0
- data/lib/generators/railsstrap/themed/templates/_form.html.erb +36 -0
- data/lib/generators/railsstrap/themed/templates/_form.html.haml +12 -0
- data/lib/generators/railsstrap/themed/templates/_form.html.slim +13 -0
- data/lib/generators/railsstrap/themed/templates/edit.html.erb +5 -0
- data/lib/generators/railsstrap/themed/templates/edit.html.haml +4 -0
- data/lib/generators/railsstrap/themed/templates/edit.html.slim +4 -0
- data/lib/generators/railsstrap/themed/templates/index.html.erb +40 -0
- data/lib/generators/railsstrap/themed/templates/index.html.haml +25 -0
- data/lib/generators/railsstrap/themed/templates/index.html.slim +27 -0
- data/lib/generators/railsstrap/themed/templates/new.html.erb +5 -0
- data/lib/generators/railsstrap/themed/templates/new.html.haml +4 -0
- data/lib/generators/railsstrap/themed/templates/new.html.slim +4 -0
- data/lib/generators/railsstrap/themed/templates/show.html.erb +21 -0
- data/lib/generators/railsstrap/themed/templates/show.html.haml +15 -0
- data/lib/generators/railsstrap/themed/templates/show.html.slim +16 -0
- data/lib/generators/railsstrap/themed/templates/simple_form/_form.html.erb +14 -0
- data/lib/generators/railsstrap/themed/templates/simple_form/_form.html.haml +11 -0
- data/lib/generators/railsstrap/themed/templates/simple_form/_form.html.slim +12 -0
- data/lib/generators/railsstrap/themed/themed_generator.rb +148 -0
- data/lib/railsstrap/bootstrap.rb +2 -0
- data/lib/railsstrap/constants.rb +6 -0
- data/lib/railsstrap/engine.rb +40 -0
- data/lib/railsstrap.rb +5 -0
- data/vendor/assets/bower_components/bootstrap/Gruntfile.js +480 -0
- data/vendor/assets/bower_components/bootstrap/LICENSE +21 -0
- data/vendor/assets/bower_components/bootstrap/README.md +127 -0
- data/vendor/assets/bower_components/bootstrap/bower.json +38 -0
- data/vendor/assets/bower_components/bootstrap/dist/css/bootstrap-theme.css +442 -0
- data/vendor/assets/bower_components/bootstrap/dist/css/bootstrap-theme.css.map +1 -0
- data/vendor/assets/bower_components/bootstrap/dist/css/bootstrap-theme.min.css +5 -0
- data/vendor/assets/bower_components/bootstrap/dist/css/bootstrap.css +6203 -0
- data/vendor/assets/bower_components/bootstrap/dist/css/bootstrap.css.map +1 -0
- data/vendor/assets/bower_components/bootstrap/dist/css/bootstrap.min.css +5 -0
- data/vendor/assets/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.eot +0 -0
- data/vendor/assets/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.svg +229 -0
- data/vendor/assets/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf +0 -0
- data/vendor/assets/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff +0 -0
- data/vendor/assets/bower_components/bootstrap/dist/js/bootstrap.js +2114 -0
- data/vendor/assets/bower_components/bootstrap/dist/js/bootstrap.min.js +6 -0
- data/vendor/assets/bower_components/bootstrap/fonts/glyphicons-halflings-regular.eot +0 -0
- data/vendor/assets/bower_components/bootstrap/fonts/glyphicons-halflings-regular.svg +229 -0
- data/vendor/assets/bower_components/bootstrap/fonts/glyphicons-halflings-regular.ttf +0 -0
- data/vendor/assets/bower_components/bootstrap/fonts/glyphicons-halflings-regular.woff +0 -0
- data/vendor/assets/bower_components/bootstrap/grunt/bs-glyphicons-data-generator.js +41 -0
- data/vendor/assets/bower_components/bootstrap/grunt/bs-lessdoc-parser.js +236 -0
- data/vendor/assets/bower_components/bootstrap/grunt/bs-raw-files-generator.js +46 -0
- data/vendor/assets/bower_components/bootstrap/grunt/sauce_browsers.yml +82 -0
- data/vendor/assets/bower_components/bootstrap/js/affix.js +142 -0
- data/vendor/assets/bower_components/bootstrap/js/alert.js +92 -0
- data/vendor/assets/bower_components/bootstrap/js/button.js +110 -0
- data/vendor/assets/bower_components/bootstrap/js/carousel.js +223 -0
- data/vendor/assets/bower_components/bootstrap/js/collapse.js +170 -0
- data/vendor/assets/bower_components/bootstrap/js/dropdown.js +151 -0
- data/vendor/assets/bower_components/bootstrap/js/modal.js +280 -0
- data/vendor/assets/bower_components/bootstrap/js/popover.js +113 -0
- data/vendor/assets/bower_components/bootstrap/js/scrollspy.js +170 -0
- data/vendor/assets/bower_components/bootstrap/js/tab.js +128 -0
- data/vendor/assets/bower_components/bootstrap/js/tooltip.js +457 -0
- data/vendor/assets/bower_components/bootstrap/js/transition.js +59 -0
- data/vendor/assets/bower_components/bootstrap/less/alerts.less +68 -0
- data/vendor/assets/bower_components/bootstrap/less/badges.less +55 -0
- data/vendor/assets/bower_components/bootstrap/less/bootstrap.less +50 -0
- data/vendor/assets/bower_components/bootstrap/less/breadcrumbs.less +26 -0
- data/vendor/assets/bower_components/bootstrap/less/button-groups.less +240 -0
- data/vendor/assets/bower_components/bootstrap/less/buttons.less +157 -0
- data/vendor/assets/bower_components/bootstrap/less/carousel.less +243 -0
- data/vendor/assets/bower_components/bootstrap/less/close.less +33 -0
- data/vendor/assets/bower_components/bootstrap/less/code.less +68 -0
- data/vendor/assets/bower_components/bootstrap/less/component-animations.less +31 -0
- data/vendor/assets/bower_components/bootstrap/less/dropdowns.less +215 -0
- data/vendor/assets/bower_components/bootstrap/less/forms.less +540 -0
- data/vendor/assets/bower_components/bootstrap/less/glyphicons.less +233 -0
- data/vendor/assets/bower_components/bootstrap/less/grid.less +84 -0
- data/vendor/assets/bower_components/bootstrap/less/input-groups.less +166 -0
- data/vendor/assets/bower_components/bootstrap/less/jumbotron.less +48 -0
- data/vendor/assets/bower_components/bootstrap/less/labels.less +64 -0
- data/vendor/assets/bower_components/bootstrap/less/list-group.less +131 -0
- data/vendor/assets/bower_components/bootstrap/less/media.less +56 -0
- data/vendor/assets/bower_components/bootstrap/less/mixins/alerts.less +14 -0
- data/vendor/assets/bower_components/bootstrap/less/mixins/background-variant.less +8 -0
- data/vendor/assets/bower_components/bootstrap/less/mixins/border-radius.less +18 -0
- data/vendor/assets/bower_components/bootstrap/less/mixins/buttons.less +50 -0
- data/vendor/assets/bower_components/bootstrap/less/mixins/center-block.less +7 -0
- data/vendor/assets/bower_components/bootstrap/less/mixins/clearfix.less +22 -0
- data/vendor/assets/bower_components/bootstrap/less/mixins/forms.less +81 -0
- data/vendor/assets/bower_components/bootstrap/less/mixins/gradients.less +59 -0
- data/vendor/assets/bower_components/bootstrap/less/mixins/grid-framework.less +91 -0
- data/vendor/assets/bower_components/bootstrap/less/mixins/grid.less +122 -0
- data/vendor/assets/bower_components/bootstrap/less/mixins/hide-text.less +21 -0
- data/vendor/assets/bower_components/bootstrap/less/mixins/image.less +34 -0
- data/vendor/assets/bower_components/bootstrap/less/mixins/labels.less +12 -0
- data/vendor/assets/bower_components/bootstrap/less/mixins/list-group.less +29 -0
- data/vendor/assets/bower_components/bootstrap/less/mixins/nav-divider.less +10 -0
- data/vendor/assets/bower_components/bootstrap/less/mixins/nav-vertical-align.less +9 -0
- data/vendor/assets/bower_components/bootstrap/less/mixins/opacity.less +8 -0
- data/vendor/assets/bower_components/bootstrap/less/mixins/pagination.less +23 -0
- data/vendor/assets/bower_components/bootstrap/less/mixins/panels.less +24 -0
- data/vendor/assets/bower_components/bootstrap/less/mixins/progress-bar.less +10 -0
- data/vendor/assets/bower_components/bootstrap/less/mixins/reset-filter.less +8 -0
- data/vendor/assets/bower_components/bootstrap/less/mixins/resize.less +6 -0
- data/vendor/assets/bower_components/bootstrap/less/mixins/responsive-visibility.less +15 -0
- data/vendor/assets/bower_components/bootstrap/less/mixins/size.less +10 -0
- data/vendor/assets/bower_components/bootstrap/less/mixins/tab-focus.less +9 -0
- data/vendor/assets/bower_components/bootstrap/less/mixins/table-row.less +28 -0
- data/vendor/assets/bower_components/bootstrap/less/mixins/text-emphasis.less +8 -0
- data/vendor/assets/bower_components/bootstrap/less/mixins/text-overflow.less +8 -0
- data/vendor/assets/bower_components/bootstrap/less/mixins/vendor-prefixes.less +224 -0
- data/vendor/assets/bower_components/bootstrap/less/mixins.less +39 -0
- data/vendor/assets/bower_components/bootstrap/less/modals.less +150 -0
- data/vendor/assets/bower_components/bootstrap/less/navbar.less +655 -0
- data/vendor/assets/bower_components/bootstrap/less/navs.less +242 -0
- data/vendor/assets/bower_components/bootstrap/less/normalize.less +425 -0
- data/vendor/assets/bower_components/bootstrap/less/pager.less +55 -0
- data/vendor/assets/bower_components/bootstrap/less/pagination.less +88 -0
- data/vendor/assets/bower_components/bootstrap/less/panels.less +243 -0
- data/vendor/assets/bower_components/bootstrap/less/popovers.less +133 -0
- data/vendor/assets/bower_components/bootstrap/less/print.less +101 -0
- data/vendor/assets/bower_components/bootstrap/less/progress-bars.less +105 -0
- data/vendor/assets/bower_components/bootstrap/less/responsive-embed.less +34 -0
- data/vendor/assets/bower_components/bootstrap/less/responsive-utilities.less +194 -0
- data/vendor/assets/bower_components/bootstrap/less/scaffolding.less +150 -0
- data/vendor/assets/bower_components/bootstrap/less/tables.less +233 -0
- data/vendor/assets/bower_components/bootstrap/less/theme.less +258 -0
- data/vendor/assets/bower_components/bootstrap/less/thumbnails.less +36 -0
- data/vendor/assets/bower_components/bootstrap/less/tooltip.less +95 -0
- data/vendor/assets/bower_components/bootstrap/less/type.less +313 -0
- data/vendor/assets/bower_components/bootstrap/less/utilities.less +57 -0
- data/vendor/assets/bower_components/bootstrap/less/variables.less +846 -0
- data/vendor/assets/bower_components/bootstrap/less/wells.less +29 -0
- data/vendor/assets/bower_components/bootstrap/package.json +81 -0
- data/vendor/assets/bower_components/fontawesome/bower.json +23 -0
- data/vendor/assets/bower_components/fontawesome/css/font-awesome.css +1672 -0
- data/vendor/assets/bower_components/fontawesome/css/font-awesome.min.css +4 -0
- data/vendor/assets/bower_components/fontawesome/fonts/FontAwesome.otf +0 -0
- data/vendor/assets/bower_components/fontawesome/fonts/fontawesome-webfont.eot +0 -0
- data/vendor/assets/bower_components/fontawesome/fonts/fontawesome-webfont.svg +520 -0
- data/vendor/assets/bower_components/fontawesome/fonts/fontawesome-webfont.ttf +0 -0
- data/vendor/assets/bower_components/fontawesome/fonts/fontawesome-webfont.woff +0 -0
- data/vendor/assets/bower_components/fontawesome/less/bordered-pulled.less +16 -0
- data/vendor/assets/bower_components/fontawesome/less/core.less +11 -0
- data/vendor/assets/bower_components/fontawesome/less/extras.less +2 -0
- data/vendor/assets/bower_components/fontawesome/less/fixed-width.less +6 -0
- data/vendor/assets/bower_components/fontawesome/less/font-awesome.less +17 -0
- data/vendor/assets/bower_components/fontawesome/less/icons.less +552 -0
- data/vendor/assets/bower_components/fontawesome/less/larger.less +13 -0
- data/vendor/assets/bower_components/fontawesome/less/list.less +19 -0
- data/vendor/assets/bower_components/fontawesome/less/mixins.less +25 -0
- data/vendor/assets/bower_components/fontawesome/less/path.less +14 -0
- data/vendor/assets/bower_components/fontawesome/less/rotated-flipped.less +20 -0
- data/vendor/assets/bower_components/fontawesome/less/spinning.less +29 -0
- data/vendor/assets/bower_components/fontawesome/less/stacked.less +20 -0
- data/vendor/assets/bower_components/fontawesome/less/variables.less +561 -0
- data/vendor/assets/bower_components/fontawesome/scss/_bordered-pulled.scss +16 -0
- data/vendor/assets/bower_components/fontawesome/scss/_core.scss +11 -0
- data/vendor/assets/bower_components/fontawesome/scss/_extras.scss +44 -0
- data/vendor/assets/bower_components/fontawesome/scss/_fixed-width.scss +6 -0
- data/vendor/assets/bower_components/fontawesome/scss/_icons.scss +552 -0
- data/vendor/assets/bower_components/fontawesome/scss/_larger.scss +13 -0
- data/vendor/assets/bower_components/fontawesome/scss/_list.scss +19 -0
- data/vendor/assets/bower_components/fontawesome/scss/_mixins.scss +25 -0
- data/vendor/assets/bower_components/fontawesome/scss/_path.scss +14 -0
- data/vendor/assets/bower_components/fontawesome/scss/_rotated-flipped.scss +20 -0
- data/vendor/assets/bower_components/fontawesome/scss/_spinning.scss +29 -0
- data/vendor/assets/bower_components/fontawesome/scss/_stacked.scss +20 -0
- data/vendor/assets/bower_components/fontawesome/scss/_variables.scss +561 -0
- data/vendor/assets/bower_components/fontawesome/scss/font-awesome.scss +17 -0
- data/vendor/assets/bower_components/jquery/MIT-LICENSE.txt +21 -0
- data/vendor/assets/bower_components/jquery/bower.json +27 -0
- data/vendor/assets/bower_components/jquery/dist/jquery.js +9190 -0
- data/vendor/assets/bower_components/jquery/dist/jquery.min.js +5 -0
- data/vendor/assets/bower_components/jquery/dist/jquery.min.map +1 -0
- data/vendor/assets/bower_components/jquery/src/ajax/jsonp.js +89 -0
- data/vendor/assets/bower_components/jquery/src/ajax/load.js +75 -0
- data/vendor/assets/bower_components/jquery/src/ajax/parseJSON.js +13 -0
- data/vendor/assets/bower_components/jquery/src/ajax/parseXML.js +28 -0
- data/vendor/assets/bower_components/jquery/src/ajax/script.js +64 -0
- data/vendor/assets/bower_components/jquery/src/ajax/var/nonce.js +5 -0
- data/vendor/assets/bower_components/jquery/src/ajax/var/rquery.js +3 -0
- data/vendor/assets/bower_components/jquery/src/ajax/xhr.js +135 -0
- data/vendor/assets/bower_components/jquery/src/ajax.js +806 -0
- data/vendor/assets/bower_components/jquery/src/attributes/attr.js +143 -0
- data/vendor/assets/bower_components/jquery/src/attributes/classes.js +158 -0
- data/vendor/assets/bower_components/jquery/src/attributes/prop.js +96 -0
- data/vendor/assets/bower_components/jquery/src/attributes/support.js +35 -0
- data/vendor/assets/bower_components/jquery/src/attributes/val.js +163 -0
- data/vendor/assets/bower_components/jquery/src/attributes.js +11 -0
- data/vendor/assets/bower_components/jquery/src/callbacks.js +205 -0
- data/vendor/assets/bower_components/jquery/src/core/access.js +60 -0
- data/vendor/assets/bower_components/jquery/src/core/init.js +123 -0
- data/vendor/assets/bower_components/jquery/src/core/parseHTML.js +39 -0
- data/vendor/assets/bower_components/jquery/src/core/ready.js +97 -0
- data/vendor/assets/bower_components/jquery/src/core/var/rsingleTag.js +4 -0
- data/vendor/assets/bower_components/jquery/src/core.js +498 -0
- data/vendor/assets/bower_components/jquery/src/css/addGetHookIf.js +24 -0
- data/vendor/assets/bower_components/jquery/src/css/curCSS.js +57 -0
- data/vendor/assets/bower_components/jquery/src/css/defaultDisplay.js +70 -0
- data/vendor/assets/bower_components/jquery/src/css/hiddenVisibleSelectors.js +15 -0
- data/vendor/assets/bower_components/jquery/src/css/support.js +91 -0
- data/vendor/assets/bower_components/jquery/src/css/swap.js +28 -0
- data/vendor/assets/bower_components/jquery/src/css/var/cssExpand.js +3 -0
- data/vendor/assets/bower_components/jquery/src/css/var/getStyles.js +5 -0
- data/vendor/assets/bower_components/jquery/src/css/var/isHidden.js +13 -0
- data/vendor/assets/bower_components/jquery/src/css/var/rmargin.js +3 -0
- data/vendor/assets/bower_components/jquery/src/css/var/rnumnonpx.js +5 -0
- data/vendor/assets/bower_components/jquery/src/css.js +451 -0
- data/vendor/assets/bower_components/jquery/src/data/Data.js +181 -0
- data/vendor/assets/bower_components/jquery/src/data/accepts.js +20 -0
- data/vendor/assets/bower_components/jquery/src/data/var/data_priv.js +5 -0
- data/vendor/assets/bower_components/jquery/src/data/var/data_user.js +5 -0
- data/vendor/assets/bower_components/jquery/src/data.js +179 -0
- data/vendor/assets/bower_components/jquery/src/deferred.js +149 -0
- data/vendor/assets/bower_components/jquery/src/deprecated.js +13 -0
- data/vendor/assets/bower_components/jquery/src/dimensions.js +50 -0
- data/vendor/assets/bower_components/jquery/src/effects/Tween.js +114 -0
- data/vendor/assets/bower_components/jquery/src/effects/animatedSelector.js +13 -0
- data/vendor/assets/bower_components/jquery/src/effects.js +649 -0
- data/vendor/assets/bower_components/jquery/src/event/alias.js +39 -0
- data/vendor/assets/bower_components/jquery/src/event/support.js +9 -0
- data/vendor/assets/bower_components/jquery/src/event.js +868 -0
- data/vendor/assets/bower_components/jquery/src/exports/amd.js +24 -0
- data/vendor/assets/bower_components/jquery/src/exports/global.js +32 -0
- data/vendor/assets/bower_components/jquery/src/intro.js +44 -0
- data/vendor/assets/bower_components/jquery/src/jquery.js +36 -0
- data/vendor/assets/bower_components/jquery/src/manipulation/_evalUrl.js +18 -0
- data/vendor/assets/bower_components/jquery/src/manipulation/support.js +31 -0
- data/vendor/assets/bower_components/jquery/src/manipulation/var/rcheckableType.js +3 -0
- data/vendor/assets/bower_components/jquery/src/manipulation.js +582 -0
- data/vendor/assets/bower_components/jquery/src/offset.js +204 -0
- data/vendor/assets/bower_components/jquery/src/outro.js +1 -0
- data/vendor/assets/bower_components/jquery/src/queue/delay.js +22 -0
- data/vendor/assets/bower_components/jquery/src/queue.js +142 -0
- data/vendor/assets/bower_components/jquery/src/selector-native.js +172 -0
- data/vendor/assets/bower_components/jquery/src/selector-sizzle.js +14 -0
- data/vendor/assets/bower_components/jquery/src/selector.js +1 -0
- data/vendor/assets/bower_components/jquery/src/serialize.js +111 -0
- data/vendor/assets/bower_components/jquery/src/sizzle/dist/sizzle.js +2044 -0
- data/vendor/assets/bower_components/jquery/src/sizzle/dist/sizzle.min.js +3 -0
- data/vendor/assets/bower_components/jquery/src/sizzle/dist/sizzle.min.map +1 -0
- data/vendor/assets/bower_components/jquery/src/traversing/findFilter.js +100 -0
- data/vendor/assets/bower_components/jquery/src/traversing/var/rneedsContext.js +6 -0
- data/vendor/assets/bower_components/jquery/src/traversing.js +200 -0
- data/vendor/assets/bower_components/jquery/src/var/arr.js +3 -0
- data/vendor/assets/bower_components/jquery/src/var/class2type.js +4 -0
- data/vendor/assets/bower_components/jquery/src/var/concat.js +5 -0
- data/vendor/assets/bower_components/jquery/src/var/hasOwn.js +5 -0
- data/vendor/assets/bower_components/jquery/src/var/indexOf.js +5 -0
- data/vendor/assets/bower_components/jquery/src/var/pnum.js +3 -0
- data/vendor/assets/bower_components/jquery/src/var/push.js +5 -0
- data/vendor/assets/bower_components/jquery/src/var/rnotwhite.js +3 -0
- data/vendor/assets/bower_components/jquery/src/var/slice.js +5 -0
- data/vendor/assets/bower_components/jquery/src/var/strundefined.js +3 -0
- data/vendor/assets/bower_components/jquery/src/var/support.js +4 -0
- data/vendor/assets/bower_components/jquery/src/var/toString.js +5 -0
- data/vendor/assets/bower_components/jquery/src/wrap.js +78 -0
- metadata +356 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 66e1860b5753f88597b7a2c7244d4cddce8b49ea
|
4
|
+
data.tar.gz: e0a870ede5b57134f52229837958598be42ad98b
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 98273c8e62345eab8e76727b317d8e9397ca4097e7a093b0dd0171be279fd52538ff402e3262650a12b954a945d50a422cd237f419d92099fbf2dc5af1d58213
|
7
|
+
data.tar.gz: 97dcde8a6a87f560705309f0d368493839d9ca1b8bdf96b473d46a34f7978a2c8c18a9f490b856b0ec92271029666a4743a055a83fc2331a49ff6aa55a8b2306
|
data/.bowerrc
ADDED
data/README.md
ADDED
@@ -0,0 +1,61 @@
|
|
1
|
+
# Bootstrap 3.2.1 for Rails 4 Asset Pipeline
|
2
|
+
Bootstrap is a toolkit from Twitter designed to kickstart development of webapps and sites. It includes base CSS and HTML for typography, forms, buttons, tables, grids, navigation, and more.
|
3
|
+
|
4
|
+
railsstrap integrates Bootstrap CSS toolkit for Rails Asset Pipeline (Rails 4, 3.1, 3.2 are supported). It was born and extended from twitter-bootstrap-rails, but several non-bootstrap helpers and UI improvements from the Bootstrap community.
|
5
|
+
|
6
|
+
## Example Application
|
7
|
+
An example application is available at [toadkicker/teststrap](https://github.com/toadkicker/teststrap). You can view it running on heroku [here.](http://teststrap.herokuapp.com/) Contributions welcome.
|
8
|
+
|
9
|
+
## Quick install
|
10
|
+
Open your Gemfile, and add the gem to your list of dependencies.
|
11
|
+
|
12
|
+
```gem railsstrap```
|
13
|
+
|
14
|
+
Then run the installer
|
15
|
+
|
16
|
+
```
|
17
|
+
bundle install
|
18
|
+
bundle exec rails g railsstrap:install
|
19
|
+
```
|
20
|
+
|
21
|
+
This will insert the appropriate entries into your application.js and application.css files. It will also provide you with the ability to customize Bootstrap to your liking.
|
22
|
+
|
23
|
+
Most of the info you'll need is in the wiki, and if it isn't please contribute!
|
24
|
+
|
25
|
+
## Many thanks to the twitter-bootstrap-rails contributors, who made this fork possible:
|
26
|
+
<ul>
|
27
|
+
<li>Seyhun Akyürek</li>
|
28
|
+
<li>Ben Lovell</li>
|
29
|
+
<li>Daniel Morris</li>
|
30
|
+
<li>Bradly Feeley</li>
|
31
|
+
<li>Guilherme Moreira</li>
|
32
|
+
<li>Alex Behar</li>
|
33
|
+
<li>Brandon Keene</li>
|
34
|
+
<li>Anthony Corcutt</li>
|
35
|
+
<li>Colin Warren</li>
|
36
|
+
<li>Giovanni Cappellotto</li>
|
37
|
+
<li>Masakuni Kato</li>
|
38
|
+
<li>Gudleik Rasch</li>
|
39
|
+
<li>Thomas Volkmar Worm</li>
|
40
|
+
<li>Thiago Almeida</li>
|
41
|
+
<li>Sébastien Grosjean</li>
|
42
|
+
<li>Nick DeSteffen</li>
|
43
|
+
<li>Christian Joudrey</li>
|
44
|
+
<li>Leonid Shevtsov</li>
|
45
|
+
</ul>
|
46
|
+
|
47
|
+
## About Me
|
48
|
+
[toadkicker.com](http://toadkicker.com)
|
49
|
+
|
50
|
+
|
51
|
+
## Thanks
|
52
|
+
Bootstrap, FontAwesome, and all railsstrap contributors
|
53
|
+
http://twbs.github.io/bootstrap
|
54
|
+
|
55
|
+
|
56
|
+
## License
|
57
|
+
Copyright (c) 2014 Todd Baur
|
58
|
+
|
59
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
60
|
+
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
61
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/Rakefile
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
#!/usr/bin/env rake
|
2
|
+
require 'bundler'
|
3
|
+
require 'rspec/core/rake_task'
|
4
|
+
|
5
|
+
Bundler::GemHelper.install_tasks
|
6
|
+
|
7
|
+
desc 'Bundle the gem'
|
8
|
+
task :bundle => [:bundle_install] do
|
9
|
+
sh 'gem build *.gemspec'
|
10
|
+
sh 'gem install *.gem'
|
11
|
+
sh 'rm *.gem'
|
12
|
+
end
|
13
|
+
|
14
|
+
desc 'Runs bundle install'
|
15
|
+
task :bundle_install do
|
16
|
+
sh('bundle install')
|
17
|
+
end
|
18
|
+
|
19
|
+
task(:default).clear
|
20
|
+
task :default => :bundle
|
21
|
+
|
22
|
+
RSpec::Core::RakeTask.new do |task|
|
23
|
+
task.rspec_opts = %w(--color --format doc)
|
24
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Railsstrap
|
2
|
+
module BadgeLabelHelper
|
3
|
+
def badge(*args)
|
4
|
+
badge_label(:badge, *args)
|
5
|
+
end
|
6
|
+
|
7
|
+
def tag_label(*args)
|
8
|
+
badge_label(:label, *args)
|
9
|
+
end
|
10
|
+
|
11
|
+
private
|
12
|
+
def badge_label(what, value, type = nil)
|
13
|
+
klass = [what]
|
14
|
+
klass << "#{what}-#{type}" if type.present?
|
15
|
+
content_tag :span, value, :class => "#{klass.join(' ')}"
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module Railsstrap
|
2
|
+
module BootstrapFlashHelper
|
3
|
+
ALERT_TYPES = [:success, :info, :warning, :danger] unless const_defined?(:ALERT_TYPES)
|
4
|
+
|
5
|
+
def bootstrap_flash(options = {})
|
6
|
+
flash_messages = []
|
7
|
+
flash.each do |type, message|
|
8
|
+
# Skip empty messages, e.g. for devise messages set to nothing in a locale file.
|
9
|
+
next if message.blank?
|
10
|
+
|
11
|
+
type = type.to_sym
|
12
|
+
type = :success if type == :notice
|
13
|
+
type = :danger if type == :alert
|
14
|
+
type = :danger if type == :error
|
15
|
+
next unless ALERT_TYPES.include?(type)
|
16
|
+
|
17
|
+
Array(message).each do |msg|
|
18
|
+
text = content_tag(:div,
|
19
|
+
content_tag(:button, raw("×"), :class => "close", "data-dismiss" => "alert") +
|
20
|
+
msg, :class => "alert fade in alert-#{type} #{options[:class]}")
|
21
|
+
flash_messages << text if msg
|
22
|
+
end
|
23
|
+
end
|
24
|
+
flash_messages.join("\n").html_safe
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
module Railsstrap
|
2
|
+
module Breadcrumbs
|
3
|
+
def self.included(base)
|
4
|
+
base.extend(ClassMethods)
|
5
|
+
end
|
6
|
+
|
7
|
+
module ClassMethods
|
8
|
+
def add_breadcrumb(name, url = '', options = {})
|
9
|
+
options.merge! :klass => self.name
|
10
|
+
before_filter options do |controller|
|
11
|
+
controller.send :add_breadcrumb, name, url, options
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
protected
|
17
|
+
|
18
|
+
def add_breadcrumb(name, url = '', options = {})
|
19
|
+
@breadcrumbs ||= []
|
20
|
+
|
21
|
+
class_name = options.delete(:klass) || self.class.name
|
22
|
+
|
23
|
+
if name.is_a? Symbol
|
24
|
+
if url.blank?
|
25
|
+
url_helper = :"#{name}_path"
|
26
|
+
url = url_helper if respond_to?(url_helper)
|
27
|
+
end
|
28
|
+
|
29
|
+
name = translate_breadcrumb name, class_name
|
30
|
+
end
|
31
|
+
|
32
|
+
unless name.is_a? String
|
33
|
+
url = polymorphic_path name if url.blank?
|
34
|
+
name = name.to_s
|
35
|
+
end
|
36
|
+
|
37
|
+
url = eval(url.to_s) if url.is_a?(Symbol) && url =~ /_path|_url|@/
|
38
|
+
|
39
|
+
@breadcrumbs << {:name => name, :url => url, :options => options}
|
40
|
+
end
|
41
|
+
|
42
|
+
def translate_breadcrumb(name, class_name)
|
43
|
+
scope = [:breadcrumbs]
|
44
|
+
namespace = class_name.underscore.split('/')
|
45
|
+
namespace.last.sub!('_controller', '')
|
46
|
+
scope += namespace
|
47
|
+
|
48
|
+
I18n.t name, :scope => scope
|
49
|
+
end
|
50
|
+
|
51
|
+
def render_breadcrumbs(divider = '/')
|
52
|
+
s = render :partial => 'railsstrap/breadcrumbs', :locals => {:divider => divider}
|
53
|
+
s.first
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module Railsstrap
|
2
|
+
module BreadcrumbsHelper
|
3
|
+
#TODO: make divider optional
|
4
|
+
def render_breadcrumbs(divider = '/', options={}, &block)
|
5
|
+
default_options = { :class => '', :item_class => '', :divider_class => '', :active_class => 'active' }.merge(options)
|
6
|
+
#TODO: is default_options merged in and then unused?
|
7
|
+
content = render :partial => 'railsstrap/breadcrumbs', :layout => false, :locals => { :divider => divider, options: options }
|
8
|
+
if block_given?
|
9
|
+
capture(content, &block)
|
10
|
+
else
|
11
|
+
content
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Railsstrap
|
2
|
+
module FlashBlockHelper
|
3
|
+
def flash_block
|
4
|
+
output = ''
|
5
|
+
flash.each do |type, message|
|
6
|
+
output += flash_container(type, message)
|
7
|
+
end
|
8
|
+
|
9
|
+
raw(output)
|
10
|
+
end
|
11
|
+
|
12
|
+
def flash_container(type, message)
|
13
|
+
raw(content_tag(:div, :class => "alert alert-#{type}") do
|
14
|
+
content_tag(:a, raw("×"),:class => 'close', :data => {:dismiss => 'alert'}) +
|
15
|
+
message
|
16
|
+
end)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module Railsstrap
|
2
|
+
module FormErrorsHelper
|
3
|
+
require 'active_support/core_ext'
|
4
|
+
include ActionView::Helpers::FormTagHelper
|
5
|
+
|
6
|
+
def error_span(attribute, options = {})
|
7
|
+
options[:span_class] ||= 'help-block'
|
8
|
+
options[:error_class] ||= 'has-error'
|
9
|
+
|
10
|
+
if errors_on?(attribute)
|
11
|
+
@template.content_tag( :div, :class => options[:error_class] ) do
|
12
|
+
content_tag( :span, errors_for(attribute), :class => options[:span_class] )
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def errors_on?(attribute)
|
18
|
+
object.errors[attribute].present? if object.respond_to?(:errors)
|
19
|
+
end
|
20
|
+
|
21
|
+
def errors_for(attribute)
|
22
|
+
object.errors[attribute].try(:join, ', ') || object.errors[attribute].try(:to_s)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Railsstrap
|
2
|
+
module GlyphHelper
|
3
|
+
# ==== Examples
|
4
|
+
# glyph(:share_alt)
|
5
|
+
# # => <span class="icon-share-alt"></span>
|
6
|
+
# glyph(:lock, :white)
|
7
|
+
# # => <span class="icon-lock icon-white"></span>
|
8
|
+
# glyph(:thumbs_up, :pull_left)
|
9
|
+
# # => <i class="icon-thumbs-up pull-left"></i>
|
10
|
+
# glyph(:lock, {tag: :span})
|
11
|
+
# # => <span class="icon-lock"></span>
|
12
|
+
def glyph(*names)
|
13
|
+
options = (names.last.kind_of?(Hash)) ? names.pop : {}
|
14
|
+
names.map! { |name| name.to_s.gsub('_','-') }
|
15
|
+
names.map! do |name|
|
16
|
+
name =~ /pull-(?:left|right)/ ? name : "glyphicon glyphicon-#{name}"
|
17
|
+
end
|
18
|
+
options[:tag] = options[:tag] ||= :i
|
19
|
+
content_tag options[:tag], nil, :class => names
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Railsstrap
|
2
|
+
module IconHelper
|
3
|
+
# ==== Examples
|
4
|
+
# icon(:share_alt)
|
5
|
+
# # => <span class="icon-share-alt"></span>
|
6
|
+
# icon(:lock, :white)
|
7
|
+
# # => <span class="icon-lock icon-white"></span>
|
8
|
+
# icon(:thumbs_up, :pull_left)
|
9
|
+
# # => <i class="icon-thumbs-up pull-left"></i>
|
10
|
+
# icon(:lock, {tag: :span})
|
11
|
+
# # => <span class="icon-lock"></span>
|
12
|
+
def icon(*names)
|
13
|
+
options = (names.last.kind_of?(Hash)) ? names.pop : {}
|
14
|
+
names.map! { |name| name.to_s.gsub('_','-') }
|
15
|
+
names.map! do |name|
|
16
|
+
name =~ /pull-(?:left|right)/ ? name : "fa fa-#{name}"
|
17
|
+
end
|
18
|
+
options[:tag] = options[:tag] ||= :i
|
19
|
+
content_tag options[:tag], nil, :class => names
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,65 @@
|
|
1
|
+
module Railsstrap
|
2
|
+
module ModalHelper
|
3
|
+
|
4
|
+
def default_options
|
5
|
+
return {:id => 'modal', :size => '', :show_close => true, :dismiss => true}
|
6
|
+
end
|
7
|
+
|
8
|
+
#modals have a header, a body, a footer for options.
|
9
|
+
def modal_dialog(options = {}, &block)
|
10
|
+
opts = default_options.merge(options)
|
11
|
+
content_tag :div, :id => options[:id], :class => "railsstrap-modal modal fade" do
|
12
|
+
content_tag :div, :class => "modal-dialog #{opts['size']}" do
|
13
|
+
content_tag :div, :class => "modal-content" do
|
14
|
+
modal_header(options[:header], &block) +
|
15
|
+
modal_body(options[:body], &block) +
|
16
|
+
modal_footer(options[:footer], &block)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def modal_header(options, &block)
|
23
|
+
content_tag :div, :class => 'modal-header' do
|
24
|
+
if options[:show_close]
|
25
|
+
close_button(options[:dismiss]) +
|
26
|
+
content_tag(:h4, options[:title], :class => 'modal-title', &block)
|
27
|
+
else
|
28
|
+
content_tag(:h4, options[:title], :class => 'modal-title', &block)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def modal_body(options, &block)
|
34
|
+
content_tag :div, options[:content], :class => 'modal-body', :style => options[:style], &block
|
35
|
+
end
|
36
|
+
|
37
|
+
def modal_footer(options, &block)
|
38
|
+
content_tag :div, options[:content], :class => 'modal-footer', &block
|
39
|
+
end
|
40
|
+
|
41
|
+
def close_button(dismiss)
|
42
|
+
#It doesn't seem to like content_tag, so we do this instead.
|
43
|
+
raw("<button class=\"close\" data-dismiss=\"#{dismiss}\" aria-hidden=\"true\">×</button>")
|
44
|
+
end
|
45
|
+
|
46
|
+
def modal_toggle(content_or_options = nil, options, &block)
|
47
|
+
if block_given?
|
48
|
+
options = content_or_options if content_or_options.is_a?(Hash)
|
49
|
+
default_options = { :class => 'btn btn-default', "data-toggle" => "modal", "href" => options[:dialog] }.merge(options)
|
50
|
+
|
51
|
+
content_tag :a, nil, default_options, true, &block
|
52
|
+
else
|
53
|
+
default_options = { :class => 'btn btn-default', "data-toggle" => "modal", "href" => options[:dialog] }.merge(options)
|
54
|
+
content_tag :a, content_or_options, default_options, true
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
def modal_cancel_button(content, options)
|
59
|
+
default_opts = { :class => "btn railsstrap-modal-cancel-button" }
|
60
|
+
|
61
|
+
content_tag_string "a", content, default_opts.merge(options)
|
62
|
+
end
|
63
|
+
|
64
|
+
end
|
65
|
+
end
|
@@ -0,0 +1,210 @@
|
|
1
|
+
#Credit for this goes to https://github.com/julescopeland/Rails-Bootstrap-Navbar
|
2
|
+
module Railsstrap
|
3
|
+
module NavbarHelper
|
4
|
+
require 'active_support/core_ext'
|
5
|
+
|
6
|
+
def nav_bar(options={}, &block)
|
7
|
+
nav_bar_nav(options) do
|
8
|
+
container_div(options[:brand], options[:brand_link], options[:responsive], options[:fluid], options[:no_turbolink]) do
|
9
|
+
yield if block_given?
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
def menu_group(options={}, &block)
|
15
|
+
pull_class = "navbar-#{options[:pull].to_s}" if options[:pull].present?
|
16
|
+
content_tag(:ul, :class => "nav navbar-nav #{pull_class}", &block)
|
17
|
+
end
|
18
|
+
|
19
|
+
def menu_item(name=nil, path="#", *args, &block)
|
20
|
+
path = name || path if block_given?
|
21
|
+
options = args.extract_options!
|
22
|
+
content_tag :li, :class => is_active?(path, options) do
|
23
|
+
name, path = path, options if block_given?
|
24
|
+
link_to name, path, options, &block
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def drop_down(name)
|
29
|
+
content_tag :li, :class => "dropdown" do
|
30
|
+
drop_down_link(name) + drop_down_list { yield }
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def drop_down_with_submenu(name, &block)
|
35
|
+
content_tag :li, :class => "dropdown" do
|
36
|
+
drop_down_link(name) + drop_down_sublist(&block)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def drop_down_sublist(&block)
|
41
|
+
content_tag :ul, :class => "dropdown-menu", &block
|
42
|
+
end
|
43
|
+
|
44
|
+
def drop_down_submenu(name, &block)
|
45
|
+
content_tag :li, :class => "dropdown-submenu" do
|
46
|
+
link_to(name, "") + drop_down_list(&block)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def drop_down_divider
|
51
|
+
content_tag :li, "", :class => "divider"
|
52
|
+
end
|
53
|
+
|
54
|
+
def drop_down_header(text)
|
55
|
+
content_tag :li, text, :class => "nav-header"
|
56
|
+
end
|
57
|
+
|
58
|
+
def menu_divider
|
59
|
+
content_tag :li, "", :class => "divider-vertical"
|
60
|
+
end
|
61
|
+
|
62
|
+
def menu_text(text=nil, options={}, &block)
|
63
|
+
pull = options.delete(:pull)
|
64
|
+
pull_class = pull.present? ? "pull-#{pull.to_s}" : nil
|
65
|
+
options.append_merge!(:class, pull_class)
|
66
|
+
options.append_merge!(:class, "navbar-text")
|
67
|
+
content_tag :p, options do
|
68
|
+
text || yield
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
# Returns current url or path state (useful for buttons).
|
73
|
+
# Example:
|
74
|
+
# # Assume we'r currently at blog/categories/test
|
75
|
+
# uri_state('/blog/categories/test', {}) # :active
|
76
|
+
# uri_state('/blog/categories', {}) # :chosen
|
77
|
+
# uri_state('/blog/categories/test', {method: delete}) # :inactive
|
78
|
+
# uri_state('/blog/categories/test/3', {}) # :inactive
|
79
|
+
def uri_state(uri, options={})
|
80
|
+
return options[:status] if options.key?(:status)
|
81
|
+
|
82
|
+
root_url = request.host_with_port + '/'
|
83
|
+
root = uri == '/' || uri == root_url
|
84
|
+
|
85
|
+
request_uri = if uri.start_with?(root_url)
|
86
|
+
request.url
|
87
|
+
else
|
88
|
+
request.path
|
89
|
+
end
|
90
|
+
|
91
|
+
if !options[:method].nil? || !options["data-method"].nil?
|
92
|
+
:inactive
|
93
|
+
elsif uri == request_uri || (options[:root] && (request_uri == '/') || (request_uri == root_url))
|
94
|
+
:active
|
95
|
+
else
|
96
|
+
if request_uri.start_with?(uri) and not(root)
|
97
|
+
:chosen
|
98
|
+
else
|
99
|
+
:inactive
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
private
|
105
|
+
|
106
|
+
def nav_bar_nav(options, &block)
|
107
|
+
|
108
|
+
position = "static-#{options[:static].to_s}" if options[:static]
|
109
|
+
position = "fixed-#{options[:fixed].to_s}" if options[:fixed]
|
110
|
+
inverse = (options[:inverse].present? && options[:inverse] == true) ? true : false
|
111
|
+
|
112
|
+
content_tag :nav, :class => nav_bar_css_class(position, inverse), :role => "navigation" do
|
113
|
+
yield
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
def container_div(brand, brand_link, responsive, fluid, no_turbolink, &block)
|
118
|
+
div_container_class = fluid ? "container-fluid" : "container"
|
119
|
+
no_turbolink ||= false
|
120
|
+
|
121
|
+
content_tag :div, :class => div_container_class do
|
122
|
+
container_div_with_block(brand, brand_link, responsive, no_turbolink, &block)
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
def container_div_with_block(brand, brand_link, responsive, no_turbolink, &block)
|
127
|
+
output = []
|
128
|
+
if responsive == true
|
129
|
+
output << responsive_nav_header(brand, brand_link, no_turbolink)
|
130
|
+
output << responsive_div { capture(&block) }
|
131
|
+
else
|
132
|
+
output << brand_link(brand, brand_link, no_turbolink)
|
133
|
+
output << capture(&block)
|
134
|
+
end
|
135
|
+
output.join("\n").html_safe
|
136
|
+
end
|
137
|
+
|
138
|
+
def responsive_nav_header(brand, brand_link, no_turbolink)
|
139
|
+
content_tag(:div, :class => "navbar-header") do
|
140
|
+
output = []
|
141
|
+
output << responsive_button
|
142
|
+
output << brand_link(brand, brand_link, no_turbolink)
|
143
|
+
output.join("\n").html_safe
|
144
|
+
end
|
145
|
+
end
|
146
|
+
|
147
|
+
def nav_bar_css_class(position, inverse = false)
|
148
|
+
css_class = ["navbar", "navbar-default"]
|
149
|
+
css_class << "navbar-#{position}" if position.present?
|
150
|
+
css_class << "navbar-inverse" if inverse
|
151
|
+
css_class.join(" ")
|
152
|
+
end
|
153
|
+
|
154
|
+
def brand_link(name, url, no_turbolink)
|
155
|
+
return "" if name.blank?
|
156
|
+
url ||= root_url
|
157
|
+
|
158
|
+
if no_turbolink
|
159
|
+
link_to(name, url, :class => "navbar-brand", :data => { :no_turbolink => true})
|
160
|
+
else
|
161
|
+
link_to(name, url, :class => "navbar-brand")
|
162
|
+
end
|
163
|
+
end
|
164
|
+
|
165
|
+
def responsive_button
|
166
|
+
'<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
|
167
|
+
<span class="sr-only">Toggle navigation</span>
|
168
|
+
<span class="icon-bar"></span>
|
169
|
+
<span class="icon-bar"></span>
|
170
|
+
<span class="icon-bar"></span>
|
171
|
+
</button>'
|
172
|
+
end
|
173
|
+
|
174
|
+
def responsive_div(&block)
|
175
|
+
content_tag(:div, :class => "navbar-collapse collapse", &block)
|
176
|
+
end
|
177
|
+
|
178
|
+
def is_active?(path, options={})
|
179
|
+
state = uri_state(path, options)
|
180
|
+
'active' if state.in?([:active, :chosen]) || state === true
|
181
|
+
end
|
182
|
+
|
183
|
+
def name_and_caret(name)
|
184
|
+
"#{name} #{content_tag(:b, :class => "caret") {}}".html_safe
|
185
|
+
end
|
186
|
+
|
187
|
+
def drop_down_link(name)
|
188
|
+
link_to(name_and_caret(name), "#", :class => "dropdown-toggle", "data-toggle" => "dropdown")
|
189
|
+
end
|
190
|
+
|
191
|
+
def drop_down_list(&block)
|
192
|
+
content_tag :ul, :class => "dropdown-menu", &block
|
193
|
+
end
|
194
|
+
end
|
195
|
+
end
|
196
|
+
|
197
|
+
class Hash
|
198
|
+
# appends a string to a hash key's value after a space character (Good for merging CSS classes in options hashes)
|
199
|
+
def append_merge!(key, value)
|
200
|
+
# just return self if value is blank
|
201
|
+
return self if value.blank?
|
202
|
+
|
203
|
+
current_value = self[key]
|
204
|
+
# just merge if it doesn't already have that key
|
205
|
+
self[key] = value and return if current_value.blank?
|
206
|
+
# raise error if we're trying to merge into something that isn't a string
|
207
|
+
raise ArgumentError, "Can only merge strings" unless current_value.is_a?(String)
|
208
|
+
self[key] = [current_value, value].compact.join(" ")
|
209
|
+
end
|
210
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
<% if @breadcrumbs.present? %>
|
2
|
+
<ul class="breadcrumb <%= options[:class] %>">
|
3
|
+
<% separator = divider.html_safe %>
|
4
|
+
<% @breadcrumbs[0..-2].each do |crumb| %>
|
5
|
+
<li class="<%= options[:item_class] %>">
|
6
|
+
<%= link_to crumb[:name], crumb[:url], crumb[:options] %>
|
7
|
+
<span class="divider <%= options[:divider_class] %>"><%= separator %></span>
|
8
|
+
</li>
|
9
|
+
<% end %>
|
10
|
+
<li class="<%= options[:active_class] %>">
|
11
|
+
<%= @breadcrumbs.last[:name] %>
|
12
|
+
</li>
|
13
|
+
</ul>
|
14
|
+
<% end %>
|