return match && decodeURIComponent(match[1].replace(/\+/g, ' '))
}
- function createGist(configJson) {
+ function createGist(configJson, callback) {
var data = {
description: 'Bootstrap Customizer Config',
'public': true,
})
.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('<strong>Ruh roh!</strong> Could not save gist file, configuration not saved.', err)
+ callback('<none>', '<none>')
})
}
})
}
- function generateCSS() {
+ function generateCSS(preamble) {
var oneChecked = false
var lessFileIncludes = {}
$('#less-section input').each(function() {
$(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)
return result
}
- function generateJavascript() {
+ function generateJavascript(preamble) {
var $checked = $('#plugin-section input:checked')
if (!$checked.length) return false
.join('\n')
return {
- 'bootstrap.js': js,
- 'bootstrap.min.js': cw + uglify(js)
+ 'bootstrap.js': preamble + js,
+ 'bootstrap.min.js': preamble + cw + uglify(js)
}
}
$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')
+ })
})
});