-
Notifications
You must be signed in to change notification settings - Fork 33
Blueprint tutorial (Step 2): Add carousel code
KavyaSukumar edited this page Jul 2, 2015
·
9 revisions
This is part 2 of a step-by-step guide to creating a configurable Bootstrap carousel blueprint.
Code is available in this repo.
Follow instructions in step 1 before doing this.
Now that we have a barebones middleman app running, let us add a bootstrap image carousel to it.
Here, we'll write the code for carousel assuming that all configuration data like images and captions come from
data/autotune.json
file. Later, we'll wire up autotune to write configuration to this file when the project is built.
-
Include Bootstrap on the page
In
source/layouts/layout.erb
file, add the following lines inside the<head>
tag<!-- Bootstrap files --> <!-- Latest compiled and minified CSS --> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css"> <!-- Optional theme --> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap-theme.min.css"> <!-- Latest compiled and minified JavaScript --> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
-
Add carousel markup
Replace the existing markup in
source/index.html.erb
with the following.<script> var AUTOTUNE = <%=data.autotune.to_json %>; </script> <div id="blueprint-carousel" class="carousel slide"> <!-- Wrapper for slides --> <div class="carousel-inner" role="listbox"> </div> <!-- Controls --> <a class="left carousel-control" href="#blueprint-carousel" role="button" data-slide="prev"> <span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span> <span class="sr-only">Previous</span> </a> <a class="right carousel-control" href="#blueprint-carousel" role="button" data-slide="next"> <span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span> <span class="sr-only">Next</span> </a> </div> <%= javascript_include_tag "slideshow" %>
3. Add javascript to insert the slides
Create `slideshow.js` in `source/javascripts` folder.
Add the following code to the file.
```js
(function ($) {
'use strict';
var slides;
var addSlides = function(){
$.each(slides, function(i, item){
var $itemDiv = $('<div>')
.addClass('item');
// set the first slide as active
if( i === 0){
$itemDiv.addClass('active');
}
$itemDiv.append($('<img>')
.prop('src',item.src));
if(item.caption){
$itemDiv.append($('<div>')
.addClass('carousel-caption')
.html(item.caption));
}
$('.carousel-inner').append($itemDiv);
});
};
$(document).ready(function () {
slides = AUTOTUNE.images;
addSlides();
});
})(jQuery);
```
4. Configure the project
In `config.rb`, add the following lines
```ruby
set :layout, 'layout'
set :vertical, data.autotune.theme
```
Change the build specific configuration section at the end of the file to the following
```rb
configure :build do
require 'uri'
uri = URI(data.autotune.base_url)
set :absolute_prefix, "#{uri.scheme}://#{uri.host}"
set :url_prefix, uri.path
set :http_prefix, data.autotune.base_url
activate :asset_hash
activate :minify_javascript
activate :minify_css
end
```
4. Add dummy data for testing
Create a `data/autotune.json` file with the following content
```json
{
"title": "A sample slideshow",
"slug": "sample-slideshow",
"theme": "default",
"slides":[
{
"image":"http://kavyasukumar.com/apps/imgSlider/img/before.jpg",
"caption":"Evanston, IL at night."
},
{
"image":"http://kavyasukumar.com/apps/imgSlider/img/after.jpg",
"caption":"Evanston, IL in the morning."
}
]
}
```
5. Run the middleman server with `bundle exec middleman` command.
---
Congratulations! You now have a configurable carousel running.
Proceed to the [[next step|Blueprint-tutorial-(Step-3):-Making-your-project-a-blueprint]] to make this a blueprint.