Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
[JENKINS-14035] Enable responsive design
  • Loading branch information
ohtake committed Jun 7, 2012
1 parent 98cd736 commit 62f266c
Show file tree
Hide file tree
Showing 4 changed files with 223 additions and 3 deletions.
6 changes: 4 additions & 2 deletions core/src/main/resources/lib/layout/layout.jelly
Expand Up @@ -115,7 +115,9 @@ THE SOFTWARE.
<script type="text/javascript"><![CDATA[
jQuery.noConflict();
]]></script>
<script src="${resURL}/scripts/bootstrap-transition.js" type="text/javascript"/>
<script src="${resURL}/scripts/bootstrap-dropdown.js" type="text/javascript"/>
<script src="${resURL}/scripts/bootstrap-collapse.js" type="text/javascript"/>
<script src="${resURL}/scripts/behavior.js" type="text/javascript"/>

<!-- we include our own prototype.js, so don't let stapler pull in another. -->
Expand Down Expand Up @@ -158,6 +160,7 @@ THE SOFTWARE.

<link rel="search" type="application/opensearchdescription+xml" href="${rootURL}/opensearch.xml" title="Jenkins" />
<meta name="ROBOTS" content="INDEX,NOFOLLOW" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<j:set var="mode" value="header" />
<d:invokeBody />
<j:forEach var="pd" items="${h.pageDecorators}">
Expand All @@ -169,7 +172,7 @@ THE SOFTWARE.
<a href="#skip2content" class="skiplink">Skip to content</a>
<div class="navbar">
<div class="navbar-inner">
<div class="container-fluid">
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></a>
<a class="brand" href="${rootURL}/">Jenkins</a>
<div class="nav-collapse">
<!-- login field -->
Expand Down Expand Up @@ -223,7 +226,6 @@ THE SOFTWARE.
</div>
</form>
</div>
</div>
</div>
</div>
<l:breadcrumbBar>
Expand Down
2 changes: 1 addition & 1 deletion war/src/main/webapp/less/jenkins.less
Expand Up @@ -44,6 +44,7 @@

// Import bootstrap
@import "bootstrap/bootstrap.less";
@import "bootstrap/responsive.less";

// Override bootstrap
a {
Expand All @@ -63,7 +64,6 @@ a:visited {
margin-bottom: 0;
}
.navbar, .container-fluid {
min-width: 768px;
}

.navbar a, a.btn, .btn a, .btn-group a {
Expand Down
157 changes: 157 additions & 0 deletions war/src/main/webapp/scripts/bootstrap-collapse.js
@@ -0,0 +1,157 @@
/* =============================================================
* bootstrap-collapse.js v2.0.4
* 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"; // jshint ;_;


/* COLLAPSE PUBLIC CLASS DEFINITION
* ================================ */

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
, scroll
, actives
, 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) {
hasData = actives.data('collapse')
if (hasData && hasData.transitioning) return
actives.collapse('hide')
hasData || actives.data('collapse', null)
}

this.$element[dimension](0)
this.transition('addClass', $.Event('show'), 'shown')
this.$element[dimension](this.$element[0][scroll])
}

, hide: function () {
var dimension
if (this.transitioning) return
dimension = this.dimension()
this.reset(this.$element[dimension]())
this.transition('removeClass', $.Event('hide'), 'hidden')
this.$element[dimension](0)
}

, reset: function (size) {
var dimension = this.dimension()

this.$element
.removeClass('collapse')
[dimension](size || 'auto')
[0].offsetWidth

this.$element[size !== null ? 'addClass' : 'removeClass']('collapse')

return this
}

, transition: function (method, startEvent, completeEvent) {
var that = this
, complete = function () {
if (startEvent.type == 'show') that.reset()
that.transitioning = 0
that.$element.trigger(completeEvent)
}

this.$element.trigger(startEvent)

if (startEvent.isDefaultPrevented()) return

this.transitioning = 1

this.$element[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);
61 changes: 61 additions & 0 deletions war/src/main/webapp/scripts/bootstrap-transition.js
@@ -0,0 +1,61 @@
/* ===================================================
* bootstrap-transition.js v2.0.4
* http://twitter.github.com/bootstrap/javascript.html#transitions
* ===================================================
* 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 ($) {

$(function () {

"use strict"; // jshint ;_;


/* CSS TRANSITION SUPPORT (http://www.modernizr.com/)
* ======================================================= */

$.support.transition = (function () {

var transitionEnd = (function () {

var el = document.createElement('bootstrap')
, transEndEventNames = {
'WebkitTransition' : 'webkitTransitionEnd'
, 'MozTransition' : 'transitionend'
, 'OTransition' : 'oTransitionEnd'
, 'msTransition' : 'MSTransitionEnd'
, 'transition' : 'transitionend'
}
, name

for (name in transEndEventNames){
if (el.style[name] !== undefined) {
return transEndEventNames[name]
}
}

}())

return transitionEnd && {
end: transitionEnd
}

})()

})

}(window.jQuery);

0 comments on commit 62f266c

Please sign in to comment.