Browse files

Now upgraded to Bootstrap v2.0.0 i.e. using the FoBo Bootstrap200

init option.
  • Loading branch information...
1 parent bd1e545 commit cc0417f347a5fc09e94e3bd25d6541582792ffdc @karma4u101 karma4u101 committed Feb 18, 2012
Showing with 19,488 additions and 11 deletions.
  1. +3 −4 README.md
  2. +1 −1 build.sbt
  3. +3 −3 src/main/scala/bootstrap/liftweb/Boot.scala
  4. +794 −0 src/main/webapp/bootstrap/assets/css/docs.css
  5. BIN src/main/webapp/bootstrap/assets/ico/bootstrap-apple-114x114.png
  6. BIN src/main/webapp/bootstrap/assets/ico/bootstrap-apple-57x57.png
  7. BIN src/main/webapp/bootstrap/assets/ico/bootstrap-apple-72x72.png
  8. BIN src/main/webapp/bootstrap/assets/ico/favicon.ico
  9. BIN src/main/webapp/bootstrap/assets/img/bird.png
  10. BIN src/main/webapp/bootstrap/assets/img/bootstrap-mdo-sfmoma-01.jpg
  11. BIN src/main/webapp/bootstrap/assets/img/bootstrap-mdo-sfmoma-02.jpg
  12. BIN src/main/webapp/bootstrap/assets/img/bootstrap-mdo-sfmoma-03.jpg
  13. BIN src/main/webapp/bootstrap/assets/img/browsers.png
  14. BIN src/main/webapp/bootstrap/assets/img/example-diagram-01.png
  15. BIN src/main/webapp/bootstrap/assets/img/example-diagram-02.png
  16. BIN src/main/webapp/bootstrap/assets/img/example-diagram-03.png
  17. BIN src/main/webapp/bootstrap/assets/img/example-sites/bartop.png
  18. BIN src/main/webapp/bootstrap/assets/img/example-sites/fleetio.png
  19. BIN src/main/webapp/bootstrap/assets/img/example-sites/jshint.png
  20. BIN src/main/webapp/bootstrap/assets/img/example-sites/kippt.png
  21. BIN src/main/webapp/bootstrap/assets/img/example-sites/railwayjs.png
  22. BIN src/main/webapp/bootstrap/assets/img/example-sites/totalwireframe.png
  23. BIN src/main/webapp/bootstrap/assets/img/examples/bootstrap-example-fluid.jpg
  24. BIN src/main/webapp/bootstrap/assets/img/examples/bootstrap-example-hero.jpg
  25. BIN src/main/webapp/bootstrap/assets/img/examples/bootstrap-example-starter.jpg
  26. BIN src/main/webapp/bootstrap/assets/img/github-16px.png
  27. BIN src/main/webapp/bootstrap/assets/img/glyphicons-halflings-white.png
  28. BIN src/main/webapp/bootstrap/assets/img/glyphicons-halflings.png
  29. BIN src/main/webapp/bootstrap/assets/img/glyphicons/glyphicons_009_magic.png
  30. BIN src/main/webapp/bootstrap/assets/img/glyphicons/glyphicons_042_group.png
  31. BIN src/main/webapp/bootstrap/assets/img/glyphicons/glyphicons_079_podium.png
  32. BIN src/main/webapp/bootstrap/assets/img/glyphicons/glyphicons_082_roundabout.png
  33. BIN src/main/webapp/bootstrap/assets/img/glyphicons/glyphicons_155_show_thumbnails.png
  34. BIN src/main/webapp/bootstrap/assets/img/glyphicons/glyphicons_163_iphone.png
  35. BIN src/main/webapp/bootstrap/assets/img/glyphicons/glyphicons_214_resize_small.png
  36. BIN src/main/webapp/bootstrap/assets/img/glyphicons/glyphicons_266_book_open.png
  37. BIN src/main/webapp/bootstrap/assets/img/grid-18px-masked.png
  38. BIN src/main/webapp/bootstrap/assets/img/icon-css3.png
  39. BIN src/main/webapp/bootstrap/assets/img/icon-github.png
  40. BIN src/main/webapp/bootstrap/assets/img/icon-html5.png
  41. BIN src/main/webapp/bootstrap/assets/img/icon-twitter.png
  42. BIN src/main/webapp/bootstrap/assets/img/less-logo-large.png
  43. BIN src/main/webapp/bootstrap/assets/img/less-small.png
  44. BIN src/main/webapp/bootstrap/assets/img/responsive-illustrations.png
  45. +106 −0 src/main/webapp/bootstrap/assets/js/README.md
  46. +180 −0 src/main/webapp/bootstrap/assets/js/application.js
  47. +91 −0 src/main/webapp/bootstrap/assets/js/bootstrap-alert.js
  48. +98 −0 src/main/webapp/bootstrap/assets/js/bootstrap-button.js
  49. +154 −0 src/main/webapp/bootstrap/assets/js/bootstrap-carousel.js
  50. +136 −0 src/main/webapp/bootstrap/assets/js/bootstrap-collapse.js
  51. +92 −0 src/main/webapp/bootstrap/assets/js/bootstrap-dropdown.js
  52. +210 −0 src/main/webapp/bootstrap/assets/js/bootstrap-modal.js
  53. +95 −0 src/main/webapp/bootstrap/assets/js/bootstrap-popover.js
  54. +125 −0 src/main/webapp/bootstrap/assets/js/bootstrap-scrollspy.js
  55. +130 −0 src/main/webapp/bootstrap/assets/js/bootstrap-tab.js
  56. +270 −0 src/main/webapp/bootstrap/assets/js/bootstrap-tooltip.js
  57. +51 −0 src/main/webapp/bootstrap/assets/js/bootstrap-transition.js
  58. +271 −0 src/main/webapp/bootstrap/assets/js/bootstrap-typeahead.js
  59. +30 −0 src/main/webapp/bootstrap/assets/js/google-code-prettify/prettify.css
  60. +28 −0 src/main/webapp/bootstrap/assets/js/google-code-prettify/prettify.js
  61. +9,252 −0 src/main/webapp/bootstrap/assets/js/jquery.js
  62. +1,583 −0 src/main/webapp/bootstrap/base-css.html
  63. +1,517 −0 src/main/webapp/bootstrap/components.html
  64. +363 −0 src/main/webapp/bootstrap/download.html
  65. +146 −0 src/main/webapp/bootstrap/examples.html
  66. +154 −0 src/main/webapp/bootstrap/examples/fluid.html
  67. +112 −0 src/main/webapp/bootstrap/examples/hero.html
  68. +81 −0 src/main/webapp/bootstrap/examples/starter-template.html
  69. +252 −0 src/main/webapp/bootstrap/index.html
  70. +1,492 −0 src/main/webapp/bootstrap/javascript.html
  71. +798 −0 src/main/webapp/bootstrap/less.html
  72. +439 −0 src/main/webapp/bootstrap/scaffolding.html
  73. +299 −0 src/main/webapp/bootstrap/upgrading.html
  74. +18 −0 src/main/webapp/css/app.css
  75. +97 −0 src/main/webapp/templates-hidden/_embededTopNavbar.html
  76. +11 −0 src/main/webapp/templates-hidden/_resources.html
  77. +6 −3 src/main/webapp/templates-hidden/default.html
View
7 README.md
@@ -1,9 +1,8 @@
Templating With Twitter Bootstrap
=================================
-
-**This is work in progress!** You can take a peek at it right now but i suggest you also check back later for a better experience.
-This example is now using the [FoBo - Lift Front-End Toolkit Module](https://github.com/karma4u101/FoBo)
+This lift template example is using the [FoBo - Lift Front-End Toolkit Module](https://github.com/karma4u101/FoBo) with
+the Bootstrap002 option enabled in boot.
The intention of this example is to show some of Lifts templating features in conjunction with the front-end toolkit
[Twitter Bootstrap](http://twitter.github.com/bootstrap/).
@@ -18,7 +17,7 @@ best regards Peter Petersson
Quick Start
-----------
-The only prerequisites for running this Lift example is that you have Git and Java installed and configured on the target computer.
+The only prerequisites for running this Lift example is that you have the FoBo module set up, Git and Java installed and configured on the target computer.
You don't need to use it but the project also includes a Eclipse plug-in for browsing and following/working with the code, see the Scala IDE section.
1) Get the examples
View
2 build.sbt
@@ -3,7 +3,7 @@ organization := "Lift"
name := "Templating With Twitter Bootstrap"
-version := "0.2-SNAPSHOT"
+version := "0.3-SNAPSHOT"
scalaVersion := "2.9.1"
View
6 src/main/scala/bootstrap/liftweb/Boot.scala
@@ -26,7 +26,7 @@ class Boot extends Loggable {
LiftRules.addToPackages("code")
FoBoInitParams.JQuery=JQuery171
- FoBoInitParams.ToolKit=Bootstrap140
+ FoBoInitParams.ToolKit=Bootstrap200
FoBo.init()
/*un-comment and switch to db of your liking */
@@ -68,8 +68,8 @@ class Boot extends Loggable {
// more complex because this menu allows anything in the
// /static path to be visible
- Menu(Loc("Bootstrap examples", Link(List("static"), true, "/static/index"),
- "Bootstrap examples")))
+ Menu(Loc("Bootstrap", Link(List("bootstrap"), true, "/bootstrap/index"),
+ "Bootstrap")))
//def sitemapMutators = User.sitemapMutator
View
794 src/main/webapp/bootstrap/assets/css/docs.css
@@ -0,0 +1,794 @@
+/* Add additional stylesheets below
+-------------------------------------------------- */
+/*
+ Bootstrap's documentation styles
+ Special styles for presenting Bootstrap's documentation and examples
+*/
+
+/*Foundation overrides */
+li {
+ margin-bottom: 0px;
+}
+
+/* Body and structure
+-------------------------------------------------- */
+body {
+ position: relative;
+ padding-top: 90px;
+ background-color: #fff;
+ background-image: url(../img/grid-18px-masked.png);
+ background-repeat: repeat-x;
+ background-position: 0 40px;
+}
+
+
+/* Tweak navbar brand link to be super sleek
+-------------------------------------------------- */
+.navbar-fixed-top .brand {
+ padding-right: 0;
+ padding-left: 0;
+ margin-left: 20px;
+ float: right;
+ font-weight: bold;
+ color: #000;
+ text-shadow: 0 1px 0 rgba(255,255,255,.1), 0 0 30px rgba(255,255,255,.125);
+ -webkit-transition: all .2s linear;
+ -moz-transition: all .2s linear;
+ transition: all .2s linear;
+}
+.navbar-fixed-top .brand:hover {
+ text-decoration: none;
+}
+
+
+/* Space out sub-sections more
+-------------------------------------------------- */
+section {
+ padding-top: 60px;
+}
+
+/* Faded out hr */
+hr.soften {
+ height: 1px;
+ margin: 54px 0;
+ background-image: -webkit-linear-gradient(left, rgba(0,0,0,0), rgba(0,0,0,.1), rgba(0,0,0,0));
+ background-image: -moz-linear-gradient(left, rgba(0,0,0,0), rgba(0,0,0,.1), rgba(0,0,0,0));
+ background-image: -ms-linear-gradient(left, rgba(0,0,0,0), rgba(0,0,0,.1), rgba(0,0,0,0));
+ background-image: -o-linear-gradient(left, rgba(0,0,0,0), rgba(0,0,0,.1), rgba(0,0,0,0));
+ border: 0;
+}
+
+
+/* Jumbotrons
+-------------------------------------------------- */
+.jumbotron {
+ position: relative;
+}
+.jumbotron h1 {
+ margin-bottom: 9px;
+ font-size: 81px;
+ letter-spacing: -1px;
+ line-height: 1;
+}
+.jumbotron p {
+ margin-bottom: 18px;
+ font-weight: 300;
+}
+.jumbotron .btn-large {
+ font-size: 20px;
+ font-weight: normal;
+ padding: 14px 24px;
+ margin-right: 10px;
+ -webkit-border-radius: 6px;
+ -moz-border-radius: 6px;
+ border-radius: 6px;
+}
+
+/* Masthead (docs home) */
+.masthead {
+ padding-top: 36px;
+ margin-bottom: 72px;
+}
+.masthead h1,
+.masthead p {
+ text-align: center;
+}
+.masthead h1 {
+ margin-bottom: 18px;
+}
+.masthead p {
+ margin-left: 5%;
+ margin-right: 5%;
+ font-size: 30px;
+ line-height: 36px;
+}
+
+
+/* Specific jumbotrons
+------------------------- */
+/* supporting docs pages */
+.subhead {
+ padding-bottom: 0;
+ margin-bottom: 9px;
+}
+.subhead h1 {
+ font-size: 54px;
+}
+
+/* Subnav */
+.subnav {
+ width: 100%;
+ height: 36px;
+ background-color: #eeeeee; /* Old browsers */
+ background-repeat: repeat-x; /* Repeat the gradient */
+ background-image: -moz-linear-gradient(top, #f5f5f5 0%, #eeeeee 100%); /* FF3.6+ */
+ background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#f5f5f5), color-stop(100%,#eeeeee)); /* Chrome,Safari4+ */
+ background-image: -webkit-linear-gradient(top, #f5f5f5 0%,#eeeeee 100%); /* Chrome 10+,Safari 5.1+ */
+ background-image: -ms-linear-gradient(top, #f5f5f5 0%,#eeeeee 100%); /* IE10+ */
+ background-image: -o-linear-gradient(top, #f5f5f5 0%,#eeeeee 100%); /* Opera 11.10+ */
+ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f5f5f5', endColorstr='#eeeeee',GradientType=0 ); /* IE6-9 */
+ background-image: linear-gradient(top, #f5f5f5 0%,#eeeeee 100%); /* W3C */
+ border: 1px solid #e5e5e5;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+}
+.subnav .nav {
+ margin-bottom: 0;
+}
+.subnav .nav > li > a {
+ margin: 0;
+ padding-top: 11px;
+ padding-bottom: 11px;
+ border-left: 1px solid #f5f5f5;
+ border-right: 1px solid #e5e5e5;
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+ border-radius: 0;
+}
+.subnav .nav > .active > a,
+.subnav .nav > .active > a:hover {
+ padding-left: 13px;
+ color: #777;
+ background-color: #e9e9e9;
+ border-right-color: #ddd;
+ border-left: 0;
+ -webkit-box-shadow: inset 0 3px 5px rgba(0,0,0,.05);
+ -moz-box-shadow: inset 0 3px 5px rgba(0,0,0,.05);
+ box-shadow: inset 0 3px 5px rgba(0,0,0,.05);
+}
+.subnav .nav > .active > a .caret,
+.subnav .nav > .active > a:hover .caret {
+ border-top-color: #777;
+}
+.subnav .nav > li:first-child > a,
+.subnav .nav > li:first-child > a:hover {
+ border-left: 0;
+ padding-left: 12px;
+ -webkit-border-radius: 4px 0 0 4px;
+ -moz-border-radius: 4px 0 0 4px;
+ border-radius: 4px 0 0 4px;
+}
+.subnav .nav > li:last-child > a {
+ border-right: 0;
+}
+.subnav .dropdown-menu {
+ -webkit-border-radius: 0 0 4px 4px;
+ -moz-border-radius: 0 0 4px 4px;
+ border-radius: 0 0 4px 4px;
+}
+
+/* Fixed subnav on scroll, but only for 980px and up (sorry IE!) */
+@media (min-width: 980px) {
+ .subnav-fixed {
+ position: fixed;
+ top: 40px;
+ left: 0;
+ right: 0;
+ z-index: 1030;
+ border-color: #d5d5d5;
+ border-width: 0 0 1px; /* drop the border on the fixed edges */
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+ border-radius: 0;
+ -webkit-box-shadow: inset 0 1px 0 #fff, 0 1px 5px rgba(0,0,0,.1);
+ -moz-box-shadow: inset 0 1px 0 #fff, 0 1px 5px rgba(0,0,0,.1);
+ box-shadow: inset 0 1px 0 #fff, 0 1px 5px rgba(0,0,0,.1);
+ }
+ .subnav-fixed .nav {
+ width: 938px;
+ margin: 0 auto;
+ padding: 0 1px;
+ }
+ .subnav .nav > li:first-child > a,
+ .subnav .nav > li:first-child > a:hover {
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+ border-radius: 0;
+ }
+}
+
+
+/* Quick links
+-------------------------------------------------- */
+.quick-links {
+ min-height: 30px;
+ padding: 5px 20px;
+ margin: 36px 0;
+ list-style: none;
+ text-align: center;
+ overflow: hidden;
+}
+.quick-links li {
+ display: inline;
+ margin: 0 5px;
+ color: #999;
+}
+.quick-links .github-btn,
+.quick-links .tweet-btn,
+.quick-links .follow-btn {
+ position: relative;
+ top: 5px;
+}
+
+
+/* Marketing section of Overview
+-------------------------------------------------- */
+.marketing .row {
+ margin-bottom: 9px;
+}
+.marketing h1 {
+ margin: 36px 0 27px;
+ font-size: 40px;
+ font-weight: 300;
+ text-align: center;
+}
+.marketing h2,
+.marketing h3 {
+ font-weight: 300;
+}
+.marketing h2 {
+ font-size: 22px;
+}
+.marketing p {
+ margin-right: 10px;
+}
+.marketing .bs-icon {
+ float: left;
+ margin: 7px 10px 0 0;
+ opacity: .8;
+}
+.marketing .small-bs-icon {
+ float: left;
+ margin: 4px 5px 0 0;
+}
+
+
+
+/* Footer
+-------------------------------------------------- */
+.footer {
+ margin-top: 45px;
+ padding: 35px 0 36px;
+ border-top: 1px solid #e5e5e5;
+}
+.footer p {
+ margin-bottom: 0;
+ color: #555;
+}
+
+
+
+/* Special grid styles
+-------------------------------------------------- */
+.show-grid {
+ margin-top: 10px;
+ margin-bottom: 20px;
+}
+.show-grid [class*="span"] {
+ background-color: #eee;
+ text-align: center;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+ min-height: 30px;
+ line-height: 30px;
+}
+.show-grid:hover [class*="span"] {
+ background: #ddd;
+}
+.show-grid .show-grid {
+ margin-top: 0;
+ margin-bottom: 0;
+}
+.show-grid .show-grid [class*="span"] {
+ background-color: #ccc;
+}
+
+
+/* Render mini layout previews
+-------------------------------------------------- */
+.mini-layout {
+ border: 1px solid #ddd;
+ -webkit-border-radius: 6px;
+ -moz-border-radius: 6px;
+ border-radius: 6px;
+ -webkit-box-shadow: 0 1px 2px rgba(0,0,0,.075);
+ -moz-box-shadow: 0 1px 2px rgba(0,0,0,.075);
+ box-shadow: 0 1px 2px rgba(0,0,0,.075);
+}
+.mini-layout {
+ height: 240px;
+ margin-bottom: 20px;
+ padding: 9px;
+}
+.mini-layout div {
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+}
+.mini-layout .mini-layout-body {
+ background-color: #dceaf4;
+ margin: 0 auto;
+ width: 70%;
+ height: 240px;
+}
+.mini-layout.fluid .mini-layout-sidebar,
+.mini-layout.fluid .mini-layout-header,
+.mini-layout.fluid .mini-layout-body {
+ float: left;
+}
+.mini-layout.fluid .mini-layout-sidebar {
+ background-color: #bbd8e9;
+ width: 20%;
+ height: 240px;
+}
+.mini-layout.fluid .mini-layout-body {
+ width: 77.5%;
+ margin-left: 2.5%;
+}
+
+
+/* Popover docs
+-------------------------------------------------- */
+.popover-well {
+ min-height: 160px;
+}
+.popover-well .popover {
+ display: block;
+}
+.popover-well .popover-wrapper {
+ width: 50%;
+ height: 160px;
+ float: left;
+ margin-left: 55px;
+ position: relative;
+}
+.popover-well .popover-menu-wrapper {
+ height: 80px;
+}
+.large-bird {
+ margin: 5px 0 0 310px;
+ opacity: .1;
+}
+
+
+/* Download page
+-------------------------------------------------- */
+.download .page-header {
+ margin-top: 36px;
+}
+.page-header .toggle-all {
+ margin-top: 5px;
+}
+
+/* Space out h3s when following a section */
+.download h3 {
+ margin-bottom: 5px;
+}
+.download-builder input + h3,
+.download-builder .checkbox + h3 {
+ margin-top: 9px;
+}
+
+/* Fields for variables */
+.download-builder input[type=text] {
+ margin-bottom: 9px;
+ font-family: Menlo, Monaco, "Courier New", monospace;
+ font-size: 12px;
+ color: #d14;
+}
+.download-builder input[type=text]:focus {
+ background-color: #fff;
+}
+
+/* Custom, larger checkbox labels */
+.download .checkbox {
+ padding: 6px 10px 6px 25px;
+ color: #555;
+ background-color: #f9f9f9;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+ cursor: pointer;
+}
+.download .checkbox:hover {
+ color: #333;
+ background-color: #f5f5f5;
+}
+.download .checkbox small {
+ font-size: 12px;
+ color: #777;
+}
+
+/* Variables section */
+#variables label {
+ margin-bottom: 0;
+}
+
+/* Giant download button */
+.download-btn {
+ margin: 36px 0 108px;
+}
+.download p,
+.download h4 {
+ max-width: 50%;
+ margin: 0 auto;
+ color: #999;
+ text-align: center;
+}
+.download h4 {
+ margin-bottom: 0;
+}
+.download p {
+ margin-bottom: 18px;
+}
+.download-btn .btn {
+ display: block;
+ width: auto;
+ padding: 19px 24px;
+ margin-bottom: 27px;
+ font-size: 30px;
+ line-height: 1;
+ text-align: center;
+ -webkit-border-radius: 6px;
+ -moz-border-radius: 6px;
+ border-radius: 6px;
+}
+
+
+
+/* Color swatches on LESS docs page
+-------------------------------------------------- */
+/* Sets the width of the td */
+.swatch-col {
+ width: 30px;
+}
+/* Le swatch */
+.swatch {
+ display: inline-block;
+ width: 30px;
+ height: 20px;
+ margin: -6px 0;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+}
+/* For white swatches, give a border */
+.swatch-bordered {
+ width: 28px;
+ height: 18px;
+ border: 1px solid #eee;
+}
+
+
+/* Misc
+-------------------------------------------------- */
+
+pre.prettyprint {
+ overflow: hidden;
+}
+
+.browser-support {
+ max-width: 100%;
+}
+
+/* Make tables spaced out a bit more */
+h2 + table,
+h3 + table,
+h4 + table,
+h2 + .row {
+ margin-top: 5px;
+}
+
+/* Example sites showcase */
+.example-sites img {
+ max-width: 100%;
+ margin: 0 auto;
+}
+.marketing-byline {
+ margin: -18px 0 27px;
+ font-size: 18px;
+ font-weight: 300;
+ line-height: 24px;
+ color: #999;
+ text-align: center;
+}
+
+.scrollspy-example {
+ height: 200px;
+ overflow: auto;
+ position: relative;
+}
+
+/* Remove bottom margin on example forms in wells */
+form.well {
+ padding: 14px;
+}
+
+/* Tighten up spacing */
+.well hr {
+ margin: 18px 0;
+}
+
+/* Fake the :focus state to demo it */
+.focused {
+ border-color: rgba(82,168,236,.8);
+ -webkit-box-shadow: inset 0 1px 3px rgba(0,0,0,.1), 0 0 8px rgba(82,168,236,.6);
+ -moz-box-shadow: inset 0 1px 3px rgba(0,0,0,.1), 0 0 8px rgba(82,168,236,.6);
+ box-shadow: inset 0 1px 3px rgba(0,0,0,.1), 0 0 8px rgba(82,168,236,.6);
+ outline: 0;
+}
+
+/* For input sizes, make them display block */
+.docs-input-sizes select,
+.docs-input-sizes input[type=text] {
+ display: block;
+ margin-bottom: 9px;
+}
+
+/* Icons
+------------------------- */
+.the-icons {
+ margin-bottom: 18px;
+}
+.the-icons i {
+ display: block;
+ margin-bottom: 5px;
+}
+.the-icons i:hover {
+ background-color: rgba(255,0,0,.25);
+}
+.the-icons i:after {
+ display: block;
+ content: attr(class);
+ font-style: normal;
+ margin-left: 20px;
+ width: 140px;
+}
+#javascript input[type=checkbox] {
+ position: relative;
+ top: -1px;
+ display: inline;
+ margin-left: 6px;
+}
+
+/* Eaxmples page
+------------------------- */
+.bootstrap-examples .thumbnail {
+ margin-bottom: 9px;
+ background-color: #fff;
+}
+
+
+/* Responsive Docs
+-------------------------------------------------- */
+@media (max-width: 480px) {
+
+ /* Reduce padding above jumbotron */
+ body {
+ padding-top: 70px;
+ }
+
+ /* Change up some type stuff */
+ h2 {
+ margin-top: 27px;
+ }
+ h2 small {
+ display: block;
+ line-height: 18px;
+ }
+ h3 {
+ margin-top: 18px;
+ }
+
+ /* Adjust the jumbotron */
+ .jumbotron h1,
+ .jumbotron p {
+ text-align: center;
+ margin-right: 0;
+ }
+ .jumbotron h1 {
+ font-size: 45px;
+ margin-right: 0;
+ }
+ .jumbotron p {
+ margin-right: 0;
+ margin-left: 0;
+ font-size: 18px;
+ line-height: 24px;
+ }
+ .jumbotron .btn {
+ display: block;
+ font-size: 18px;
+ padding: 10px 14px;
+ margin: 0 auto 10px;
+ }
+ /* Masthead (home page jumbotron) */
+ .masthead {
+ padding-top: 0;
+ }
+
+ /* Don't space out quick links so much */
+ .quick-links {
+ margin: 40px 0 0;
+ }
+ /* hide the bullets on mobile since our horizontal space is limited */
+ .quick-links .divider {
+ display: none;
+ }
+
+ /* center example sites */
+ .example-sites {
+ margin-left: 0;
+ }
+ .example-sites > li {
+ float: none;
+ display: block;
+ max-width: 280px;
+ margin: 0 auto 18px;
+ text-align: center;
+ }
+ .example-sites .thumbnail > img {
+ max-width: 270px;
+ }
+
+ table code {
+ white-space: normal;
+ word-wrap: break-word;
+ word-break: break-all;
+ }
+
+ /* Modal example */
+ .modal-example .modal {
+ position: relative;
+ top: auto;
+ right: auto;
+ bottom: auto;
+ left: auto;
+ }
+
+}
+
+
+@media (max-width: 768px) {
+
+ /* Remove any padding from the body */
+ body {
+ padding-top: 0;
+ }
+
+ /* Jumbotron buttons */
+ .jumbotron .btn {
+ margin-bottom: 10px;
+ }
+
+ /* Subnav */
+ .subnav {
+ position: static;
+ top: auto;
+ z-index: auto;
+ width: auto;
+ height: auto;
+ background: #fff; /* whole background property since we use a background-image for gradient */
+ -webkit-box-shadow: none;
+ -moz-box-shadow: none;
+ box-shadow: none;
+ }
+ .subnav .nav > li {
+ float: none;
+ }
+ .subnav .nav > li > a {
+ border: 0;
+ }
+ .subnav .nav > li + li > a {
+ border-top: 1px solid #e5e5e5;
+ }
+ .subnav .nav > li:first-child > a,
+ .subnav .nav > li:first-child > a:hover {
+ -webkit-border-radius: 4px 4px 0 0;
+ -moz-border-radius: 4px 4px 0 0;
+ border-radius: 4px 4px 0 0;
+ }
+
+ /* Popovers */
+ .large-bird {
+ display: none;
+ }
+ .popover-well .popover-wrapper {
+ margin-left: 0;
+ }
+
+ /* Space out the show-grid examples */
+ .show-grid [class*="span"] {
+ margin-bottom: 5px;
+ }
+
+ /* Unfloat the back to top link in footer */
+ .footer .pull-right {
+ float: none;
+ }
+ .footer p {
+ margin-bottom: 9px;
+ }
+
+}
+
+
+@media (min-width: 480px) and (max-width: 768px) {
+
+ /* Scale down the jumbotron content */
+ .jumbotron h1 {
+ font-size: 54px;
+ }
+ .jumbotron p {
+ margin-right: 0;
+ margin-left: 0;
+ }
+
+}
+
+
+@media (min-width: 768px) and (max-width: 980px) {
+
+ /* Remove any padding from the body */
+ body {
+ padding-top: 0;
+ }
+
+ /* Scale down the jumbotron content */
+ .jumbotron h1 {
+ font-size: 72px;
+ }
+
+}
+
+
+@media (max-width: 980px) {
+
+ /* Unfloat brand */
+ .navbar-fixed-top .brand {
+ float: left;
+ margin-left: 0;
+ padding-left: 10px;
+ padding-right: 10px;
+ }
+
+ /* Inline-block quick links for more spacing */
+ .quick-links li {
+ display: inline-block;
+ margin: 5px;
+ }
+
+}
+
+
+/* LARGE DESKTOP SCREENS */
+@media (min-width: 1210px) {
+
+ /* Update subnav bo-container */
+ .subnav-fixed .nav {
+ width: 1168px; /* 2px less to account for left/right borders being removed when in fixed mode */
+ }
+
+}
View
BIN src/main/webapp/bootstrap/assets/ico/bootstrap-apple-114x114.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN src/main/webapp/bootstrap/assets/ico/bootstrap-apple-57x57.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN src/main/webapp/bootstrap/assets/ico/bootstrap-apple-72x72.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN src/main/webapp/bootstrap/assets/ico/favicon.ico
Binary file not shown.
View
BIN src/main/webapp/bootstrap/assets/img/bird.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN src/main/webapp/bootstrap/assets/img/bootstrap-mdo-sfmoma-01.jpg
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN src/main/webapp/bootstrap/assets/img/bootstrap-mdo-sfmoma-02.jpg
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN src/main/webapp/bootstrap/assets/img/bootstrap-mdo-sfmoma-03.jpg
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN src/main/webapp/bootstrap/assets/img/browsers.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN src/main/webapp/bootstrap/assets/img/example-diagram-01.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN src/main/webapp/bootstrap/assets/img/example-diagram-02.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN src/main/webapp/bootstrap/assets/img/example-diagram-03.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN src/main/webapp/bootstrap/assets/img/example-sites/bartop.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN src/main/webapp/bootstrap/assets/img/example-sites/fleetio.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN src/main/webapp/bootstrap/assets/img/example-sites/jshint.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN src/main/webapp/bootstrap/assets/img/example-sites/kippt.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN src/main/webapp/bootstrap/assets/img/example-sites/railwayjs.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN src/main/webapp/bootstrap/assets/img/example-sites/totalwireframe.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN src/main/webapp/bootstrap/assets/img/examples/bootstrap-example-fluid.jpg
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN src/main/webapp/bootstrap/assets/img/examples/bootstrap-example-hero.jpg
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN src/main/webapp/bootstrap/assets/img/examples/bootstrap-example-starter.jpg
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN src/main/webapp/bootstrap/assets/img/github-16px.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN src/main/webapp/bootstrap/assets/img/glyphicons-halflings-white.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN src/main/webapp/bootstrap/assets/img/glyphicons-halflings.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN src/main/webapp/bootstrap/assets/img/glyphicons/glyphicons_009_magic.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN src/main/webapp/bootstrap/assets/img/glyphicons/glyphicons_042_group.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN src/main/webapp/bootstrap/assets/img/glyphicons/glyphicons_079_podium.png
Diff not rendered.
View
BIN src/main/webapp/bootstrap/assets/img/glyphicons/glyphicons_082_roundabout.png
Diff not rendered.
View
BIN src/main/webapp/bootstrap/assets/img/glyphicons/glyphicons_155_show_thumbnails.png
Diff not rendered.
View
BIN src/main/webapp/bootstrap/assets/img/glyphicons/glyphicons_163_iphone.png
Diff not rendered.
View
BIN src/main/webapp/bootstrap/assets/img/glyphicons/glyphicons_214_resize_small.png
Diff not rendered.
View
BIN src/main/webapp/bootstrap/assets/img/glyphicons/glyphicons_266_book_open.png
Diff not rendered.
View
BIN src/main/webapp/bootstrap/assets/img/grid-18px-masked.png
Diff not rendered.
View
BIN src/main/webapp/bootstrap/assets/img/icon-css3.png
Diff not rendered.
View
BIN src/main/webapp/bootstrap/assets/img/icon-github.png
Diff not rendered.
View
BIN src/main/webapp/bootstrap/assets/img/icon-html5.png
Diff not rendered.
View
BIN src/main/webapp/bootstrap/assets/img/icon-twitter.png
Diff not rendered.
View
BIN src/main/webapp/bootstrap/assets/img/less-logo-large.png
Diff not rendered.
View
BIN src/main/webapp/bootstrap/assets/img/less-small.png
Diff not rendered.
View
BIN src/main/webapp/bootstrap/assets/img/responsive-illustrations.png
Diff not rendered.
View
106 src/main/webapp/bootstrap/assets/js/README.md
@@ -0,0 +1,106 @@
+## 2.0 BOOTSTRAP JS PHILOSOPHY
+These are the high-level design rules which guide the development of Bootstrap's plugin apis.
+
+---
+
+### DATA-ATTRIBUTE API
+
+We believe you should be able to use all plugins provided by Bootstrap purely through the markup API without writing a single line of javascript.
+
+We acknowledge that this isn't always the most performant and sometimes it may be desirable to turn this functionality off altogether. Therefore, as of 2.0 we provide the ability to disable the data attribute API by unbinding all events on the body namespaced with `'data-api'`. This looks like this:
+
+ $('body').off('.data-api')
+
+To target a specific plugin, just include the plugins name as a namespace along with the data-api namespace like this:
+
+ $('body').off('.alert.data-api')
+
+---
+
+### PROGRAMATIC API
+
+We also believe you should be able to use all plugins provided by Bootstrap purely through the JS API.
+
+All public APIs should be single, chainable methods, and return the collection acted upon.
+
+ $(".btn.danger").button("toggle").addClass("fat")
+
+All methods should accept an optional options object, a string which targets a particular method, or null which initiates the default behavior:
+
+ $("#myModal").modal() // initialized with defaults
+ $("#myModal").modal({ keyboard: false }) // initialized with now keyboard
+ $("#myModal").modal('show') // initializes and invokes show immediately afterqwe2
+
+---
+
+### OPTIONS
+
+Options should be sparse and add universal value. We should pick the right defaults.
+
+All plugins should have a default object which can be modified to effect all instance's default options. The defaults object should be available via `$.fn.plugin.defaults`.
+
+ $.fn.modal.defaults = { … }
+
+An options definition should take the following form:
+
+ *noun*: *adjective* - describes or modifies a quality of an instance
+
+examples:
+
+ backdrop: true
+ keyboard: false
+ placement: 'top'
+
+---
+
+### EVENTS
+
+All events should have an infinitive and past participle form. The infinitive is fired just before an action takes place, the past participle on completion of the action.
+
+ show | shown
+ hide | hidden
+
+---
+
+### CONSTRUCTORS
+
+Each plugin should expose it's raw constructor on a `Constructor` property -- accessed in the following way:
+
+
+ $.fn.popover.Constructor
+
+---
+
+### DATA ACCESSOR
+
+Each plugin stores a copy of the invoked class on an object. This class instance can be accessed directly through jQuery's data API like this:
+
+ $('[rel=popover]').data('popover') instanceof $.fn.popover.Constructor
+
+---
+
+### DATA ATTRIBUTES
+
+Data attributes should take the following form:
+
+- data-{{verb}}={{plugin}} - defines main interaction
+- data-target || href^=# - defined on "control" element (if element controls an element other than self)
+- data-{{noun}} - defines class instance options
+
+examples:
+
+ // control other targets
+ data-toggle="modal" data-target="#foo"
+ data-toggle="collapse" data-target="#foo" data-parent="#bar"
+
+ // defined on element they control
+ data-spy="scroll"
+
+ data-dismiss="modal"
+ data-dismiss="alert"
+
+ data-toggle="dropdown"
+
+ data-toggle="button"
+ data-toggle="buttons-checkbox"
+ data-toggle="buttons-radio"
View
180 src/main/webapp/bootstrap/assets/js/application.js
@@ -0,0 +1,180 @@
+// NOTICE!! DO NOT USE ANY OF THIS JAVASCRIPT
+// IT'S ALL JUST JUNK FOR OUR DOCS!
+// ++++++++++++++++++++++++++++++++++++++++++
+
+!function ($) {
+
+ $(function(){
+
+ // Disable certain links in docs
+ $('section [href^=#]').click(function (e) {
+ e.preventDefault()
+ })
+
+ // make code pretty
+ window.prettyPrint && prettyPrint()
+
+ // add-ons
+ $('.add-on :checkbox').on('click', function () {
+ var $this = $(this)
+ , method = $this.attr('checked') ? 'addClass' : 'removeClass'
+ $(this).parents('.add-on')[method]('active')
+ })
+
+ // position static twipsies for components page
+ if ($(".twipsies a").length) {
+ $(window).on('load resize', function () {
+ $(".twipsies a").each(function () {
+ $(this)
+ .tooltip({
+ placement: $(this).attr('title')
+ , trigger: 'manual'
+ })
+ .tooltip('show')
+ })
+ })
+ }
+
+ // add tipsies to grid for scaffolding
+ if ($('#grid-system').length) {
+ $('#grid-system').tooltip({
+ selector: '.show-grid > div'
+ , title: function () { return $(this).width() + 'px' }
+ })
+ }
+
+ // fix sub nav on scroll
+ var $win = $(window)
+ , $nav = $('.subnav')
+ , navTop = $('.subnav').length && $('.subnav').offset().top - 40
+ , isFixed = 0
+
+ processScroll()
+
+ $win.on('scroll', processScroll)
+
+ function processScroll() {
+ var i, scrollTop = $win.scrollTop()
+ if (scrollTop >= navTop && !isFixed) {
+ isFixed = 1
+ $nav.addClass('subnav-fixed')
+ } else if (scrollTop <= navTop && isFixed) {
+ isFixed = 0
+ $nav.removeClass('subnav-fixed')
+ }
+ }
+
+ // tooltip demo
+ $('.tooltip-demo.well').tooltip({
+ selector: "a[rel=tooltip]"
+ })
+
+ $('.tooltip-test').tooltip()
+ $('.popover-test').popover()
+
+ // popover demo
+ $("a[rel=popover]")
+ .popover()
+ .click(function(e) {
+ e.preventDefault()
+ })
+
+ // button state demo
+ $('#fat-btn')
+ .click(function () {
+ var btn = $(this)
+ btn.button('loading')
+ setTimeout(function () {
+ btn.button('reset')
+ }, 3000)
+ })
+
+ // carousel demo
+ $('#myCarousel').carousel()
+
+ // javascript build logic
+ var inputsComponent = $("#components.download input")
+ , inputsPlugin = $("#plugins.download input")
+ , inputsVariables = $("#variables.download input")
+
+ // toggle all plugin checkboxes
+ $('#components.download .toggle-all').on('click', function (e) {
+ e.preventDefault()
+ inputsComponent.attr('checked', !inputsComponent.is(':checked'))
+ })
+
+ $('#plugins.download .toggle-all').on('click', function (e) {
+ e.preventDefault()
+ inputsPlugin.attr('checked', !inputsPlugin.is(':checked'))
+ })
+
+ $('#variables.download .toggle-all').on('click', function (e) {
+ e.preventDefault()
+ inputsVariables.val('')
+ })
+
+ // request built javascript
+ $('.download-btn').on('click', function () {
+
+ var css = $("#components.download input:checked")
+ .map(function () { return this.value })
+ .toArray()
+ , js = $("#plugins.download input:checked")
+ .map(function () { return this.value })
+ .toArray()
+ , vars = {}
+ , img = ['glyphicons-halflings.png', 'glyphicons-halflings-white.png']
+
+ $("#variables.download input")
+ .each(function () {
+ $(this).val() && (vars[ $(this).prev().text() ] = $(this).val())
+ })
+
+ $.ajax({
+ type: 'POST'
+ , url: 'http://bootstrap.herokuapp.com'
+ , dataType: 'jsonpi'
+ , params: {
+ js: js
+ , css: css
+ , vars: vars
+ , img: img
+ }
+ })
+ })
+
+ })
+
+// Modified from the original jsonpi https://github.com/benvinegar/jquery-jsonpi
+$.ajaxTransport('jsonpi', function(opts, originalOptions, jqXHR) {
+ var url = opts.url;
+
+ return {
+ send: function(_, completeCallback) {
+ var name = 'jQuery_iframe_' + jQuery.now()
+ , iframe, form
+
+ iframe = $('<iframe>')
+ .attr('name', name)
+ .appendTo('head')
+
+ form = $('<form>')
+ .attr('method', opts.type) // GET or POST
+ .attr('action', url)
+ .attr('target', name)
+
+ $.each(opts.params, function(k, v) {
+
+ $('<input>')
+ .attr('type', 'hidden')
+ .attr('name', k)
+ .attr('value', typeof v == 'string' ? v : JSON.stringify(v))
+ .appendTo(form)
+ })
+
+ form.appendTo('body').submit()
+ }
+ }
+})
+
+}(window.jQuery)
View
91 src/main/webapp/bootstrap/assets/js/bootstrap-alert.js
@@ -0,0 +1,91 @@
+/* ==========================================================
+ * bootstrap-alert.js v2.0.0
+ * http://twitter.github.com/bootstrap/javascript.html#alerts
+ * ==========================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ========================================================== */
+
+
+!function( $ ){
+
+ "use strict"
+
+ /* ALERT CLASS DEFINITION
+ * ====================== */
+
+ var dismiss = '[data-dismiss="alert"]'
+ , Alert = function ( el ) {
+ $(el).on('click', dismiss, this.close)
+ }
+
+ Alert.prototype = {
+
+ constructor: Alert
+
+ , close: function ( e ) {
+ var $this = $(this)
+ , selector = $this.attr('data-target')
+ , $parent
+
+ if (!selector) {
+ selector = $this.attr('href')
+ selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
+ }
+
+ $parent = $(selector)
+ $parent.trigger('close')
+
+ e && e.preventDefault()
+
+ $parent.length || ($parent = $this.hasClass('alert') ? $this : $this.parent())
+
+ $parent.removeClass('in')
+
+ function removeElement() {
+ $parent.remove()
+ $parent.trigger('closed')
+ }
+
+ $.support.transition && $parent.hasClass('fade') ?
+ $parent.on($.support.transition.end, removeElement) :
+ removeElement()
+ }
+
+ }
+
+
+ /* ALERT PLUGIN DEFINITION
+ * ======================= */
+
+ $.fn.alert = function ( option ) {
+ return this.each(function () {
+ var $this = $(this)
+ , data = $this.data('alert')
+ if (!data) $this.data('alert', (data = new Alert(this)))
+ if (typeof option == 'string') data[option].call($this)
+ })
+ }
+
+ $.fn.alert.Constructor = Alert
+
+
+ /* ALERT DATA-API
+ * ============== */
+
+ $(function () {
+ $('body').on('click.alert.data-api', dismiss, Alert.prototype.close)
+ })
+
+}( window.jQuery )
View
98 src/main/webapp/bootstrap/assets/js/bootstrap-button.js
@@ -0,0 +1,98 @@
+/* ============================================================
+ * bootstrap-button.js v2.0.0
+ * http://twitter.github.com/bootstrap/javascript.html#buttons
+ * ============================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============================================================ */
+
+!function( $ ){
+
+ "use strict"
+
+ /* BUTTON PUBLIC CLASS DEFINITION
+ * ============================== */
+
+ var Button = function ( element, options ) {
+ this.$element = $(element)
+ this.options = $.extend({}, $.fn.button.defaults, options)
+ }
+
+ Button.prototype = {
+
+ constructor: Button
+
+ , setState: function ( state ) {
+ var d = 'disabled'
+ , $el = this.$element
+ , data = $el.data()
+ , val = $el.is('input') ? 'val' : 'html'
+
+ state = state + 'Text'
+ data.resetText || $el.data('resetText', $el[val]())
+
+ $el[val](data[state] || this.options[state])
+
+ // push to event loop to allow forms to submit
+ setTimeout(function () {
+ state == 'loadingText' ?
+ $el.addClass(d).attr(d, d) :
+ $el.removeClass(d).removeAttr(d)
+ }, 0)
+ }
+
+ , toggle: function () {
+ var $parent = this.$element.parent('[data-toggle="buttons-radio"]')
+
+ $parent && $parent
+ .find('.active')
+ .removeClass('active')
+
+ this.$element.toggleClass('active')
+ }
+
+ }
+
+
+ /* BUTTON PLUGIN DEFINITION
+ * ======================== */
+
+ $.fn.button = function ( option ) {
+ return this.each(function () {
+ var $this = $(this)
+ , data = $this.data('button')
+ , options = typeof option == 'object' && option
+ if (!data) $this.data('button', (data = new Button(this, options)))
+ if (option == 'toggle') data.toggle()
+ else if (option) data.setState(option)
+ })
+ }
+
+ $.fn.button.defaults = {
+ loadingText: 'loading...'
+ }
+
+ $.fn.button.Constructor = Button
+
+
+ /* BUTTON DATA-API
+ * =============== */
+
+ $(function () {
+ $('body').on('click.button.data-api', '[data-toggle^=button]', function ( e ) {
+ $(e.target).button('toggle')
+ })
+ })
+
+}( window.jQuery )
View
154 src/main/webapp/bootstrap/assets/js/bootstrap-carousel.js
@@ -0,0 +1,154 @@
+/* ==========================================================
+ * bootstrap-carousel.js v2.0.0
+ * http://twitter.github.com/bootstrap/javascript.html#carousel
+ * ==========================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ========================================================== */
+
+
+!function( $ ){
+
+ "use strict"
+
+ /* CAROUSEL CLASS DEFINITION
+ * ========================= */
+
+ var Carousel = function (element, options) {
+ this.$element = $(element)
+ this.options = $.extend({}, $.fn.carousel.defaults, options)
+ this.options.slide && this.slide(this.options.slide)
+ }
+
+ Carousel.prototype = {
+
+ cycle: function () {
+ this.interval = setInterval($.proxy(this.next, this), this.options.interval)
+ return this
+ }
+
+ , to: function (pos) {
+ var $active = this.$element.find('.active')
+ , children = $active.parent().children()
+ , activePos = children.index($active)
+ , that = this
+
+ if (pos > (children.length - 1) || pos < 0) return
+
+ if (this.sliding) {
+ return this.$element.one('slid', function () {
+ that.to(pos)
+ })
+ }
+
+ if (activePos == pos) {
+ return this.pause().cycle()
+ }
+
+ return this.slide(pos > activePos ? 'next' : 'prev', $(children[pos]))
+ }
+
+ , pause: function () {
+ clearInterval(this.interval)
+ return this
+ }
+
+ , next: function () {
+ if (this.sliding) return
+ return this.slide('next')
+ }
+
+ , prev: function () {
+ if (this.sliding) return
+ return this.slide('prev')
+ }
+
+ , slide: function (type, next) {
+ var $active = this.$element.find('.active')
+ , $next = next || $active[type]()
+ , isCycling = this.interval
+ , direction = type == 'next' ? 'left' : 'right'
+ , fallback = type == 'next' ? 'first' : 'last'
+ , that = this
+
+ this.sliding = true
+
+ isCycling && this.pause()
+
+ $next = $next.length ? $next : this.$element.find('.item')[fallback]()
+
+ if (!$.support.transition && this.$element.hasClass('slide')) {
+ this.$element.trigger('slide')
+ $active.removeClass('active')
+ $next.addClass('active')
+ this.sliding = false
+ this.$element.trigger('slid')
+ } else {
+ $next.addClass(type)
+ $next[0].offsetWidth // force reflow
+ $active.addClass(direction)
+ $next.addClass(direction)
+ this.$element.trigger('slide')
+ this.$element.one($.support.transition.end, function () {
+ $next.removeClass([type, direction].join(' ')).addClass('active')
+ $active.removeClass(['active', direction].join(' '))
+ that.sliding = false
+ setTimeout(function () { that.$element.trigger('slid') }, 0)
+ })
+ }
+
+ isCycling && this.cycle()
+
+ return this
+ }
+
+ }
+
+
+ /* CAROUSEL PLUGIN DEFINITION
+ * ========================== */
+
+ $.fn.carousel = function ( option ) {
+ return this.each(function () {
+ var $this = $(this)
+ , data = $this.data('carousel')
+ , options = typeof option == 'object' && option
+ if (!data) $this.data('carousel', (data = new Carousel(this, options)))
+ if (typeof option == 'number') data.to(option)
+ else if (typeof option == 'string' || (option = options.slide)) data[option]()
+ else data.cycle()
+ })
+ }
+
+ $.fn.carousel.defaults = {
+ interval: 5000
+ }
+
+ $.fn.carousel.Constructor = Carousel
+
+
+ /* CAROUSEL DATA-API
+ * ================= */
+
+ $(function () {
+ $('body').on('click.carousel.data-api', '[data-slide]', function ( e ) {
+ var $this = $(this), href
+ , $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
+ , options = !$target.data('modal') && $.extend({}, $target.data(), $this.data())
+ $target.carousel(options)
+ e.preventDefault()
+ })
+ })
+
+}( window.jQuery )
View
136 src/main/webapp/bootstrap/assets/js/bootstrap-collapse.js
@@ -0,0 +1,136 @@
+/* =============================================================
+ * bootstrap-collapse.js v2.0.0
+ * http://twitter.github.com/bootstrap/javascript.html#collapse
+ * =============================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============================================================ */
+
+!function( $ ){
+
+ "use strict"
+
+ var Collapse = function ( element, options ) {
+ this.$element = $(element)
+ this.options = $.extend({}, $.fn.collapse.defaults, options)
+
+ if (this.options["parent"]) {
+ this.$parent = $(this.options["parent"])
+ }
+
+ this.options.toggle && this.toggle()
+ }
+
+ Collapse.prototype = {
+
+ constructor: Collapse
+
+ , dimension: function () {
+ var hasWidth = this.$element.hasClass('width')
+ return hasWidth ? 'width' : 'height'
+ }
+
+ , show: function () {
+ var dimension = this.dimension()
+ , scroll = $.camelCase(['scroll', dimension].join('-'))
+ , actives = this.$parent && this.$parent.find('.in')
+ , hasData
+
+ if (actives && actives.length) {
+ hasData = actives.data('collapse')
+ actives.collapse('hide')
+ hasData || actives.data('collapse', null)
+ }
+
+ this.$element[dimension](0)
+ this.transition('addClass', 'show', 'shown')
+ this.$element[dimension](this.$element[0][scroll])
+
+ }
+
+ , hide: function () {
+ var dimension = this.dimension()
+ this.reset(this.$element[dimension]())
+ this.transition('removeClass', 'hide', 'hidden')
+ this.$element[dimension](0)
+ }
+
+ , reset: function ( size ) {
+ var dimension = this.dimension()
+
+ this.$element
+ .removeClass('collapse')
+ [dimension](size || 'auto')
+ [0].offsetWidth
+
+ this.$element.addClass('collapse')
+ }
+
+ , transition: function ( method, startEvent, completeEvent ) {
+ var that = this
+ , complete = function () {
+ if (startEvent == 'show') that.reset()
+ that.$element.trigger(completeEvent)
+ }
+
+ this.$element
+ .trigger(startEvent)
+ [method]('in')
+
+ $.support.transition && this.$element.hasClass('collapse') ?
+ this.$element.one($.support.transition.end, complete) :
+ complete()
+ }
+
+ , toggle: function () {
+ this[this.$element.hasClass('in') ? 'hide' : 'show']()
+ }
+
+ }
+
+ /* COLLAPSIBLE PLUGIN DEFINITION
+ * ============================== */
+
+ $.fn.collapse = function ( option ) {
+ return this.each(function () {
+ var $this = $(this)
+ , data = $this.data('collapse')
+ , options = typeof option == 'object' && option
+ if (!data) $this.data('collapse', (data = new Collapse(this, options)))
+ if (typeof option == 'string') data[option]()
+ })
+ }
+
+ $.fn.collapse.defaults = {
+ toggle: true
+ }
+
+ $.fn.collapse.Constructor = Collapse
+
+
+ /* COLLAPSIBLE DATA-API
+ * ==================== */
+
+ $(function () {
+ $('body').on('click.collapse.data-api', '[data-toggle=collapse]', function ( e ) {
+ var $this = $(this), href
+ , target = $this.attr('data-target')
+ || e.preventDefault()
+ || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7
+ , option = $(target).data('collapse') ? 'toggle' : $this.data()
+ $(target).collapse(option)
+ })
+ })
+
+}( window.jQuery )
View
92 src/main/webapp/bootstrap/assets/js/bootstrap-dropdown.js
@@ -0,0 +1,92 @@
+/* ============================================================
+ * bootstrap-dropdown.js v2.0.0
+ * http://twitter.github.com/bootstrap/javascript.html#dropdowns
+ * ============================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============================================================ */
+
+
+!function( $ ){
+
+ "use strict"
+
+ /* DROPDOWN CLASS DEFINITION
+ * ========================= */
+
+ var toggle = '[data-toggle="dropdown"]'
+ , Dropdown = function ( element ) {
+ var $el = $(element).on('click.dropdown.data-api', this.toggle)
+ $('html').on('click.dropdown.data-api', function () {
+ $el.parent().removeClass('open')
+ })
+ }
+
+ Dropdown.prototype = {
+
+ constructor: Dropdown
+
+ , toggle: function ( e ) {
+ var $this = $(this)
+ , selector = $this.attr('data-target')
+ , $parent
+ , isActive
+
+ if (!selector) {
+ selector = $this.attr('href')
+ selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
+ }
+
+ $parent = $(selector)
+ $parent.length || ($parent = $this.parent())
+
+ isActive = $parent.hasClass('open')
+
+ clearMenus()
+ !isActive && $parent.toggleClass('open')
+
+ return false
+ }
+
+ }
+
+ function clearMenus() {
+ $(toggle).parent().removeClass('open')
+ }
+
+
+ /* DROPDOWN PLUGIN DEFINITION
+ * ========================== */
+
+ $.fn.dropdown = function ( option ) {
+ return this.each(function () {
+ var $this = $(this)
+ , data = $this.data('dropdown')
+ if (!data) $this.data('dropdown', (data = new Dropdown(this)))
+ if (typeof option == 'string') data[option].call($this)
+ })
+ }
+
+ $.fn.dropdown.Constructor = Dropdown
+
+
+ /* APPLY TO STANDARD DROPDOWN ELEMENTS
+ * =================================== */
+
+ $(function () {
+ $('html').on('click.dropdown.data-api', clearMenus)
+ $('body').on('click.dropdown.data-api', toggle, Dropdown.prototype.toggle)
+ })
+
+}( window.jQuery )
View
210 src/main/webapp/bootstrap/assets/js/bootstrap-modal.js
@@ -0,0 +1,210 @@
+/* =========================================================
+ * bootstrap-modal.js v2.0.0
+ * http://twitter.github.com/bootstrap/javascript.html#modals
+ * =========================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ========================================================= */
+
+
+!function( $ ){
+
+ "use strict"
+
+ /* MODAL CLASS DEFINITION
+ * ====================== */
+
+ var Modal = function ( content, options ) {
+ this.options = options
+ this.$element = $(content)
+ .delegate('[data-dismiss="modal"]', 'click.dismiss.modal', $.proxy(this.hide, this))
+ }
+
+ Modal.prototype = {
+
+ constructor: Modal
+
+ , toggle: function () {
+ return this[!this.isShown ? 'show' : 'hide']()
+ }
+
+ , show: function () {
+ var that = this
+
+ if (this.isShown) return
+
+ $('body').addClass('modal-open')
+
+ this.isShown = true
+ this.$element.trigger('show')
+
+ escape.call(this)
+ backdrop.call(this, function () {
+ var transition = $.support.transition && that.$element.hasClass('fade')
+
+ !that.$element.parent().length && that.$element.appendTo(document.body) //don't move modals dom position
+
+ that.$element
+ .show()
+
+ if (transition) {
+ that.$element[0].offsetWidth // force reflow
+ }
+
+ that.$element.addClass('in')
+
+ transition ?
+ that.$element.one($.support.transition.end, function () { that.$element.trigger('shown') }) :
+ that.$element.trigger('shown')
+
+ })
+ }
+
+ , hide: function ( e ) {
+ e && e.preventDefault()
+
+ if (!this.isShown) return
+
+ var that = this
+ this.isShown = false
+
+ $('body').removeClass('modal-open')
+
+ escape.call(this)
+
+ this.$element
+ .trigger('hide')
+ .removeClass('in')
+
+ $.support.transition && this.$element.hasClass('fade') ?
+ hideWithTransition.call(this) :
+ hideModal.call(this)
+ }
+
+ }
+
+
+ /* MODAL PRIVATE METHODS
+ * ===================== */
+
+ function hideWithTransition() {
+ var that = this
+ , timeout = setTimeout(function () {
+ that.$element.off($.support.transition.end)
+ hideModal.call(that)
+ }, 500)
+
+ this.$element.one($.support.transition.end, function () {
+ clearTimeout(timeout)
+ hideModal.call(that)
+ })
+ }
+
+ function hideModal( that ) {
+ this.$element
+ .hide()
+ .trigger('hidden')
+
+ backdrop.call(this)
+ }
+
+ function backdrop( callback ) {
+ var that = this
+ , animate = this.$element.hasClass('fade') ? 'fade' : ''
+
+ if (this.isShown && this.options.backdrop) {
+ var doAnimate = $.support.transition && animate
+
+ this.$backdrop = $('<div class="modal-backdrop ' + animate + '" />')
+ .appendTo(document.body)
+
+ if (this.options.backdrop != 'static') {
+ this.$backdrop.click($.proxy(this.hide, this))
+ }
+
+ if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
+
+ this.$backdrop.addClass('in')
+
+ doAnimate ?
+ this.$backdrop.one($.support.transition.end, callback) :
+ callback()
+
+ } else if (!this.isShown && this.$backdrop) {
+ this.$backdrop.removeClass('in')
+
+ $.support.transition && this.$element.hasClass('fade')?
+ this.$backdrop.one($.support.transition.end, $.proxy(removeBackdrop, this)) :
+ removeBackdrop.call(this)
+
+ } else if (callback) {
+ callback()
+ }
+ }
+
+ function removeBackdrop() {
+ this.$backdrop.remove()
+ this.$backdrop = null
+ }
+
+ function escape() {
+ var that = this
+ if (this.isShown && this.options.keyboard) {
+ $(document).on('keyup.dismiss.modal', function ( e ) {
+ e.which == 27 && that.hide()
+ })
+ } else if (!this.isShown) {
+ $(document).off('keyup.dismiss.modal')
+ }
+ }
+
+
+ /* MODAL PLUGIN DEFINITION
+ * ======================= */
+
+ $.fn.modal = function ( option ) {
+ return this.each(function () {
+ var $this = $(this)
+ , data = $this.data('modal')
+ , options = $.extend({}, $.fn.modal.defaults, typeof option == 'object' && option)
+ if (!data) $this.data('modal', (data = new Modal(this, options)))
+ if (typeof option == 'string') data[option]()
+ else if (options.show) data.show()
+ })
+ }
+
+ $.fn.modal.defaults = {
+ backdrop: true
+ , keyboard: true
+ , show: true
+ }
+
+ $.fn.modal.Constructor = Modal
+
+
+ /* MODAL DATA-API
+ * ============== */
+
+ $(function () {
+ $('body').on('click.modal.data-api', '[data-toggle="modal"]', function ( e ) {
+ var $this = $(this), href
+ , $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
+ , option = $target.data('modal') ? 'toggle' : $.extend({}, $target.data(), $this.data())
+
+ e.preventDefault()
+ $target.modal(option)
+ })
+ })
+
+}( window.jQuery )
View
95 src/main/webapp/bootstrap/assets/js/bootstrap-popover.js
@@ -0,0 +1,95 @@
+/* ===========================================================
+ * bootstrap-popover.js v2.0.0
+ * http://twitter.github.com/bootstrap/javascript.html#popovers
+ * ===========================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * =========================================================== */
+
+
+!function( $ ) {
+
+ "use strict"
+
+ var Popover = function ( element, options ) {
+ this.init('popover', element, options)
+ }
+
+ /* NOTE: POPOVER EXTENDS BOOTSTRAP-TOOLTIP.js
+ ========================================== */
+
+ Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype, {
+
+ constructor: Popover