Newer bootstrap w/ fixes

This commit is contained in:
nikolark committed 2012-11-10 23:26:59 +01:00
1 parent 32bb4d94ab
commit 368228e5fa
39 files changed
+2860 -9527

No files matched your search

+1 -1
View File
@@ -2,5 +2,5 @@
*.pyc *.pyc
settings.py settings.py
dev.db dev.db
static/gaute/.sass-cache static/.sass-cache
uploads/[^.]* uploads/[^.]*
+14
View File
@@ -0,0 +1,14 @@
# Require any additional compass plugins here.
require 'bootstrap-sass'
# Set this to the root of your project when deployed:
http_path = "/static/"
css_dir = "stylesheets"
sass_dir = "sass"
images_dir = "img"
javascripts_dir = "js"
fonts_dir = "fonts"
output_style = :compact
relative_assets = true
line_comments = false
-24
View File
@@ -1,24 +0,0 @@
# Require any additional compass plugins here.
require 'compass_twitter_bootstrap'
# Set this to the root of your project when deployed:
http_path = "/static/"
css_dir = "stylesheets"
sass_dir = "sass"
images_dir = "gaute/img"
javascripts_dir = "javascripts"
# You can select your preferred output style here (can be overridden via the command line):
# output_style = :expanded or :nested or :compact or :compressed
# To enable relative paths to assets via compass helper functions. Uncomment:
# relative_assets = true
# To disable debugging comments that display the original location of your selectors. Uncomment:
line_comments = false
# If you prefer the indented syntax, you might want to regenerate this
# project again passing --syntax sass, or you can uncomment this:
# preferred_syntax = :sass
# and then run:
# sass-convert -R --from scss --to sass sass scss && rm -rf sass && mv scss sass
Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

-1
View File
@@ -1 +0,0 @@
@import "compass_twitter_bootstrap";
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File renamed without changes.
File renamed without changes.
File renamed without changes.
Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
+15 -16
View File
@@ -1,5 +1,5 @@
/* ========================================================== /* ==========================================================
* bootstrap-alert.js v2.0.0 * bootstrap-alert.js v2.1.1
* http://twitter.github.com/bootstrap/javascript.html#alerts * http://twitter.github.com/bootstrap/javascript.html#alerts
* ========================================================== * ==========================================================
* Copyright 2012 Twitter, Inc. * Copyright 2012 Twitter, Inc.
@@ -18,23 +18,20 @@
* ========================================================== */ * ========================================================== */
!function( $ ){ !function ($) {
"use strict"; // jshint ;_;
"use strict"
/* ALERT CLASS DEFINITION /* ALERT CLASS DEFINITION
* ====================== */ * ====================== */
var dismiss = '[data-dismiss="alert"]' var dismiss = '[data-dismiss="alert"]'
, Alert = function ( el ) { , Alert = function (el) {
$(el).on('click', dismiss, this.close) $(el).on('click', dismiss, this.close)
} }
Alert.prototype = { Alert.prototype.close = function (e) {
constructor: Alert
, close: function ( e ) {
var $this = $(this) var $this = $(this)
, selector = $this.attr('data-target') , selector = $this.attr('data-target')
, $parent , $parent
@@ -45,17 +42,21 @@
} }
$parent = $(selector) $parent = $(selector)
$parent.trigger('close')
e && e.preventDefault() e && e.preventDefault()
$parent.length || ($parent = $this.hasClass('alert') ? $this : $this.parent()) $parent.length || ($parent = $this.hasClass('alert') ? $this : $this.parent())
$parent.trigger(e = $.Event('close'))
if (e.isDefaultPrevented()) return
$parent.removeClass('in') $parent.removeClass('in')
function removeElement() { function removeElement() {
$parent.remove() $parent
$parent.trigger('closed') .trigger('closed')
.remove()
} }
$.support.transition && $parent.hasClass('fade') ? $.support.transition && $parent.hasClass('fade') ?
@@ -63,13 +64,11 @@
removeElement() removeElement()
} }
}
/* ALERT PLUGIN DEFINITION /* ALERT PLUGIN DEFINITION
* ======================= */ * ======================= */
$.fn.alert = function ( option ) { $.fn.alert = function (option) {
return this.each(function () { return this.each(function () {
var $this = $(this) var $this = $(this)
, data = $this.data('alert') , data = $this.data('alert')
@@ -88,4 +87,4 @@
$('body').on('click.alert.data-api', dismiss, Alert.prototype.close) $('body').on('click.alert.data-api', dismiss, Alert.prototype.close)
}) })
}( window.jQuery ) }(window.jQuery);
+96
View File
@@ -0,0 +1,96 @@
/* ============================================================
* bootstrap-button.js v2.1.1
* 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"; // jshint ;_;
/* BUTTON PUBLIC CLASS DEFINITION
* ============================== */
var Button = function (element, options) {
this.$element = $(element)
this.options = $.extend({}, $.fn.button.defaults, options)
}
Button.prototype.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)
}
Button.prototype.toggle = function () {
var $parent = this.$element.closest('[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 ) {
var $btn = $(e.target)
if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
$btn.button('toggle')
})
})
}(window.jQuery);
+176
View File
@@ -0,0 +1,176 @@
/* ==========================================================
* bootstrap-carousel.js v2.1.1
* 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"; // jshint ;_;
/* CAROUSEL CLASS DEFINITION
* ========================= */
var Carousel = function (element, options) {
this.$element = $(element)
this.options = options
this.options.slide && this.slide(this.options.slide)
this.options.pause == 'hover' && this.$element
.on('mouseenter', $.proxy(this.pause, this))
.on('mouseleave', $.proxy(this.cycle, this))
}
Carousel.prototype = {
cycle: function (e) {
if (!e) this.paused = false
this.options.interval
&& !this.paused
&& (this.interval = setInterval($.proxy(this.next, this), this.options.interval))
return this
}
, to: function (pos) {
var $active = this.$element.find('.item.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 (e) {
if (!e) this.paused = true
if (this.$element.find('.next, .prev').length && $.support.transition.end) {
this.$element.trigger($.support.transition.end)
this.cycle()
}
clearInterval(this.interval)
this.interval = null
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('.item.active')
, $next = next || $active[type]()
, isCycling = this.interval
, direction = type == 'next' ? 'left' : 'right'
, fallback = type == 'next' ? 'first' : 'last'
, that = this
, e = $.Event('slide', {
relatedTarget: $next[0]
})
this.sliding = true
isCycling && this.pause()
$next = $next.length ? $next : this.$element.find('.item')[fallback]()
if ($next.hasClass('active')) return
if ($.support.transition && this.$element.hasClass('slide')) {
this.$element.trigger(e)
if (e.isDefaultPrevented()) return
$next.addClass(type)
$next[0].offsetWidth // force reflow
$active.addClass(direction)
$next.addClass(direction)
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)
})
} else {
this.$element.trigger(e)
if (e.isDefaultPrevented()) return
$active.removeClass('active')
$next.addClass('active')
this.sliding = false
this.$element.trigger('slid')
}
isCycling && this.cycle()
return this
}
}
/* CAROUSEL PLUGIN DEFINITION
* ========================== */
$.fn.carousel = function (option) {
return this.each(function () {
var $this = $(this)
, data = $this.data('carousel')
, options = $.extend({}, $.fn.carousel.defaults, typeof option == 'object' && option)
, action = typeof option == 'string' ? option : options.slide
if (!data) $this.data('carousel', (data = new Carousel(this, options)))
if (typeof option == 'number') data.to(option)
else if (action) data[action]()
else if (options.interval) data.cycle()
})
}
$.fn.carousel.defaults = {
interval: 5000
, pause: 'hover'
}
$.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);
+46 -24
View File
@@ -1,5 +1,5 @@
/* ============================================================= /* =============================================================
* bootstrap-collapse.js v2.0.0 * bootstrap-collapse.js v2.1.1
* http://twitter.github.com/bootstrap/javascript.html#collapse * http://twitter.github.com/bootstrap/javascript.html#collapse
* ============================================================= * =============================================================
* Copyright 2012 Twitter, Inc. * Copyright 2012 Twitter, Inc.
@@ -17,16 +17,21 @@
* limitations under the License. * limitations under the License.
* ============================================================ */ * ============================================================ */
!function( $ ){
"use strict" !function ($) {
var Collapse = function ( element, options ) { "use strict"; // jshint ;_;
/* COLLAPSE PUBLIC CLASS DEFINITION
* ================================ */
var Collapse = function (element, options) {
this.$element = $(element) this.$element = $(element)
this.options = $.extend({}, $.fn.collapse.defaults, options) this.options = $.extend({}, $.fn.collapse.defaults, options)
if (this.options["parent"]) { if (this.options.parent) {
this.$parent = $(this.options["parent"]) this.$parent = $(this.options.parent)
} }
this.options.toggle && this.toggle() this.options.toggle && this.toggle()
@@ -42,31 +47,39 @@
} }
, show: function () { , show: function () {
var dimension = this.dimension() var dimension
, scroll = $.camelCase(['scroll', dimension].join('-')) , scroll
, actives = this.$parent && this.$parent.find('.in') , actives
, hasData , hasData
if (this.transitioning) return
dimension = this.dimension()
scroll = $.camelCase(['scroll', dimension].join('-'))
actives = this.$parent && this.$parent.find('> .accordion-group > .in')
if (actives && actives.length) { if (actives && actives.length) {
hasData = actives.data('collapse') hasData = actives.data('collapse')
if (hasData && hasData.transitioning) return
actives.collapse('hide') actives.collapse('hide')
hasData || actives.data('collapse', null) hasData || actives.data('collapse', null)
} }
this.$element[dimension](0) this.$element[dimension](0)
this.transition('addClass', 'show', 'shown') this.transition('addClass', $.Event('show'), 'shown')
this.$element[dimension](this.$element[0][scroll]) $.support.transition && this.$element[dimension](this.$element[0][scroll])
} }
, hide: function () { , hide: function () {
var dimension = this.dimension() var dimension
if (this.transitioning) return
dimension = this.dimension()
this.reset(this.$element[dimension]()) this.reset(this.$element[dimension]())
this.transition('removeClass', 'hide', 'hidden') this.transition('removeClass', $.Event('hide'), 'hidden')
this.$element[dimension](0) this.$element[dimension](0)
} }
, reset: function ( size ) { , reset: function (size) {
var dimension = this.dimension() var dimension = this.dimension()
this.$element this.$element
@@ -74,19 +87,26 @@
[dimension](size || 'auto') [dimension](size || 'auto')
[0].offsetWidth [0].offsetWidth
this.$element.addClass('collapse') this.$element[size !== null ? 'addClass' : 'removeClass']('collapse')
return this
} }
, transition: function ( method, startEvent, completeEvent ) { , transition: function (method, startEvent, completeEvent) {
var that = this var that = this
, complete = function () { , complete = function () {
if (startEvent == 'show') that.reset() if (startEvent.type == 'show') that.reset()
that.transitioning = 0
that.$element.trigger(completeEvent) that.$element.trigger(completeEvent)
} }
this.$element this.$element.trigger(startEvent)
.trigger(startEvent)
[method]('in') if (startEvent.isDefaultPrevented()) return
this.transitioning = 1
this.$element[method]('in')
$.support.transition && this.$element.hasClass('collapse') ? $.support.transition && this.$element.hasClass('collapse') ?
this.$element.one($.support.transition.end, complete) : this.$element.one($.support.transition.end, complete) :
@@ -99,10 +119,11 @@
} }
/* COLLAPSIBLE PLUGIN DEFINITION /* COLLAPSIBLE PLUGIN DEFINITION
* ============================== */ * ============================== */
$.fn.collapse = function ( option ) { $.fn.collapse = function (option) {
return this.each(function () { return this.each(function () {
var $this = $(this) var $this = $(this)
, data = $this.data('collapse') , data = $this.data('collapse')
@@ -123,14 +144,15 @@
* ==================== */ * ==================== */
$(function () { $(function () {
$('body').on('click.collapse.data-api', '[data-toggle=collapse]', function ( e ) { $('body').on('click.collapse.data-api', '[data-toggle=collapse]', function (e) {
var $this = $(this), href var $this = $(this), href
, target = $this.attr('data-target') , target = $this.attr('data-target')
|| e.preventDefault() || e.preventDefault()
|| (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7 || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7
, option = $(target).data('collapse') ? 'toggle' : $this.data() , option = $(target).data('collapse') ? 'toggle' : $this.data()
$this[$(target).hasClass('in') ? 'addClass' : 'removeClass']('collapsed')
$(target).collapse(option) $(target).collapse(option)
}) })
}) })
}( window.jQuery ) }(window.jQuery);
+150
View File
@@ -0,0 +1,150 @@
/* ============================================================
* bootstrap-dropdown.js v2.1.1
* 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"; // jshint ;_;
/* 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)
, $parent
, isActive
if ($this.is('.disabled, :disabled')) return
$parent = getParent($this)
isActive = $parent.hasClass('open')
clearMenus()
if (!isActive) {
$parent.toggleClass('open')
$this.focus()
}
return false
}
, keydown: function (e) {
var $this
, $items
, $active
, $parent
, isActive
, index
if (!/(38|40|27)/.test(e.keyCode)) return
$this = $(this)
e.preventDefault()
e.stopPropagation()
if ($this.is('.disabled, :disabled')) return
$parent = getParent($this)
isActive = $parent.hasClass('open')
if (!isActive || (isActive && e.keyCode == 27)) return $this.click()
$items = $('[role=menu] li:not(.divider) a', $parent)
if (!$items.length) return
index = $items.index($items.filter(':focus'))
if (e.keyCode == 38 && index > 0) index-- // up
if (e.keyCode == 40 && index < $items.length - 1) index++ // down
if (!~index) index = 0
$items
.eq(index)
.focus()
}
}
function clearMenus() {
getParent($(toggle))
.removeClass('open')
}
function getParent($this) {
var selector = $this.attr('data-target')
, $parent
if (!selector) {
selector = $this.attr('href')
selector = selector && /#/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
}
$parent = $(selector)
$parent.length || ($parent = $this.parent())
return $parent
}
/* 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 touchstart.dropdown.data-api', clearMenus)
$('body')
.on('click.dropdown touchstart.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
.on('click.dropdown.data-api touchstart.dropdown.data-api' , toggle, Dropdown.prototype.toggle)
.on('keydown.dropdown.data-api touchstart.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown)
})
}(window.jQuery);
+79 -50
View File
@@ -1,5 +1,5 @@
/* ========================================================= /* =========================================================
* bootstrap-modal.js v2.0.2 * bootstrap-modal.js v2.1.1
* http://twitter.github.com/bootstrap/javascript.html#modals * http://twitter.github.com/bootstrap/javascript.html#modals
* ========================================================= * =========================================================
* Copyright 2012 Twitter, Inc. * Copyright 2012 Twitter, Inc.
@@ -18,17 +18,19 @@
* ========================================================= */ * ========================================================= */
!function( $ ){ !function ($) {
"use strict"; // jshint ;_;
"use strict"
/* MODAL CLASS DEFINITION /* MODAL CLASS DEFINITION
* ====================== */ * ====================== */
var Modal = function ( content, options ) { var Modal = function (element, options) {
this.options = options this.options = options
this.$element = $(content) this.$element = $(element)
.delegate('[data-dismiss="modal"]', 'click.dismiss.modal', $.proxy(this.hide, this)) .delegate('[data-dismiss="modal"]', 'click.dismiss.modal', $.proxy(this.hide, this))
this.options.remote && this.$element.find('.modal-body').load(this.options.remote)
} }
Modal.prototype = { Modal.prototype = {
@@ -41,19 +43,24 @@
, show: function () { , show: function () {
var that = this var that = this
, e = $.Event('show')
if (this.isShown) return this.$element.trigger(e)
if (this.isShown || e.isDefaultPrevented()) return
$('body').addClass('modal-open') $('body').addClass('modal-open')
this.isShown = true this.isShown = true
this.$element.trigger('show')
escape.call(this) this.escape()
backdrop.call(this, function () {
this.backdrop(function () {
var transition = $.support.transition && that.$element.hasClass('fade') var transition = $.support.transition && that.$element.hasClass('fade')
!that.$element.parent().length && that.$element.appendTo(document.body) //don't move modals dom position if (!that.$element.parent().length) {
that.$element.appendTo(document.body) //don't move modals dom position
}
that.$element that.$element
.show() .show()
@@ -62,7 +69,12 @@
that.$element[0].offsetWidth // force reflow that.$element[0].offsetWidth // force reflow
} }
that.$element.addClass('in') that.$element
.addClass('in')
.attr('aria-hidden', false)
.focus()
that.enforceFocus()
transition ? transition ?
that.$element.one($.support.transition.end, function () { that.$element.trigger('shown') }) : that.$element.one($.support.transition.end, function () { that.$element.trigger('shown') }) :
@@ -71,55 +83,81 @@
}) })
} }
, hide: function ( e ) { , hide: function (e) {
e && e.preventDefault() e && e.preventDefault()
if (!this.isShown) return
var that = this var that = this
e = $.Event('hide')
this.$element.trigger(e)
if (!this.isShown || e.isDefaultPrevented()) return
this.isShown = false this.isShown = false
$('body').removeClass('modal-open') $('body').removeClass('modal-open')
escape.call(this) this.escape()
$(document).off('focusin.modal')
this.$element this.$element
.trigger('hide')
.removeClass('in') .removeClass('in')
.attr('aria-hidden', true)
$.support.transition && this.$element.hasClass('fade') ? $.support.transition && this.$element.hasClass('fade') ?
hideWithTransition.call(this) : this.hideWithTransition() :
hideModal.call(this) this.hideModal()
} }
, enforceFocus: function () {
var that = this
$(document).on('focusin.modal', function (e) {
if (that.$element[0] !== e.target && !that.$element.has(e.target).length) {
that.$element.focus()
}
})
} }
, escape: function () {
var that = this
if (this.isShown && this.options.keyboard) {
this.$element.on('keyup.dismiss.modal', function ( e ) {
e.which == 27 && that.hide()
})
} else if (!this.isShown) {
this.$element.off('keyup.dismiss.modal')
}
}
/* MODAL PRIVATE METHODS , hideWithTransition: function () {
* ===================== */
function hideWithTransition() {
var that = this var that = this
, timeout = setTimeout(function () { , timeout = setTimeout(function () {
that.$element.off($.support.transition.end) that.$element.off($.support.transition.end)
hideModal.call(that) that.hideModal()
}, 500) }, 500)
this.$element.one($.support.transition.end, function () { this.$element.one($.support.transition.end, function () {
clearTimeout(timeout) clearTimeout(timeout)
hideModal.call(that) that.hideModal()
}) })
} }
function hideModal( that ) { , hideModal: function (that) {
this.$element this.$element
.hide() .hide()
.trigger('hidden') .trigger('hidden')
backdrop.call(this) this.backdrop()
} }
function backdrop( callback ) { , removeBackdrop: function () {
this.$backdrop.remove()
this.$backdrop = null
}
, backdrop: function (callback) {
var that = this var that = this
, animate = this.$element.hasClass('fade') ? 'fade' : '' , animate = this.$element.hasClass('fade') ? 'fade' : ''
@@ -145,35 +183,20 @@
this.$backdrop.removeClass('in') this.$backdrop.removeClass('in')
$.support.transition && this.$element.hasClass('fade')? $.support.transition && this.$element.hasClass('fade')?
this.$backdrop.one($.support.transition.end, $.proxy(removeBackdrop, this)) : this.$backdrop.one($.support.transition.end, $.proxy(this.removeBackdrop, this)) :
removeBackdrop.call(this) this.removeBackdrop()
} else if (callback) { } else if (callback) {
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 /* MODAL PLUGIN DEFINITION
* ======================= */ * ======================= */
$.fn.modal = function ( option ) { $.fn.modal = function (option) {
return this.each(function () { return this.each(function () {
var $this = $(this) var $this = $(this)
, data = $this.data('modal') , data = $this.data('modal')
@@ -198,13 +221,19 @@
$(function () { $(function () {
$('body').on('click.modal.data-api', '[data-toggle="modal"]', function ( e ) { $('body').on('click.modal.data-api', '[data-toggle="modal"]', function ( e ) {
var $this = $(this), href var $this = $(this)
, $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7 , href = $this.attr('href')
, option = $target.data('modal') ? 'toggle' : $.extend({}, $target.data(), $this.data()) , $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) //strip for ie7
, option = $target.data('modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())
e.preventDefault() e.preventDefault()
$target.modal(option)
$target
.modal(option)
.one('hide', function () {
$this.focus()
})
}) })
}) })
}( window.jQuery ); }(window.jQuery);
+19 -11
View File
@@ -1,5 +1,5 @@
/* =========================================================== /* ===========================================================
* bootstrap-popover.js v2.0.0 * bootstrap-popover.js v2.1.1
* http://twitter.github.com/bootstrap/javascript.html#popovers * http://twitter.github.com/bootstrap/javascript.html#popovers
* =========================================================== * ===========================================================
* Copyright 2012 Twitter, Inc. * Copyright 2012 Twitter, Inc.
@@ -18,14 +18,19 @@
* =========================================================== */ * =========================================================== */
!function( $ ) { !function ($) {
"use strict" "use strict"; // jshint ;_;
var Popover = function ( element, options ) {
/* POPOVER PUBLIC CLASS DEFINITION
* =============================== */
var Popover = function (element, options) {
this.init('popover', element, options) this.init('popover', element, options)
} }
/* NOTE: POPOVER EXTENDS BOOTSTRAP-TOOLTIP.js /* NOTE: POPOVER EXTENDS BOOTSTRAP-TOOLTIP.js
========================================== */ ========================================== */
@@ -38,8 +43,8 @@
, title = this.getTitle() , title = this.getTitle()
, content = this.getContent() , content = this.getContent()
$tip.find('.popover-title')[ $.type(title) == 'object' ? 'append' : 'html' ](title) $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)
$tip.find('.popover-content > *')[ $.type(content) == 'object' ? 'append' : 'html' ](content) $tip.find('.popover-content > *')[this.options.html ? 'html' : 'text'](content)
$tip.removeClass('fade top bottom left right in') $tip.removeClass('fade top bottom left right in')
} }
@@ -56,25 +61,27 @@
content = $e.attr('data-content') content = $e.attr('data-content')
|| (typeof o.content == 'function' ? o.content.call($e[0]) : o.content) || (typeof o.content == 'function' ? o.content.call($e[0]) : o.content)
content = content.toString().replace(/(^\s*|\s*$)/, "")
return content return content
} }
, tip: function() { , tip: function () {
if (!this.$tip) { if (!this.$tip) {
this.$tip = $(this.options.template) this.$tip = $(this.options.template)
} }
return this.$tip return this.$tip
} }
, destroy: function () {
this.hide().$element.off('.' + this.type).removeData(this.type)
}
}) })
/* POPOVER PLUGIN DEFINITION /* POPOVER PLUGIN DEFINITION
* ======================= */ * ======================= */
$.fn.popover = function ( option ) { $.fn.popover = function (option) {
return this.each(function () { return this.each(function () {
var $this = $(this) var $this = $(this)
, data = $this.data('popover') , data = $this.data('popover')
@@ -88,8 +95,9 @@
$.fn.popover.defaults = $.extend({} , $.fn.tooltip.defaults, { $.fn.popover.defaults = $.extend({} , $.fn.tooltip.defaults, {
placement: 'right' placement: 'right'
, trigger: 'click'
, content: '' , content: ''
, template: '<div class="popover"><div class="arrow"></div><div class="popover-inner"><h3 class="popover-title"></h3><div class="popover-content"><p></p></div></div></div>' , template: '<div class="popover"><div class="arrow"></div><div class="popover-inner"><h3 class="popover-title"></h3><div class="popover-content"><p></p></div></div></div>'
}) })
}( window.jQuery ) }(window.jQuery);
+151
View File
@@ -0,0 +1,151 @@
/* =============================================================
* bootstrap-scrollspy.js v2.1.1
* http://twitter.github.com/bootstrap/javascript.html#scrollspy
* =============================================================
* 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"; // jshint ;_;
/* SCROLLSPY CLASS DEFINITION
* ========================== */
function ScrollSpy(element, options) {
var process = $.proxy(this.process, this)
, $element = $(element).is('body') ? $(window) : $(element)
, href
this.options = $.extend({}, $.fn.scrollspy.defaults, options)
this.$scrollElement = $element.on('scroll.scroll-spy.data-api', process)
this.selector = (this.options.target
|| ((href = $(element).attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
|| '') + ' .nav li > a'
this.$body = $('body')
this.refresh()
this.process()
}
ScrollSpy.prototype = {
constructor: ScrollSpy
, refresh: function () {
var self = this
, $targets
this.offsets = $([])
this.targets = $([])
$targets = this.$body
.find(this.selector)
.map(function () {
var $el = $(this)
, href = $el.data('target') || $el.attr('href')
, $href = /^#\w/.test(href) && $(href)
return ( $href
&& $href.length
&& [[ $href.position().top, href ]] ) || null
})
.sort(function (a, b) { return a[0] - b[0] })
.each(function () {
self.offsets.push(this[0])
self.targets.push(this[1])
})
}
, process: function () {
var scrollTop = this.$scrollElement.scrollTop() + this.options.offset
, scrollHeight = this.$scrollElement[0].scrollHeight || this.$body[0].scrollHeight
, maxScroll = scrollHeight - this.$scrollElement.height()
, offsets = this.offsets
, targets = this.targets
, activeTarget = this.activeTarget
, i
if (scrollTop >= maxScroll) {
return activeTarget != (i = targets.last()[0])
&& this.activate ( i )
}
for (i = offsets.length; i--;) {
activeTarget != targets[i]
&& scrollTop >= offsets[i]
&& (!offsets[i + 1] || scrollTop <= offsets[i + 1])
&& this.activate( targets[i] )
}
}
, activate: function (target) {
var active
, selector
this.activeTarget = target
$(this.selector)
.parent('.active')
.removeClass('active')
selector = this.selector
+ '[data-target="' + target + '"],'
+ this.selector + '[href="' + target + '"]'
active = $(selector)
.parent('li')
.addClass('active')
if (active.parent('.dropdown-menu').length) {
active = active.closest('li.dropdown').addClass('active')
}
active.trigger('activate')
}
}
/* SCROLLSPY PLUGIN DEFINITION
* =========================== */
$.fn.scrollspy = function (option) {
return this.each(function () {
var $this = $(this)
, data = $this.data('scrollspy')
, options = typeof option == 'object' && option
if (!data) $this.data('scrollspy', (data = new ScrollSpy(this, options)))
if (typeof option == 'string') data[option]()
})
}
$.fn.scrollspy.Constructor = ScrollSpy
$.fn.scrollspy.defaults = {
offset: 10
}
/* SCROLLSPY DATA-API
* ================== */
$(window).on('load', function () {
$('[data-spy="scroll"]').each(function () {
var $spy = $(this)
$spy.scrollspy($spy.data())
})
})
}(window.jQuery);
+135
View File
@@ -0,0 +1,135 @@
/* ========================================================
* bootstrap-tab.js v2.1.1
* http://twitter.github.com/bootstrap/javascript.html#tabs
* ========================================================
* 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"; // jshint ;_;
/* TAB CLASS DEFINITION
* ==================== */
var Tab = function (element) {
this.element = $(element)
}
Tab.prototype = {
constructor: Tab
, show: function () {
var $this = this.element
, $ul = $this.closest('ul:not(.dropdown-menu)')
, selector = $this.attr('data-target')
, previous
, $target
, e
if (!selector) {
selector = $this.attr('href')
selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
}
if ( $this.parent('li').hasClass('active') ) return
previous = $ul.find('.active a').last()[0]
e = $.Event('show', {
relatedTarget: previous
})
$this.trigger(e)
if (e.isDefaultPrevented()) return
$target = $(selector)
this.activate($this.parent('li'), $ul)
this.activate($target, $target.parent(), function () {
$this.trigger({
type: 'shown'
, relatedTarget: previous
})
})
}
, activate: function ( element, container, callback) {
var $active = container.find('> .active')
, transition = callback
&& $.support.transition
&& $active.hasClass('fade')
function next() {
$active
.removeClass('active')
.find('> .dropdown-menu > .active')
.removeClass('active')
element.addClass('active')
if (transition) {
element[0].offsetWidth // reflow for transition
element.addClass('in')
} else {
element.removeClass('fade')
}
if ( element.parent('.dropdown-menu') ) {
element.closest('li.dropdown').addClass('active')
}
callback && callback()
}
transition ?
$active.one($.support.transition.end, next) :
next()
$active.removeClass('in')
}
}
/* TAB PLUGIN DEFINITION
* ===================== */
$.fn.tab = function ( option ) {
return this.each(function () {
var $this = $(this)
, data = $this.data('tab')
if (!data) $this.data('tab', (data = new Tab(this)))
if (typeof option == 'string') data[option]()
})
}
$.fn.tab.Constructor = Tab
/* TAB DATA-API
* ============ */
$(function () {
$('body').on('click.tab.data-api', '[data-toggle="tab"], [data-toggle="pill"]', function (e) {
e.preventDefault()
$(this).tab('show')
})
})
}(window.jQuery);
+39 -34
View File
@@ -1,5 +1,5 @@
/* =========================================================== /* ===========================================================
* bootstrap-tooltip.js v2.0.0 * bootstrap-tooltip.js v2.1.1
* http://twitter.github.com/bootstrap/javascript.html#tooltips * http://twitter.github.com/bootstrap/javascript.html#tooltips
* Inspired by the original jQuery.tipsy by Jason Frame * Inspired by the original jQuery.tipsy by Jason Frame
* =========================================================== * ===========================================================
@@ -18,14 +18,16 @@
* limitations under the License. * limitations under the License.
* ========================================================== */ * ========================================================== */
!function( $ ) {
"use strict" !function ($) {
"use strict"; // jshint ;_;
/* TOOLTIP PUBLIC CLASS DEFINITION /* TOOLTIP PUBLIC CLASS DEFINITION
* =============================== */ * =============================== */
var Tooltip = function ( element, options ) { var Tooltip = function (element, options) {
this.init('tooltip', element, options) this.init('tooltip', element, options)
} }
@@ -33,7 +35,7 @@
constructor: Tooltip constructor: Tooltip
, init: function ( type, element, options ) { , init: function (type, element, options) {
var eventIn var eventIn
, eventOut , eventOut
@@ -42,11 +44,13 @@
this.options = this.getOptions(options) this.options = this.getOptions(options)
this.enabled = true this.enabled = true
if (this.options.trigger != 'manual') { if (this.options.trigger == 'click') {
this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))
} else if (this.options.trigger != 'manual') {
eventIn = this.options.trigger == 'hover' ? 'mouseenter' : 'focus' eventIn = this.options.trigger == 'hover' ? 'mouseenter' : 'focus'
eventOut = this.options.trigger == 'hover' ? 'mouseleave' : 'blur' eventOut = this.options.trigger == 'hover' ? 'mouseleave' : 'blur'
this.$element.on(eventIn, this.options.selector, $.proxy(this.enter, this)) this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this))
this.$element.on(eventOut, this.options.selector, $.proxy(this.leave, this)) this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))
} }
this.options.selector ? this.options.selector ?
@@ -54,7 +58,7 @@
this.fixTitle() this.fixTitle()
} }
, getOptions: function ( options ) { , getOptions: function (options) {
options = $.extend({}, $.fn[this.type].defaults, options, this.$element.data()) options = $.extend({}, $.fn[this.type].defaults, options, this.$element.data())
if (options.delay && typeof options.delay == 'number') { if (options.delay && typeof options.delay == 'number') {
@@ -67,35 +71,29 @@
return options return options
} }
, enter: function ( e ) { , enter: function (e) {
var self = $(e.currentTarget)[this.type](this._options).data(this.type) var self = $(e.currentTarget)[this.type](this._options).data(this.type)
if (!self.options.delay || !self.options.delay.show) { if (!self.options.delay || !self.options.delay.show) return self.show()
self.show()
} else { clearTimeout(this.timeout)
self.hoverState = 'in' self.hoverState = 'in'
setTimeout(function() { this.timeout = setTimeout(function() {
if (self.hoverState == 'in') { if (self.hoverState == 'in') self.show()
self.show()
}
}, self.options.delay.show) }, self.options.delay.show)
} }
}
, leave: function ( e ) { , leave: function (e) {
var self = $(e.currentTarget)[this.type](this._options).data(this.type) var self = $(e.currentTarget)[this.type](this._options).data(this.type)
if (!self.options.delay || !self.options.delay.hide) { if (this.timeout) clearTimeout(this.timeout)
self.hide() if (!self.options.delay || !self.options.delay.hide) return self.hide()
} else {
self.hoverState = 'out' self.hoverState = 'out'
setTimeout(function() { this.timeout = setTimeout(function() {
if (self.hoverState == 'out') { if (self.hoverState == 'out') self.hide()
self.hide()
}
}, self.options.delay.hide) }, self.options.delay.hide)
} }
}
, show: function () { , show: function () {
var $tip var $tip
@@ -154,7 +152,9 @@
, setContent: function () { , setContent: function () {
var $tip = this.tip() var $tip = this.tip()
$tip.find('.tooltip-inner').html(this.getTitle()) , title = this.getTitle()
$tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)
$tip.removeClass('fade in top bottom left right') $tip.removeClass('fade in top bottom left right')
} }
@@ -178,6 +178,8 @@
$.support.transition && this.$tip.hasClass('fade') ? $.support.transition && this.$tip.hasClass('fade') ?
removeWithAnimation() : removeWithAnimation() :
$tip.remove() $tip.remove()
return this
} }
, fixTitle: function () { , fixTitle: function () {
@@ -206,8 +208,6 @@
title = $e.attr('data-original-title') title = $e.attr('data-original-title')
|| (typeof o.title == 'function' ? o.title.call($e[0]) : o.title) || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title)
title = title.toString().replace(/(^\s*|\s*$)/, "")
return title return title
} }
@@ -239,6 +239,10 @@
this[this.tip().hasClass('in') ? 'hide' : 'show']() this[this.tip().hasClass('in') ? 'hide' : 'show']()
} }
, destroy: function () {
this.hide().$element.off('.' + this.type).removeData(this.type)
}
} }
@@ -259,12 +263,13 @@
$.fn.tooltip.defaults = { $.fn.tooltip.defaults = {
animation: true animation: true
, delay: 0
, selector: false
, placement: 'top' , placement: 'top'
, selector: false
, template: '<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>'
, trigger: 'hover' , trigger: 'hover'
, title: '' , title: ''
, template: '<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>' , delay: 0
, html: true
} }
}( window.jQuery ) }(window.jQuery);
+27 -18
View File
@@ -1,5 +1,5 @@
/* =================================================== /* ===================================================
* bootstrap-transition.js v2.0.0 * bootstrap-transition.js v2.1.1
* http://twitter.github.com/bootstrap/javascript.html#transitions * http://twitter.github.com/bootstrap/javascript.html#transitions
* =================================================== * ===================================================
* Copyright 2012 Twitter, Inc. * Copyright 2012 Twitter, Inc.
@@ -17,35 +17,44 @@
* limitations under the License. * limitations under the License.
* ========================================================== */ * ========================================================== */
!function( $ ) {
!function ($) {
$(function () { $(function () {
"use strict" "use strict"; // jshint ;_;
/* CSS TRANSITION SUPPORT (https://gist.github.com/373874)
/* CSS TRANSITION SUPPORT (http://www.modernizr.com/)
* ======================================================= */ * ======================================================= */
$.support.transition = (function () { $.support.transition = (function () {
var thisBody = document.body || document.documentElement
, thisStyle = thisBody.style
, support = thisStyle.transition !== undefined || thisStyle.WebkitTransition !== undefined || thisStyle.MozTransition !== undefined || thisStyle.MsTransition !== undefined || thisStyle.OTransition !== undefined
return support && { var transitionEnd = (function () {
end: (function () {
var transitionEnd = "TransitionEnd" var el = document.createElement('bootstrap')
if ( $.browser.webkit ) { , transEndEventNames = {
transitionEnd = "webkitTransitionEnd" 'WebkitTransition' : 'webkitTransitionEnd'
} else if ( $.browser.mozilla ) { , 'MozTransition' : 'transitionend'
transitionEnd = "transitionend" , 'OTransition' : 'oTransitionEnd otransitionend'
} else if ( $.browser.opera ) { , 'transition' : 'transitionend'
transitionEnd = "oTransitionEnd"
} }
return transitionEnd , name
for (name in transEndEventNames){
if (el.style[name] !== undefined) {
return transEndEventNames[name]
}
}
}()) }())
return transitionEnd && {
end: transitionEnd
} }
})() })()
}) })
}( window.jQuery ) }(window.jQuery);
+74 -45
View File
@@ -1,5 +1,5 @@
/* ============================================================= /* =============================================================
* bootstrap-typeahead.js v2.0.1 * bootstrap-typeahead.js v2.1.1
* http://twitter.github.com/bootstrap/javascript.html#typeahead * http://twitter.github.com/bootstrap/javascript.html#typeahead
* ============================================================= * =============================================================
* Copyright 2012 Twitter, Inc. * Copyright 2012 Twitter, Inc.
@@ -17,16 +17,22 @@
* limitations under the License. * limitations under the License.
* ============================================================ */ * ============================================================ */
!function( $ ){
"use strict" !function($){
var Typeahead = function ( element, options ) { "use strict"; // jshint ;_;
/* TYPEAHEAD PUBLIC CLASS DEFINITION
* ================================= */
var Typeahead = function (element, options) {
this.$element = $(element) this.$element = $(element)
this.options = $.extend({}, $.fn.typeahead.defaults, options) this.options = $.extend({}, $.fn.typeahead.defaults, options)
this.matcher = this.options.matcher || this.matcher this.matcher = this.options.matcher || this.matcher
this.sorter = this.options.sorter || this.sorter this.sorter = this.options.sorter || this.sorter
this.highlighter = this.options.highlighter || this.highlighter this.highlighter = this.options.highlighter || this.highlighter
this.updater = this.options.updater || this.updater
this.$menu = $(this.options.menu).appendTo('body') this.$menu = $(this.options.menu).appendTo('body')
this.source = this.options.source this.source = this.options.source
this.shown = false this.shown = false
@@ -39,10 +45,16 @@
, select: function () { , select: function () {
var val = this.$menu.find('.active').attr('data-value') var val = this.$menu.find('.active').attr('data-value')
this.$element.val(val) this.$element
.val(this.updater(val))
.change()
return this.hide() return this.hide()
} }
, updater: function (item) {
return item
}
, show: function () { , show: function () {
var pos = $.extend({}, this.$element.offset(), { var pos = $.extend({}, this.$element.offset(), {
height: this.$element[0].offsetHeight height: this.$element[0].offsetHeight
@@ -65,18 +77,24 @@
} }
, lookup: function (event) { , lookup: function (event) {
var that = this var items
, items
, q
this.query = this.$element.val() this.query = this.$element.val()
if (!this.query) { if (!this.query || this.query.length < this.options.minLength) {
return this.shown ? this.hide() : this return this.shown ? this.hide() : this
} }
items = $.grep(this.source, function (item) { items = $.isFunction(this.source) ? this.source(this.query, $.proxy(this.process, this)) : this.source
if (that.matcher(item)) return item
return items ? this.process(items) : this
}
, process: function (items) {
var that = this
items = $.grep(items, function (item) {
return that.matcher(item)
}) })
items = this.sorter(items) items = this.sorter(items)
@@ -108,7 +126,8 @@
} }
, highlighter: function (item) { , highlighter: function (item) {
return item.replace(new RegExp('(' + this.query + ')', 'ig'), function ($1, match) { var query = this.query.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, '\\$&')
return item.replace(new RegExp('(' + query + ')', 'ig'), function ($1, match) {
return '<strong>' + match + '</strong>' return '<strong>' + match + '</strong>'
}) })
} }
@@ -155,8 +174,8 @@
.on('keypress', $.proxy(this.keypress, this)) .on('keypress', $.proxy(this.keypress, this))
.on('keyup', $.proxy(this.keyup, this)) .on('keyup', $.proxy(this.keyup, this))
if ($.browser.webkit || $.browser.msie) { if ($.browser.chrome || $.browser.webkit || $.browser.msie) {
this.$element.on('keydown', $.proxy(this.keypress, this)) this.$element.on('keydown', $.proxy(this.keydown, this))
} }
this.$menu this.$menu
@@ -164,33 +183,7 @@
.on('mouseenter', 'li', $.proxy(this.mouseenter, this)) .on('mouseenter', 'li', $.proxy(this.mouseenter, this))
} }
, keyup: function (e) { , move: function (e) {
e.stopPropagation()
e.preventDefault()
switch(e.keyCode) {
case 40: // down arrow
case 38: // up arrow
break
case 9: // tab
case 13: // enter
if (!this.shown) return
this.select()
break
case 27: // escape
this.hide()
break
default:
this.lookup()
}
}
, keypress: function (e) {
e.stopPropagation()
if (!this.shown) return if (!this.shown) return
switch(e.keyCode) { switch(e.keyCode) {
@@ -210,12 +203,47 @@
this.next() this.next()
break break
} }
e.stopPropagation()
}
, keydown: function (e) {
this.suppressKeyPressRepeat = !~$.inArray(e.keyCode, [40,38,9,13,27])
this.move(e)
}
, keypress: function (e) {
if (this.suppressKeyPressRepeat) return
this.move(e)
}
, keyup: function (e) {
switch(e.keyCode) {
case 40: // down arrow
case 38: // up arrow
break
case 9: // tab
case 13: // enter
if (!this.shown) return
this.select()
break
case 27: // escape
if (!this.shown) return
this.hide()
break
default:
this.lookup()
}
e.stopPropagation()
e.preventDefault()
} }
, blur: function (e) { , blur: function (e) {
var that = this var that = this
e.stopPropagation()
e.preventDefault()
setTimeout(function () { that.hide() }, 150) setTimeout(function () { that.hide() }, 150)
} }
@@ -236,7 +264,7 @@
/* TYPEAHEAD PLUGIN DEFINITION /* TYPEAHEAD PLUGIN DEFINITION
* =========================== */ * =========================== */
$.fn.typeahead = function ( option ) { $.fn.typeahead = function (option) {
return this.each(function () { return this.each(function () {
var $this = $(this) var $this = $(this)
, data = $this.data('typeahead') , data = $this.data('typeahead')
@@ -251,6 +279,7 @@
, items: 8 , items: 8
, menu: '<ul class="typeahead dropdown-menu"></ul>' , menu: '<ul class="typeahead dropdown-menu"></ul>'
, item: '<li><a href="#"></a></li>' , item: '<li><a href="#"></a></li>'
, minLength: 1
} }
$.fn.typeahead.Constructor = Typeahead $.fn.typeahead.Constructor = Typeahead
@@ -268,4 +297,4 @@
}) })
}) })
}( window.jQuery ); }(window.jQuery);
File renamed without changes.
File renamed without changes.
@@ -1,6 +1,12 @@
@import "compass"; @import "compass";
@import "compass_twitter_bootstrap"; @import "compass/reset";
@import "compass_twitter_bootstrap_responsive";
// Fixes image path for icons from sass-bootstrap
$iconSpritePath: generated-image-url("glyphicons-halflings.png");
$iconWhiteSpritePath: generated-image-url("glyphicons-halflings-white.png");
@import "bootstrap";
@import "bootstrap-responsive";
body { body {
View File
Whitespace-only changes.
View File
Whitespace-only changes.
File diff suppressed because it is too large. Load diff
+4 -4
View File
@@ -4,10 +4,10 @@
<title>{%block title%}BBS{%endblock%}</title> <title>{%block title%}BBS{%endblock%}</title>
<meta charset="utf-8" /> <meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="{{ STATIC_URL }}gaute/stylesheets/screen.css" type="text/css" media="screen, projection"> <link rel="stylesheet" href="{{ STATIC_URL }}stylesheets/screen.css" type="text/css" media="screen, projection">
<link rel="stylesheet" href="{{ STATIC_URL }}gaute/stylesheets/print.css" type="text/css" media="print"> <link rel="stylesheet" href="{{ STATIC_URL }}stylesheets/print.css" type="text/css" media="print">
<!--[if lt IE 8]> <!--[if lt IE 8]>
<link rel="stylesheet" href="{{ STATIC_URL }}gaute/stylesheets/ie.css" type="text/css" media="screen, projection"> <link rel="stylesheet" href="{{ STATIC_URL }}stylesheets/ie.css" type="text/css" media="screen, projection">
<![endif]--> <![endif]-->
{%block headinc %} {%block headinc %}
{%endblock%} {%endblock%}
@@ -24,7 +24,7 @@
<div id="footer" class="row-fluid"> <div id="footer" class="row-fluid">
<div class="span12"> <div class="span12">
{%block footer %} {%block footer %}
<img src="{{ STATIC_URL }}gaute/img/edb_brick.png" alt="EDB" /> <img src="{{ STATIC_URL }}img/edb_brick.png" alt="EDB" />
{%endblock%} {%endblock%}
</div> </div>
</div> </div>
+2 -2
View File
@@ -20,7 +20,7 @@
<section id="customer" class="row-fluid"> <section id="customer" class="row-fluid">
<h2>Hvem skal sette inn penger?</h2> <h2>Hvem skal sette inn penger?</h2>
<!-- Typeahead customer field --> <!-- Typeahead customer field -->
<input name="customer_name" id="id_customer_typeahead" value="" data-provide="typeahead" data-source="{{users_js}}" /> <input name="customer_name" id="id_customer_typeahead" type="text" value="" data-provide="typeahead" data-source="{{users_js}}" />
<!-- Actual customer select field (hidden) --> <!-- Actual customer select field (hidden) -->
<div style="display:none;">{{form.user }}</div> <div style="display:none;">{{form.user }}</div>
<ul class="well"> <ul class="well">
@@ -29,7 +29,7 @@
{% if user.get_profile.image %} {% if user.get_profile.image %}
  <img class="profile" src="{{ user.get_profile.image }}" alt="Profile picture"/><br />   <img class="profile" src="{{ user.get_profile.image }}" alt="Profile picture"/><br />
{% else %} {% else %}
  <img class="profile" src="{{ STATIC_URL }}gaute/img/unknown_person.png" alt="Profile picture" /><br />   <img class="profile" src="{{ STATIC_URL }}img/unknown_person.png" alt="Profile picture" /><br />
{% endif %} {% endif %}
<span class="name">{{ user.first_name }} {{ user.last_name|slice:":1"}}</span><br /> <span class="name">{{ user.first_name }} {{ user.last_name|slice:":1"}}</span><br />
<span class="balance">{{ user.get_profile.balance }}</span> <span class="balance">{{ user.get_profile.balance }}</span>
+1 -1
View File
@@ -1,4 +1,4 @@
<nav class="navbar"> <nav class="navbar navbar-inverse">
<div class="navbar-inner"> <div class="navbar-inner">
<div class="container"> <div class="container">
<!-- .btn-navbar is used as the toggle for collapsed navbar content --> <!-- .btn-navbar is used as the toggle for collapsed navbar content -->
+4 -4
View File
@@ -14,7 +14,7 @@
</div> </div>
</section> </section>
{% endif %} {% endif %}
<form id="order" method="post" autocomplete="off"> <form id="order" class="form-stacked" method="post" autocomplete="off">
<fieldset> <fieldset>
{% csrf_token %} {% csrf_token %}
<!-- Formset validation fields --> <!-- Formset validation fields -->
@@ -27,7 +27,7 @@
<div class="span12"> <div class="span12">
<h2 title="Sortert etter hvem som kjøpte noe sist.">Hvem kjøper?</h2> <h2 title="Sortert etter hvem som kjøpte noe sist.">Hvem kjøper?</h2>
<!-- Typeahead customer field --> <!-- Typeahead customer field -->
<input name="customer_name" id="id_customer_typeahead" value="" data-provide="typeahead" data-source="{{users_js}}" /> <input name="customer_name" type="text" id="id_customer_typeahead" value="" data-provide="typeahead" data-source="{{users_js}}" />
<!-- Actual customer select field (hidden) --> <!-- Actual customer select field (hidden) -->
<div style="display:none;">{{orderform.customer }}</div> <div style="display:none;">{{orderform.customer }}</div>
<ul class="well"> <ul class="well">
@@ -36,7 +36,7 @@
{% if user.get_profile.image %} {% if user.get_profile.image %}
  <img class="profile" src="{{ user.get_profile.image }}" alt="Profile picture" /><br />   <img class="profile" src="{{ user.get_profile.image }}" alt="Profile picture" /><br />
{% else %} {% else %}
  <img class="profile" src="{{ STATIC_URL }}gaute/img/unknown_person.png" alt="Profile picture" /><br />   <img class="profile" src="{{ STATIC_URL }}img/unknown_person.png" alt="Profile picture" /><br />
{% endif %} {% endif %}
<span class="name">{{ user.first_name }} {{ user.last_name|slice:":1"}}</span><br /> <span class="name">{{ user.first_name }} {{ user.last_name|slice:":1"}}</span><br />
<span class="balance">{{ user.get_profile.balance }}</span> <span class="balance">{{ user.get_profile.balance }}</span>
@@ -65,7 +65,7 @@
{% if product.image %} {% if product.image %}
<img class="product" src="{{ product.image.url }}" /><br /> <img class="product" src="{{ product.image.url }}" /><br />
{% else %} {% else %}
<img class="product" src="{{ STATIC_URL }}gaute/img/product.png" /><br /> <img class="product" src="{{ STATIC_URL }}img/product.png" /><br />
{% endif %} {% endif %}
<span class="name">{{ product.name }}</span> - <span class="sale_price_int">{{product.sale_price_int|floatformat:0}}</span> <span class="name">{{ product.name }}</span> - <span class="sale_price_int">{{product.sale_price_int|floatformat:0}}</span>
</li> </li>