diff --git a/Gruntfile.js b/Gruntfile.js
index 78f77a763e..925368e527 100644
--- a/Gruntfile.js
+++ b/Gruntfile.js
@@ -78,6 +78,9 @@ module.exports = function (grunt) {
src: '<%= jshint.test.src %>'
},
assets: {
+ options: {
+ requireCamelCaseOrUpperCaseIdentifiers: null
+ },
src: '<%= jshint.assets.src %>'
}
},
diff --git a/docs/assets/js/_src/customizer.js b/docs/assets/js/_src/customizer.js
index cee3c5766d..ea7cf7f6f5 100644
--- a/docs/assets/js/_src/customizer.js
+++ b/docs/assets/js/_src/customizer.js
@@ -43,7 +43,7 @@ window.onload = function () { // wait for load in a dumb way because B-0
return match && decodeURIComponent(match[1].replace(/\+/g, ' '))
}
- function createGist(configJson) {
+ function createGist(configJson, callback) {
var data = {
description: 'Bootstrap Customizer Config',
'public': true,
@@ -61,10 +61,13 @@ window.onload = function () { // wait for load in a dumb way because B-0
})
.success(function (result) {
var origin = window.location.protocol + '//' + window.location.host
- history.replaceState(false, document.title, origin + window.location.pathname + '?id=' + result.id)
+ var newUrl = origin + window.location.pathname + '?id=' + result.id
+ history.replaceState(false, document.title, newUrl)
+ callback(result.html_url, newUrl)
})
.error(function (err) {
showError('Ruh roh! Could not save gist file, configuration not saved.', err)
+ callback('', '')
})
}
@@ -221,7 +224,7 @@ window.onload = function () { // wait for load in a dumb way because B-0
})
}
- function generateCSS() {
+ function generateCSS(preamble) {
var oneChecked = false
var lessFileIncludes = {}
$('#less-section input').each(function() {
@@ -242,8 +245,8 @@ window.onload = function () { // wait for load in a dumb way because B-0
$(this).val() && (vars[$(this).prev().text()] = $(this).val())
})
- var bsLessSource = generateLESS('bootstrap.less', lessFileIncludes, vars)
- var themeLessSource = generateLESS('theme.less', lessFileIncludes, vars)
+ var bsLessSource = preamble + generateLESS('bootstrap.less', lessFileIncludes, vars)
+ var themeLessSource = preamble + generateLESS('theme.less', lessFileIncludes, vars)
try {
compileLESS(bsLessSource, 'bootstrap', result)
@@ -255,7 +258,7 @@ window.onload = function () { // wait for load in a dumb way because B-0
return result
}
- function generateJavascript() {
+ function generateJavascript(preamble) {
var $checked = $('#plugin-section input:checked')
if (!$checked.length) return false
@@ -265,8 +268,8 @@ window.onload = function () { // wait for load in a dumb way because B-0
.join('\n')
return {
- 'bootstrap.js': js,
- 'bootstrap.min.js': cw + uglify(js)
+ 'bootstrap.js': preamble + js,
+ 'bootstrap.min.js': preamble + cw + uglify(js)
}
}
@@ -322,10 +325,19 @@ window.onload = function () { // wait for load in a dumb way because B-0
$compileBtn.attr('disabled', 'disabled')
- generateZip(generateCSS(), generateJavascript(), generateFonts(), configJson, function (blob) {
- $compileBtn.removeAttr('disabled')
- saveAs(blob, 'bootstrap.zip')
- createGist(configJson)
+ createGist(configJson, function (gistUrl, customizerUrl) {
+ configData.customizerUrl = customizerUrl
+ configJson = JSON.stringify(configData, null, 2)
+
+ var preamble = '/*!\n' +
+ ' * Generated using the Bootstrap Customizer (' + customizerUrl + ')\n' +
+ ' * Config saved to config.json and ' + gistUrl + '\n' +
+ ' */\n'
+
+ generateZip(generateCSS(preamble), generateJavascript(preamble), generateFonts(), configJson, function (blob) {
+ $compileBtn.removeAttr('disabled')
+ saveAs(blob, 'bootstrap.zip')
+ })
})
});