ZEPPELIN-279: move website w/ docs to master branch

Details at the 
[ZEPPELIN-279](https://issues.apache.org/jira/browse/ZEPPELIN-279)

Author: Alexander Bezzubov <[email protected]>

Closes #282 from bzz/ZEPPELIN-279-move-docs-to-master and squashes the 
following commits:

16d2cd0 [Alexander Bezzubov] ZEPPELIN-279: updating refs to new /docs location
a051a35 [Alexander Bezzubov] ZEPPELIN-279: moving website gh-pages -> 
master:/docs


Project: http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/commit/d1d32b11
Tree: http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/tree/d1d32b11
Diff: http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/diff/d1d32b11

Branch: refs/heads/master
Commit: d1d32b11722ec5ebb0707140213c3b6115afca50
Parents: a849b4b
Author: Alexander Bezzubov <[email protected]>
Authored: Sat Sep 5 08:11:31 2015 +0900
Committer: Alexander Bezzubov <[email protected]>
Committed: Sat Sep 5 19:48:22 2015 +0900

----------------------------------------------------------------------
 docs/404.html                                   |    1 +
 docs/Gemfile                                    |    2 +
 docs/Gemfile.lock                               |   58 +
 docs/README.md                                  |   32 +
 docs/Rakefile                                   |  310 +
 docs/_config.yml                                |  134 +
 docs/_includes/JB/analytics                     |   18 +
 docs/_includes/JB/analytics-providers/getclicky |   12 +
 .../JB/analytics-providers/google-classic       |   11 +
 .../JB/analytics-providers/google-universal     |   11 +
 docs/_includes/JB/analytics-providers/mixpanel  |   11 +
 docs/_includes/JB/analytics-providers/piwik     |   10 +
 docs/_includes/JB/categories_list               |   37 +
 docs/_includes/JB/comments                      |   16 +
 docs/_includes/JB/comments-providers/disqus     |   14 +
 docs/_includes/JB/comments-providers/facebook   |    9 +
 .../JB/comments-providers/intensedebate         |    6 +
 docs/_includes/JB/comments-providers/livefyre   |    6 +
 docs/_includes/JB/liquid_raw                    |   32 +
 docs/_includes/JB/pages_list                    |   39 +
 docs/_includes/JB/posts_collate                 |   55 +
 docs/_includes/JB/setup                         |   22 +
 docs/_includes/JB/sharing                       |    8 +
 docs/_includes/JB/tags_list                     |   33 +
 docs/_includes/themes/zeppelin/_jumbotron.html  |   50 +
 docs/_includes/themes/zeppelin/_navigation.html |   52 +
 docs/_includes/themes/zeppelin/default.html     |   51 +
 docs/_includes/themes/zeppelin/page.html        |   10 +
 docs/_includes/themes/zeppelin/post.html        |   49 +
 docs/_includes/themes/zeppelin/settings.yml     |    2 +
 docs/_layouts/default.html                      |    6 +
 docs/_layouts/page.html                         |    5 +
 docs/_layouts/post.html                         |    5 +
 docs/_plugins/debug.rb                          |   38 +
 docs/assets/bootstrap-3.0.2-dist.zip            |  Bin 0 -> 143318 bytes
 .../bootstrap/css/bootstrap.2.2.2.min.css       |  782 ++
 .../img/glyphicons-halflings-white.png          |  Bin 0 -> 8777 bytes
 .../bootstrap/img/glyphicons-halflings.png      |  Bin 0 -> 12799 bytes
 docs/assets/themes/twitter/css/style.css        |   65 +
 .../zeppelin/bootstrap/css/bootstrap-theme.css  |  459 ++
 .../bootstrap/css/bootstrap-theme.min.css       |    9 +
 .../themes/zeppelin/bootstrap/css/bootstrap.css | 7100 ++++++++++++++++++
 .../fonts/glyphicons-halflings-regular.eot      |  Bin 0 -> 20290 bytes
 .../fonts/glyphicons-halflings-regular.svg      |  229 +
 .../fonts/glyphicons-halflings-regular.ttf      |  Bin 0 -> 41236 bytes
 .../fonts/glyphicons-halflings-regular.woff     |  Bin 0 -> 23292 bytes
 .../img/glyphicons-halflings-white.png          |  Bin 0 -> 8777 bytes
 .../bootstrap/img/glyphicons-halflings.png      |  Bin 0 -> 12799 bytes
 .../themes/zeppelin/bootstrap/js/bootstrap.js   | 2002 +++++
 .../zeppelin/bootstrap/js/bootstrap.min.js      |    9 +
 docs/assets/themes/zeppelin/css/style.css       |  352 +
 docs/assets/themes/zeppelin/css/syntax.css      |   60 +
 docs/assets/themes/zeppelin/img/body-bg.jpg     |  Bin 0 -> 3188 bytes
 docs/assets/themes/zeppelin/img/graph1.png      |  Bin 0 -> 19462 bytes
 docs/assets/themes/zeppelin/img/graph2.png      |  Bin 0 -> 22596 bytes
 docs/assets/themes/zeppelin/img/header-bg.jpg   |  Bin 0 -> 10442 bytes
 .../assets/themes/zeppelin/img/highlight-bg.jpg |  Bin 0 -> 34222 bytes
 docs/assets/themes/zeppelin/img/interpreter.png |  Bin 0 -> 36035 bytes
 docs/assets/themes/zeppelin/img/notebook.png    |  Bin 0 -> 120352 bytes
 .../zeppelin/img/screenshots/collaboration.png  |  Bin 0 -> 10901 bytes
 .../img/screenshots/display_angular.png         |  Bin 0 -> 69621 bytes
 .../img/screenshots/display_angular1.png        |  Bin 0 -> 97217 bytes
 .../img/screenshots/display_angular2.png        |  Bin 0 -> 94041 bytes
 .../img/screenshots/display_angular3.png        |  Bin 0 -> 76267 bytes
 .../zeppelin/img/screenshots/display_html.png   |  Bin 0 -> 28401 bytes
 .../zeppelin/img/screenshots/display_image.png  |  Bin 0 -> 25969 bytes
 .../zeppelin/img/screenshots/display_table.png  |  Bin 0 -> 30912 bytes
 .../zeppelin/img/screenshots/display_table1.png |  Bin 0 -> 41254 bytes
 .../img/screenshots/display_table_html.png      |  Bin 0 -> 33133 bytes
 .../zeppelin/img/screenshots/display_text.png   |  Bin 0 -> 21517 bytes
 .../zeppelin/img/screenshots/display_text1.png  |  Bin 0 -> 22977 bytes
 .../zeppelin/img/screenshots/form_input.png     |  Bin 0 -> 16832 bytes
 .../img/screenshots/form_input_default.png      |  Bin 0 -> 15299 bytes
 .../img/screenshots/form_input_default_prog.png |  Bin 0 -> 16223 bytes
 .../img/screenshots/form_input_prog.png         |  Bin 0 -> 17602 bytes
 .../zeppelin/img/screenshots/form_select.png    |  Bin 0 -> 19207 bytes
 .../img/screenshots/form_select_displayname.png |  Bin 0 -> 20191 bytes
 .../img/screenshots/form_select_prog.png        |  Bin 0 -> 26119 bytes
 .../img/screenshots/homepage_notebook_id.png    |  Bin 0 -> 18950 bytes
 .../img/screenshots/homepage_notebook_list.png  |  Bin 0 -> 35186 bytes
 .../img/screenshots/interpreter_create.png      |  Bin 0 -> 10591 bytes
 .../img/screenshots/interpreter_setting.png     |  Bin 0 -> 14602 bytes
 .../screenshots/interpreter_setting_spark.png   |  Bin 0 -> 40237 bytes
 .../zeppelin/img/screenshots/link_paragraph.png |  Bin 0 -> 17113 bytes
 .../zeppelin/img/screenshots/markdown.png       |  Bin 0 -> 22145 bytes
 .../screenshots/multiple_language_backend.png   |  Bin 0 -> 16491 bytes
 .../zeppelin/img/screenshots/notebook.png       |  Bin 0 -> 64398 bytes
 .../themes/zeppelin/img/screenshots/pivot.png   |  Bin 0 -> 76003 bytes
 .../themes/zeppelin/img/screenshots/publish.png |  Bin 0 -> 54956 bytes
 .../themes/zeppelin/img/screenshots/spark.png   |  Bin 0 -> 48215 bytes
 .../zeppelin/img/screenshots/sparksql.png       |  Bin 0 -> 36004 bytes
 .../zeppelin/img/screenshots/visualization.png  |  Bin 0 -> 39545 bytes
 docs/assets/themes/zeppelin/img/sidebar-bg.jpg  |  Bin 0 -> 3200 bytes
 docs/assets/themes/zeppelin/img/spark_logo.jpg  |  Bin 0 -> 32200 bytes
 .../themes/zeppelin/img/zeppelin_logo.png       |  Bin 0 -> 16393 bytes
 docs/atom.xml                                   |   28 +
 docs/community.md                               |   20 +
 docs/docs/development/howtocontribute.md        |  109 +
 docs/docs/development/howtocontributewebsite.md |   66 +
 .../development/writingzeppelininterpreter.md   |  143 +
 docs/docs/displaysystem/angular.md              |   85 +
 docs/docs/displaysystem/display.md              |   32 +
 docs/docs/displaysystem/table.md                |   24 +
 docs/docs/index.md                              |   56 +
 docs/docs/install/install.md                    |  129 +
 docs/docs/install/yarn_install.md               |  251 +
 docs/docs/interpreter/geode.md                  |  203 +
 docs/docs/interpreter/postgresql.md             |  180 +
 docs/docs/interpreter/spark.md                  |  163 +
 docs/docs/manual/dynamicform.md                 |   65 +
 docs/docs/manual/interpreters.md                |   38 +
 docs/docs/manual/notebookashomepage.md          |   96 +
 docs/docs/pleasecontribute.md                   |   15 +
 .../zeppelin-release-0.5.0-incubating.md        |   64 +
 docs/docs/rest-api/rest-interpreter.md          |  195 +
 .../rest-json-interpreter-create-response.json  |    1 +
 .../rest-json/rest-json-interpreter-create.json |    1 +
 .../rest-json-interpreter-delete-response.json  |    1 +
 .../rest-json/rest-json-interpreter-list.json   |    1 +
 .../rest-json-interpreter-setting.json          |    1 +
 .../rest-json-interpreter-update-response.json  |    1 +
 .../rest-json/rest-json-interpreter-update.json |    1 +
 docs/docs/tutorial/tutorial.md                  |  185 +
 docs/download.md                                |   46 +
 docs/index.md                                   |  115 +
 docs/old_CNAME                                  |    1 +
 docs/robot.txt                                  |    0
 docs/rss.xml                                    |   28 +
 docs/screenshots.md                             |   32 +
 docs/sitemap.txt                                |    8 +
 130 files changed, 14606 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/d1d32b11/docs/404.html
----------------------------------------------------------------------
diff --git a/docs/404.html b/docs/404.html
new file mode 100644
index 0000000..6904bcd
--- /dev/null
+++ b/docs/404.html
@@ -0,0 +1 @@
+Sorry this page does not exist =(

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/d1d32b11/docs/Gemfile
----------------------------------------------------------------------
diff --git a/docs/Gemfile b/docs/Gemfile
new file mode 100644
index 0000000..053c27d
--- /dev/null
+++ b/docs/Gemfile
@@ -0,0 +1,2 @@
+source 'https://rubygems.org'
+gem 'github-pages'

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/d1d32b11/docs/Gemfile.lock
----------------------------------------------------------------------
diff --git a/docs/Gemfile.lock b/docs/Gemfile.lock
new file mode 100644
index 0000000..317f587
--- /dev/null
+++ b/docs/Gemfile.lock
@@ -0,0 +1,58 @@
+GEM
+  remote: https://rubygems.org/
+  specs:
+    RedCloth (4.2.9)
+    classifier (1.3.3)
+      fast-stemmer (>= 1.0.0)
+    colorator (0.1)
+    commander (4.1.5)
+      highline (~> 1.6.11)
+    fast-stemmer (1.0.2)
+    ffi (1.9.3)
+    github-pages (10)
+      RedCloth (= 4.2.9)
+      jekyll (= 1.3.0)
+      kramdown (= 1.2.0)
+      liquid (= 2.5.4)
+      maruku (= 0.6.1)
+      rdiscount (= 2.1.7)
+      redcarpet (= 2.3.0)
+    highline (1.6.20)
+    jekyll (1.3.0)
+      classifier (~> 1.3)
+      colorator (~> 0.1)
+      commander (~> 4.1.3)
+      liquid (~> 2.5.2)
+      listen (~> 1.3)
+      maruku (~> 0.6.0)
+      pygments.rb (~> 0.5.0)
+      redcarpet (~> 2.3.0)
+      safe_yaml (~> 0.9.7)
+    kramdown (1.2.0)
+    liquid (2.5.4)
+    listen (1.3.1)
+      rb-fsevent (>= 0.9.3)
+      rb-inotify (>= 0.9)
+      rb-kqueue (>= 0.2)
+    maruku (0.6.1)
+      syntax (>= 1.0.0)
+    posix-spawn (0.3.6)
+    pygments.rb (0.5.4)
+      posix-spawn (~> 0.3.6)
+      yajl-ruby (~> 1.1.0)
+    rb-fsevent (0.9.3)
+    rb-inotify (0.9.2)
+      ffi (>= 0.5.0)
+    rb-kqueue (0.2.0)
+      ffi (>= 0.5.0)
+    rdiscount (2.1.7)
+    redcarpet (2.3.0)
+    safe_yaml (0.9.7)
+    syntax (1.0.0)
+    yajl-ruby (1.1.0)
+
+PLATFORMS
+  ruby
+
+DEPENDENCIES
+  github-pages

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/d1d32b11/docs/README.md
----------------------------------------------------------------------
diff --git a/docs/README.md b/docs/README.md
new file mode 100644
index 0000000..daa6246
--- /dev/null
+++ b/docs/README.md
@@ -0,0 +1,32 @@
+## Zeppelin project website
+
+## Build
+See https://help.github.com/articles/using-jekyll-with-pages#installing-jekyll
+
+**tl;dr version:**
+
+    ruby --version >= 1.9.3
+    gem install bundler
+    bundle install
+    
+*On OS X 10.9 you may need to do "xcode-select --install"*
+
+## On local machine
+
+### Run
+    bundle exec jekyll serve --watch
+
+### Deploy
+ 1. generate static website in ```_site```
+
+    bundle exec jekyll build
+ 2. checkout asf repo
+
+    svn co https://svn.apache.org/repos/asf/incubator/zeppelin asf-zepplelin
+
+ 3. copy zeppelin/_site to asf-zepplelin/site
+ 4.  svn commit
+
+### Add a new page
+    rake page name="new-page.md"
+    

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/d1d32b11/docs/Rakefile
----------------------------------------------------------------------
diff --git a/docs/Rakefile b/docs/Rakefile
new file mode 100644
index 0000000..176c94b
--- /dev/null
+++ b/docs/Rakefile
@@ -0,0 +1,310 @@
+require "rubygems"
+require 'rake'
+require 'yaml'
+require 'time'
+
+SOURCE = "."
+CONFIG = {
+  'version' => "0.3.0",
+  'themes' => File.join(SOURCE, "_includes", "themes"),
+  'layouts' => File.join(SOURCE, "_layouts"),
+  'posts' => File.join(SOURCE, "_posts"),
+  'post_ext' => "md",
+  'theme_package_version' => "0.1.0"
+}
+
+# Path configuration helper
+module JB
+  class Path
+    SOURCE = "."
+    Paths = {
+      :layouts => "_layouts",
+      :themes => "_includes/themes",
+      :theme_assets => "assets/themes",
+      :theme_packages => "_theme_packages",
+      :posts => "_posts"
+    }
+    
+    def self.base
+      SOURCE
+    end
+
+    # build a path relative to configured path settings.
+    def self.build(path, opts = {})
+      opts[:root] ||= SOURCE
+      path = "#{opts[:root]}/#{Paths[path.to_sym]}/#{opts[:node]}".split("/")
+      path.compact!
+      File.__send__ :join, path
+    end
+  
+  end #Path
+end #JB
+
+# Usage: rake post title="A Title" [date="2012-02-09"] [tags=[tag1,tag2]] 
[category="category"]
+desc "Begin a new post in #{CONFIG['posts']}"
+task :post do
+  abort("rake aborted: '#{CONFIG['posts']}' directory not found.") unless 
FileTest.directory?(CONFIG['posts'])
+  title = ENV["title"] || "new-post"
+  tags = ENV["tags"] || "[]"
+  category = ENV["category"] || ""
+  slug = title.downcase.strip.gsub(' ', '-').gsub(/[^\w-]/, '')
+  begin
+    date = (ENV['date'] ? Time.parse(ENV['date']) : 
Time.now).strftime('%Y-%m-%d')
+  rescue => e
+    puts "Error - date format must be YYYY-MM-DD, please check you typed it 
correctly!"
+    exit -1
+  end
+  filename = File.join(CONFIG['posts'], 
"#{date}-#{slug}.#{CONFIG['post_ext']}")
+  if File.exist?(filename)
+    abort("rake aborted!") if ask("#{filename} already exists. Do you want to 
overwrite?", ['y', 'n']) == 'n'
+  end
+  
+  puts "Creating new post: #{filename}"
+  open(filename, 'w') do |post|
+    post.puts "---"
+    post.puts "layout: post"
+    post.puts "title: \"#{title.gsub(/-/,' ')}\""
+    post.puts 'description: ""'
+    post.puts "category: \"#{category.gsub(/-/,' ')}\""
+    post.puts "tags: #{tags}"
+    post.puts "---"
+    post.puts "{% include JB/setup %}"
+  end
+end # task :post
+
+# Usage: rake page name="about.html"
+# You can also specify a sub-directory path.
+# If you don't specify a file extention we create an index.html at the path 
specified
+desc "Create a new page."
+task :page do
+  name = ENV["name"] || "new-page.md"
+  filename = File.join(SOURCE, "#{name}")
+  filename = File.join(filename, "index.html") if File.extname(filename) == ""
+  title = File.basename(filename, File.extname(filename)).gsub(/[\W\_]/, " 
").gsub(/\b\w/){$&.upcase}
+  if File.exist?(filename)
+    abort("rake aborted!") if ask("#{filename} already exists. Do you want to 
overwrite?", ['y', 'n']) == 'n'
+  end
+  
+  mkdir_p File.dirname(filename)
+  puts "Creating new page: #{filename}"
+  open(filename, 'w') do |post|
+    post.puts "---"
+    post.puts "layout: page"
+    post.puts "title: \"#{title}\""
+    post.puts 'description: ""'
+    post.puts "---"
+    post.puts "{% include JB/setup %}"
+  end
+end # task :page
+
+desc "Launch preview environment"
+task :preview do
+  system "jekyll serve -w"
+end # task :preview
+
+# Public: Alias - Maintains backwards compatability for theme switching.
+task :switch_theme => "theme:switch"
+
+namespace :theme do
+  
+  # Public: Switch from one theme to another for your blog.
+  #
+  # name - String, Required. name of the theme you want to switch to.
+  #        The theme must be installed into your JB framework.
+  #
+  # Examples
+  #
+  #   rake theme:switch name="the-program"
+  #
+  # Returns Success/failure messages.
+  desc "Switch between Jekyll-bootstrap themes."
+  task :switch do
+    theme_name = ENV["name"].to_s
+    theme_path = File.join(CONFIG['themes'], theme_name)
+    settings_file = File.join(theme_path, "settings.yml")
+    non_layout_files = ["settings.yml"]
+
+    abort("rake aborted: name cannot be blank") if theme_name.empty?
+    abort("rake aborted: '#{theme_path}' directory not found.") unless 
FileTest.directory?(theme_path)
+    abort("rake aborted: '#{CONFIG['layouts']}' directory not found.") unless 
FileTest.directory?(CONFIG['layouts'])
+
+    Dir.glob("#{theme_path}/*") do |filename|
+      next if non_layout_files.include?(File.basename(filename).downcase)
+      puts "Generating '#{theme_name}' layout: #{File.basename(filename)}"
+
+      open(File.join(CONFIG['layouts'], File.basename(filename)), 'w') do 
|page|
+        if File.basename(filename, ".html").downcase == "default"
+          page.puts "---"
+          page.puts File.read(settings_file) if File.exist?(settings_file)
+          page.puts "---"
+        else
+          page.puts "---"
+          page.puts "layout: default"
+          page.puts "---"
+        end 
+        page.puts "{% include JB/setup %}"
+        page.puts "{% include themes/#{theme_name}/#{File.basename(filename)} 
%}" 
+      end
+    end
+    
+    puts "=> Theme successfully switched!"
+    puts "=> Reload your web-page to check it out =)"
+  end # task :switch
+  
+  # Public: Install a theme using the theme packager.
+  # Version 0.1.0 simple 1:1 file matching.
+  #
+  # git  - String, Optional path to the git repository of the theme to be 
installed.
+  # name - String, Optional name of the theme you want to install.
+  #        Passing name requires that the theme package already exist.
+  #
+  # Examples
+  #
+  #   rake theme:install 
git="https://github.com/jekyllbootstrap/theme-twitter.git";
+  #   rake theme:install name="cool-theme"
+  #
+  # Returns Success/failure messages.
+  desc "Install theme"
+  task :install do
+    if ENV["git"]
+      manifest = theme_from_git_url(ENV["git"])
+      name = manifest["name"]
+    else
+      name = ENV["name"].to_s.downcase
+    end
+
+    packaged_theme_path = JB::Path.build(:theme_packages, :node => name)
+    
+    abort("rake aborted!
+      => ERROR: 'name' cannot be blank") if name.empty?
+    abort("rake aborted! 
+      => ERROR: '#{packaged_theme_path}' directory not found.
+      => Installable themes can be added via git. You can find some here: 
http://github.com/jekyllbootstrap
+      => To download+install run: `rake theme:install git='[PUBLIC-CLONE-URL]'`
+      => example : rake theme:install 
git='[email protected]:jekyllbootstrap/theme-the-program.git'
+    ") unless FileTest.directory?(packaged_theme_path)
+    
+    manifest = verify_manifest(packaged_theme_path)
+    
+    # Get relative paths to packaged theme files
+    # Exclude directories as they'll be recursively created. Exclude meta-data 
files.
+    packaged_theme_files = []
+    FileUtils.cd(packaged_theme_path) {
+      Dir.glob("**/*.*") { |f| 
+        next if ( FileTest.directory?(f) || f =~ 
/^(manifest|readme|packager)/i )
+        packaged_theme_files << f 
+      }
+    }
+    
+    # Mirror each file into the framework making sure to prompt if already 
exists.
+    packaged_theme_files.each do |filename|
+      file_install_path = File.join(JB::Path.base, filename)
+      if File.exist? file_install_path and ask("#{file_install_path} already 
exists. Do you want to overwrite?", ['y', 'n']) == 'n'
+        next
+      else
+        mkdir_p File.dirname(file_install_path)
+        cp_r File.join(packaged_theme_path, filename), file_install_path
+      end
+    end
+    
+    puts "=> #{name} theme has been installed!"
+    puts "=> ---"
+    if ask("=> Want to switch themes now?", ['y', 'n']) == 'y'
+      system("rake switch_theme name='#{name}'")
+    end
+  end
+
+  # Public: Package a theme using the theme packager.
+  # The theme must be structured using valid JB API.
+  # In other words packaging is essentially the reverse of installing.
+  #
+  # name - String, Required name of the theme you want to package.
+  #        
+  # Examples
+  #
+  #   rake theme:package name="twitter"
+  #
+  # Returns Success/failure messages.
+  desc "Package theme"
+  task :package do
+    name = ENV["name"].to_s.downcase
+    theme_path = JB::Path.build(:themes, :node => name)
+    asset_path = JB::Path.build(:theme_assets, :node => name)
+
+    abort("rake aborted: name cannot be blank") if name.empty?
+    abort("rake aborted: '#{theme_path}' directory not found.") unless 
FileTest.directory?(theme_path)
+    abort("rake aborted: '#{asset_path}' directory not found.") unless 
FileTest.directory?(asset_path)
+    
+    ## Mirror theme's template directory (_includes)
+    packaged_theme_path = JB::Path.build(:themes, :root => 
JB::Path.build(:theme_packages, :node => name))
+    mkdir_p packaged_theme_path
+    cp_r theme_path, packaged_theme_path
+    
+    ## Mirror theme's asset directory
+    packaged_theme_assets_path = JB::Path.build(:theme_assets, :root => 
JB::Path.build(:theme_packages, :node => name))
+    mkdir_p packaged_theme_assets_path
+    cp_r asset_path, packaged_theme_assets_path
+
+    ## Log packager version
+    packager = {"packager" => {"version" => 
CONFIG["theme_package_version"].to_s } }
+    open(JB::Path.build(:theme_packages, :node => "#{name}/packager.yml"), 
"w") do |page|
+      page.puts packager.to_yaml
+    end
+    
+    puts "=> '#{name}' theme is packaged and available at: 
#{JB::Path.build(:theme_packages, :node => name)}"
+  end
+  
+end # end namespace :theme
+
+# Internal: Download and process a theme from a git url.
+# Notice we don't know the name of the theme until we look it up in the 
manifest.
+# So we'll have to change the folder name once we get the name.
+#
+# url - String, Required url to git repository.
+#        
+# Returns theme manifest hash
+def theme_from_git_url(url)
+  tmp_path = JB::Path.build(:theme_packages, :node => "_tmp")
+  abort("rake aborted: system call to git clone failed") if !system("git clone 
#{url} #{tmp_path}")
+  manifest = verify_manifest(tmp_path)
+  new_path = JB::Path.build(:theme_packages, :node => manifest["name"])
+  if File.exist?(new_path) && ask("=> #{new_path} theme package already 
exists. Override?", ['y', 'n']) == 'n'
+    remove_dir(tmp_path)
+    abort("rake aborted: '#{manifest["name"]}' already exists as theme 
package.")
+  end
+
+  remove_dir(new_path) if File.exist?(new_path)
+  mv(tmp_path, new_path)
+  manifest
+end
+
+# Internal: Process theme package manifest file.
+#
+# theme_path - String, Required. File path to theme package.
+#        
+# Returns theme manifest hash
+def verify_manifest(theme_path)
+  manifest_path = File.join(theme_path, "manifest.yml")
+  manifest_file = File.open( manifest_path )
+  abort("rake aborted: repo must contain valid manifest.yml") unless 
File.exist? manifest_file
+  manifest = YAML.load( manifest_file )
+  manifest_file.close
+  manifest
+end
+
+def ask(message, valid_options)
+  if valid_options
+    answer = get_stdin("#{message} #{valid_options.to_s.gsub(/"/, '').gsub(/, 
/,'/')} ") while !valid_options.include?(answer)
+  else
+    answer = get_stdin(message)
+  end
+  answer
+end
+
+def get_stdin(message)
+  print message
+  STDIN.gets.chomp
+end
+
+#Load custom rake scripts
+Dir['_rake/*.rake'].each { |r| load r }

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/d1d32b11/docs/_config.yml
----------------------------------------------------------------------
diff --git a/docs/_config.yml b/docs/_config.yml
new file mode 100644
index 0000000..de3d99a
--- /dev/null
+++ b/docs/_config.yml
@@ -0,0 +1,134 @@
+# This is the default format. 
+# For more see: http://jekyllrb.com/docs/permalinks/
+permalink: /:categories/:year/:month/:day/:title 
+
+exclude: [".rvmrc", ".rbenv-version", "README.md", "Rakefile", "changelog.md", 
"vendor", "node_modules", "scss"]
+pygments: true
+markdown: redcarpet
+encoding: utf-8
+
+# Themes are encouraged to use these universal variables 
+# so be sure to set them if your theme uses them.
+#
+title : Apache Zeppelin (incubating)
+tagline: Simplify bigdata analytics
+author :
+  name : The Apache Software Foundation
+  email : [email protected]
+  github : apache
+  twitter : ASF
+  feedburner : feedname
+
+# The production_url is only used when full-domain names are needed
+# such as sitemap.txt 
+# Most places will/should use BASE_PATH to make the urls
+#
+# If you have set a CNAME (pages.github.com) set your custom domain here.
+# Else if you are pushing to username.github.io, replace with your username.
+# Finally if you are pushing to a GitHub project page, include the project 
name at the end.
+#
+production_url : http://zeppelin.incubator.apache.org
+# All Jekyll-Bootstrap specific configurations are namespaced into this hash
+#
+JB :
+  version : 0.3.0
+
+  # All links will be namespaced by BASE_PATH if defined.
+  # Links in your website should always be prefixed with {{BASE_PATH}}
+  # however this value will be dynamically changed depending on your 
deployment situation.
+  #
+  # CNAME (http://yourcustomdomain.com)
+  #   DO NOT SET BASE_PATH 
+  #   (urls will be prefixed with "/" and work relatively)
+  #
+  # GitHub Pages (http://username.github.io)
+  #   DO NOT SET BASE_PATH 
+  #   (urls will be prefixed with "/" and work relatively)
+  #
+  # GitHub Project Pages (http://username.github.io/project-name)
+  #
+  #   A GitHub Project site exists in the `gh-pages` branch of one of your 
repositories.
+  #  REQUIRED! Set BASE_PATH to: http://username.github.io/project-name
+  #
+  # CAUTION:
+  #   - When in Localhost, your site will run from root "/" regardless of 
BASE_PATH
+  #   - Only the following values are falsy: ["", null, false]
+  #   - When setting BASE_PATH it must be a valid url.
+  #     This means always setting the protocol (http|https) or prefixing with 
"/"
+  BASE_PATH : false
+
+  # By default, the asset_path is automatically defined relative to BASE_PATH 
plus the enabled theme.
+  # ex: [BASE_PATH]/assets/themes/[THEME-NAME]
+  #
+  # Override this by defining an absolute path to assets here.
+  # ex: 
+  #   http://s3.amazonaws.com/yoursite/themes/watermelon
+  #   /assets
+  #
+  ASSET_PATH : false
+
+  # These paths are to the main pages Jekyll-Bootstrap ships with.
+  # Some JB helpers refer to these paths; change them here if needed.
+  #
+  archive_path: /archive.html
+  categories_path : /categories.html
+  tags_path : /tags.html
+  atom_path : /atom.xml
+  rss_path : /rss.xml
+
+  # Settings for comments helper
+  # Set 'provider' to the comment provider you want to use.
+  # Set 'provider' to false to turn commenting off globally.
+  #
+  comments :
+    provider : disqus
+    disqus :
+      short_name : jekyllbootstrap
+    livefyre :
+      site_id : 123
+    intensedebate :
+      account : 123abc
+    facebook :
+      appid : 123
+      num_posts: 5
+      width: 580
+      colorscheme: light
+   
+  # Settings for analytics helper
+  # Set 'provider' to the analytics provider you want to use.
+  # Set 'provider' to false to turn analytics off globally.
+  #        
+  analytics :
+    provider : google_universal
+    google_classic : 
+        tracking_id : 'UA-45176241-2'
+    google_universal : 
+        tracking_id : 'UA-45176241-5'
+        domain : 'zeppelin.incubator.apache.org'
+    getclicky :
+      site_id : 
+    mixpanel :
+        token : '_MIXPANEL_TOKEN_'
+    piwik :
+        baseURL : 'myserver.tld/piwik' # Piwik installation address (without 
protocol)
+        idsite : '1'                   # the id of the site on Piwik
+
+  # Settings for sharing helper. 
+  # Sharing is for things like tweet, plusone, like, reddit buttons etc.
+  # Set 'provider' to the sharing provider you want to use.
+  # Set 'provider' to false to turn sharing off globally.
+  #
+  sharing :
+    provider : false
+    
+  # Settings for all other include helpers can be defined by creating 
+  # a hash with key named for the given helper. ex:
+  #
+  #   pages_list :
+  #     provider : "custom"   
+  #
+  # Setting any helper's provider to 'custom' will bypass the helper code
+  # and include your custom code. Your custom file must be defined at:
+  #   ./_includes/custom/[HELPER]
+  # where [HELPER] is the name of the helper you are overriding.
+  

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/d1d32b11/docs/_includes/JB/analytics
----------------------------------------------------------------------
diff --git a/docs/_includes/JB/analytics b/docs/_includes/JB/analytics
new file mode 100644
index 0000000..48d87c2
--- /dev/null
+++ b/docs/_includes/JB/analytics
@@ -0,0 +1,18 @@
+{% if site.safe and site.JB.analytics.provider and page.JB.analytics != false 
%}
+
+{% case site.JB.analytics.provider %}
+{% when "google_classic" %}
+  {% include JB/analytics-providers/google-classic %}
+{% when "google_universal" %}
+  {% include JB/analytics-providers/google-universal %}
+{% when "getclicky" %}
+  {% include JB/analytics-providers/getclicky %}
+{% when "mixpanel" %}
+  {% include JB/analytics-providers/mixpanel %}
+{% when "piwik" %}
+  {% include JB/analytics-providers/piwik %}
+{% when "custom" %}
+  {% include custom/analytics %}
+{% endcase %}
+
+{% endif %}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/d1d32b11/docs/_includes/JB/analytics-providers/getclicky
----------------------------------------------------------------------
diff --git a/docs/_includes/JB/analytics-providers/getclicky 
b/docs/_includes/JB/analytics-providers/getclicky
new file mode 100644
index 0000000..e9462f4
--- /dev/null
+++ b/docs/_includes/JB/analytics-providers/getclicky
@@ -0,0 +1,12 @@
+<script type="text/javascript">
+var clicky_site_ids = clicky_site_ids || [];
+clicky_site_ids.push({{ site.JB.analytics.getclicky.site_id }});
+(function() {
+  var s = document.createElement('script');
+  s.type = 'text/javascript';
+  s.async = true;
+  s.src = '//static.getclicky.com/js';
+  ( document.getElementsByTagName('head')[0] || 
document.getElementsByTagName('body')[0] ).appendChild( s );
+})();
+</script>
+<noscript><p><img alt="Clicky" width="1" height="1" src="//in.getclicky.com/{{ 
site.JB.analytics.getclicky.site_id }}ns.gif" /></p></noscript>

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/d1d32b11/docs/_includes/JB/analytics-providers/google-classic
----------------------------------------------------------------------
diff --git a/docs/_includes/JB/analytics-providers/google-classic 
b/docs/_includes/JB/analytics-providers/google-classic
new file mode 100644
index 0000000..af09907
--- /dev/null
+++ b/docs/_includes/JB/analytics-providers/google-classic
@@ -0,0 +1,11 @@
+<script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', '{{ site.JB.analytics.google_classic.tracking_id 
}}']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; 
ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 
'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; 
s.parentNode.insertBefore(ga, s);
+  })();
+</script>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/d1d32b11/docs/_includes/JB/analytics-providers/google-universal
----------------------------------------------------------------------
diff --git a/docs/_includes/JB/analytics-providers/google-universal 
b/docs/_includes/JB/analytics-providers/google-universal
new file mode 100644
index 0000000..dae744b
--- /dev/null
+++ b/docs/_includes/JB/analytics-providers/google-universal
@@ -0,0 +1,11 @@
+<script type="text/javascript">
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new 
Date();a=s.createElement(o),
+  
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+  ga('create', '{{ site.JB.analytics.google_universal.tracking_id }}', '{{ 
site.JB.analytics.google_universal.domain }}');
+  ga('require', 'linkid', 'linkid.js');
+  ga('send', 'pageview');
+
+</script>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/d1d32b11/docs/_includes/JB/analytics-providers/mixpanel
----------------------------------------------------------------------
diff --git a/docs/_includes/JB/analytics-providers/mixpanel 
b/docs/_includes/JB/analytics-providers/mixpanel
new file mode 100644
index 0000000..4406eb0
--- /dev/null
+++ b/docs/_includes/JB/analytics-providers/mixpanel
@@ -0,0 +1,11 @@
+<script type="text/javascript">
+    var mpq = [];
+    mpq.push(["init", "{{ site.JB.analytics.mixpanel.token}}"]);
+    (function(){var 
b,a,e,d,c;b=document.createElement("script");b.type="text/javascript";
+    
b.async=true;b.src=(document.location.protocol==="https:"?"https:":"http:")+
+    
"//api.mixpanel.com/site_media/js/api/mixpanel.js";a=document.getElementsByTagName("script")[0];
+    a.parentNode.insertBefore(b,a);e=function(f){return function(){mpq.push(
+    
[f].concat(Array.prototype.slice.call(arguments,0)))}};d=["init","track","track_links",
+    
"track_forms","register","register_once","identify","name_tag","set_config"];for(c=0;c<
+    d.length;c++){mpq[d[c]]=e(d[c])}})();
+</script>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/d1d32b11/docs/_includes/JB/analytics-providers/piwik
----------------------------------------------------------------------
diff --git a/docs/_includes/JB/analytics-providers/piwik 
b/docs/_includes/JB/analytics-providers/piwik
new file mode 100755
index 0000000..f016ed7
--- /dev/null
+++ b/docs/_includes/JB/analytics-providers/piwik
@@ -0,0 +1,10 @@
+<script type="text/javascript">
+  var pkBaseURL = (("https:" == document.location.protocol) ? "https://{{ 
site.JB.analytics.piwik.baseURL }}/" : "http://{{ 
site.JB.analytics.piwik.baseURL }}/");
+  document.write(unescape("%3Cscript src='" + pkBaseURL + "piwik.js' 
type='text/javascript'%3E%3C/script%3E"));
+</script><script type="text/javascript">
+  try {
+    var piwikTracker = Piwik.getTracker(pkBaseURL + "piwik.php", {{ 
site.JB.analytics.piwik.idsite }});
+    piwikTracker.trackPageView();
+    piwikTracker.enableLinkTracking();
+  } catch( err ) {}
+</script><noscript><p><img src="http://{{ site.JB.analytics.piwik.baseURL 
}}/piwik.php?idsite={{ site.JB.analytics.piwik.idsite }}" style="border:0" 
alt="" /></p></noscript>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/d1d32b11/docs/_includes/JB/categories_list
----------------------------------------------------------------------
diff --git a/docs/_includes/JB/categories_list 
b/docs/_includes/JB/categories_list
new file mode 100644
index 0000000..83be2e2
--- /dev/null
+++ b/docs/_includes/JB/categories_list
@@ -0,0 +1,37 @@
+{% comment %}<!--
+The categories_list include is a listing helper for categories.
+Usage:
+  1) assign the 'categories_list' variable to a valid array of tags.
+  2) include JB/categories_list
+  example:
+    <ul>
+         {% assign categories_list = site.categories %}  
+         {% include JB/categories_list %}
+       </ul>
+  
+  Notes: 
+    Categories can be either a Hash of Category objects (hashes) or an Array 
of category-names (strings).
+    The encapsulating 'if' statement checks whether categories_list is a Hash 
or Array.
+    site.categories is a Hash while page.categories is an array.
+    
+  This helper can be seen in use at: ../_layouts/default.html
+-->{% endcomment %}
+
+{% if site.JB.categories_list.provider == "custom" %}
+  {% include custom/categories_list %}
+{% else %}
+  {% if categories_list.first[0] == null %}
+    {% for category in categories_list %} 
+       <li><a href="{{ BASE_PATH }}{{ site.JB.categories_path }}#{{ category 
}}-ref">
+               {{ category | join: "/" }} <span>{{ 
site.categories[category].size }}</span>
+       </a></li>
+    {% endfor %}
+  {% else %}
+    {% for category in categories_list %} 
+       <li><a href="{{ BASE_PATH }}{{ site.JB.categories_path }}#{{ 
category[0] }}-ref">
+               {{ category[0] | join: "/" }} <span>{{ category[1].size 
}}</span>
+       </a></li>
+    {% endfor %}
+  {% endif %}
+{% endif %}
+{% assign categories_list = nil %}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/d1d32b11/docs/_includes/JB/comments
----------------------------------------------------------------------
diff --git a/docs/_includes/JB/comments b/docs/_includes/JB/comments
new file mode 100644
index 0000000..4e9e600
--- /dev/null
+++ b/docs/_includes/JB/comments
@@ -0,0 +1,16 @@
+{% if site.JB.comments.provider and page.comments != false %}
+
+{% case site.JB.comments.provider %}
+{% when "disqus" %}
+  {% include JB/comments-providers/disqus %}
+{% when "livefyre" %}
+  {% include JB/comments-providers/livefyre %}
+{% when "intensedebate" %}
+  {% include JB/comments-providers/intensedebate %}
+{% when "facebook" %}
+  {% include JB/comments-providers/facebook %}
+{% when "custom" %}
+  {% include custom/comments %}
+{% endcase %}
+
+{% endif %}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/d1d32b11/docs/_includes/JB/comments-providers/disqus
----------------------------------------------------------------------
diff --git a/docs/_includes/JB/comments-providers/disqus 
b/docs/_includes/JB/comments-providers/disqus
new file mode 100644
index 0000000..618a7b7
--- /dev/null
+++ b/docs/_includes/JB/comments-providers/disqus
@@ -0,0 +1,14 @@
+<div id="disqus_thread"></div>
+<script type="text/javascript">
+    {% if site.safe == false %}var disqus_developer = 1;{% endif %}
+    var disqus_shortname = '{{ site.JB.comments.disqus.short_name }}'; // 
required: replace example with your forum shortname
+    {% if page.wordpress_id %}var disqus_identifier = '{{page.wordpress_id}} 
{{site.production_url}}/?p={{page.wordpress_id}}';{% endif %}
+    /* * * DON'T EDIT BELOW THIS LINE * * */
+    (function() {
+        var dsq = document.createElement('script'); dsq.type = 
'text/javascript'; dsq.async = true;
+        dsq.src = 'http://' + disqus_shortname + '.disqus.com/embed.js';
+        (document.getElementsByTagName('head')[0] || 
document.getElementsByTagName('body')[0]).appendChild(dsq);
+    })();
+</script>
+<noscript>Please enable JavaScript to view the <a 
href="http://disqus.com/?ref_noscript";>comments powered by 
Disqus.</a></noscript>
+<a href="http://disqus.com"; class="dsq-brlink">blog comments powered by <span 
class="logo-disqus">Disqus</span></a>

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/d1d32b11/docs/_includes/JB/comments-providers/facebook
----------------------------------------------------------------------
diff --git a/docs/_includes/JB/comments-providers/facebook 
b/docs/_includes/JB/comments-providers/facebook
new file mode 100644
index 0000000..6b3e5e0
--- /dev/null
+++ b/docs/_includes/JB/comments-providers/facebook
@@ -0,0 +1,9 @@
+<div id="fb-root"></div>
+<script>(function(d, s, id) {
+  var js, fjs = d.getElementsByTagName(s)[0];
+  if (d.getElementById(id)) return;
+  js = d.createElement(s); js.id = id;
+  js.src = "//connect.facebook.net/en_US/all.js#xfbml=1&appId={{ 
site.JB.comments.facebook.appid }}";
+  fjs.parentNode.insertBefore(js, fjs);
+}(document, 'script', 'facebook-jssdk'));</script>
+<div class="fb-comments" data-href="{{ site.production_url }}" 
data-num-posts="{{ site.JB.comments.facebook.num_posts }}" data-width="{{ 
site.JB.comments.facebook.width }}" data-colorscheme="{{ 
site.JB.comments.facebook.colorscheme }}"></div>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/d1d32b11/docs/_includes/JB/comments-providers/intensedebate
----------------------------------------------------------------------
diff --git a/docs/_includes/JB/comments-providers/intensedebate 
b/docs/_includes/JB/comments-providers/intensedebate
new file mode 100644
index 0000000..ab0c3c9
--- /dev/null
+++ b/docs/_includes/JB/comments-providers/intensedebate
@@ -0,0 +1,6 @@
+<script>
+var idcomments_acct = '{{ site.JB.comments.intensedebate.account }}';
+var idcomments_post_id;
+var idcomments_post_url;
+</script>
+<script type="text/javascript" 
src="http://www.intensedebate.com/js/genericLinkWrapperV2.js";></script>

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/d1d32b11/docs/_includes/JB/comments-providers/livefyre
----------------------------------------------------------------------
diff --git a/docs/_includes/JB/comments-providers/livefyre 
b/docs/_includes/JB/comments-providers/livefyre
new file mode 100644
index 0000000..704b803
--- /dev/null
+++ b/docs/_includes/JB/comments-providers/livefyre
@@ -0,0 +1,6 @@
+<script type='text/javascript' 
src='http://zor.livefyre.com/wjs/v1.0/javascripts/livefyre_init.js'></script>
+<script type='text/javascript'>
+    var fyre = LF({
+        site_id: {{ site.JB.comments.livefyre.site_id }}
+    });
+</script>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/d1d32b11/docs/_includes/JB/liquid_raw
----------------------------------------------------------------------
diff --git a/docs/_includes/JB/liquid_raw b/docs/_includes/JB/liquid_raw
new file mode 100644
index 0000000..a5c1783
--- /dev/null
+++ b/docs/_includes/JB/liquid_raw
@@ -0,0 +1,32 @@
+{% comment%}<!--
+The liquid_raw helper is a way to display raw liquid code, as opposed to 
parsing it.
+Normally you'd use Liquid's built in 'raw' tag. 
+The problem is GitHub Jekyll does not support the current Liquid release.
+GitHub Jekyll supports the deprecated 'literal' tag.
+Using one will break the other if you plan to deploy to GitHub pages.
+  see: https://github.com/mojombo/jekyll/issues/425
+
+Since I don't want to mess with Liquid versions, I'll just rewrite the way I 
+intend to give liquid examples. It's not an elegant by any means:
+
+Usage: 
+  1) Define a 'text' variable with the block of liquid code you intend to 
display.
+  2) Pass the text variable to include JB/liquid_raw
+
+  example:
+  {% capture text %}|.% for tag in tags_list %.|
+    <li><a href="|.{ site.var.tags_path }.||.{ tag[0] }.|-ref">|.{ tag[0] }.| 
<span>|.{tag[1].size}.|</span></a></li>
+  |.% endfor %.|
+
+  |.% assign tags_list = null %.|{% endcapture %}    
+  {% include JB/liquid_raw %}
+  
+  As seen here, you must use "|." and ".|" as opening and closing brackets.
+-->{% endcomment%}
+
+{% if site.JB.liquid_raw.provider == "custom" %}
+  {% include custom/liquid_raw %}
+{% else %}
+  <pre><code>{{text | replace:"|.", "&#123;" | replace:".|", "&#125;" | 
replace:">", "&gt;" | replace:"<", "&lt;" }}</code></pre>
+{% endif %}
+{% assign text = nil %}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/d1d32b11/docs/_includes/JB/pages_list
----------------------------------------------------------------------
diff --git a/docs/_includes/JB/pages_list b/docs/_includes/JB/pages_list
new file mode 100644
index 0000000..42f827a
--- /dev/null
+++ b/docs/_includes/JB/pages_list
@@ -0,0 +1,39 @@
+{% comment %}<!--
+The pages_list include is a listing helper.
+Usage:
+  1) assign the 'pages_list' variable to a valid array of pages or posts.
+  2) include JB/pages_list
+  example:
+    <ul>
+         {% assign pages_list = site.pages %}  
+         {% include JB/pages_list %}
+       </ul>
+       
+  Grouping: (optional): 
+       assign the 'group' variable to constrain the list to only pages/posts
+       in the given group. Note you must define the group manually in the 
page/post
+       meta-data to use this feature.
+       Grouping is mainly helpful for non-post pages.
+       If you want to group posts, it's easier/better to tag them, then pass 
the tagged posts array.
+       i.e. site.tags.cool_tag (this returns an array of posts tagged: 
cool_tag)
+       
+  This helper can be seen in use at: ../_layouts/default.html
+-->{% endcomment %}
+
+{% if site.JB.pages_list.provider == "custom" %}
+  {% include custom/pages_list %}
+{% else %}
+  {% for node in pages_list %}
+    {% if node.title != null %}
+      {% if group == null or group == node.group %}
+       {% if page.url == node.url %}
+       <li class="active"><a href="{{ BASE_PATH }}{{node.url}}" 
class="active">{{node.title}}</a></li>
+       {% else %}
+       <li><a href="{{ BASE_PATH }}{{node.url}}">{{node.title}}</a></li>
+       {% endif %}
+      {% endif %}
+    {% endif %}
+  {% endfor %}
+{% endif %}
+{% assign pages_list = nil %}
+{% assign group = nil %}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/d1d32b11/docs/_includes/JB/posts_collate
----------------------------------------------------------------------
diff --git a/docs/_includes/JB/posts_collate b/docs/_includes/JB/posts_collate
new file mode 100644
index 0000000..f612ade
--- /dev/null
+++ b/docs/_includes/JB/posts_collate
@@ -0,0 +1,55 @@
+{% comment %}<!--
+Collate_posts helper. Collated posts by year and month.
+Usage:
+  1) assign the 'posts_collate' variable to a valid array of posts.
+  2) include JB/posts_collate
+  example:
+    {% assign posts_collate = site.posts %}
+    {% include JB/posts_collate %}
+
+  Ordering:
+    Posts are displayed in reverse chronological order.
+    For normal chronological order:
+      1) Change the for loop to this:
+        => 'for post in site.posts reversed'
+      2) Next make sure to change 'post.previous.date' to:
+        => 'post.next.date'
+        
+-->{% endcomment %}
+
+{% if site.JB.posts_collate.provider == "custom" %}
+  {% include custom/posts_collate %}
+{% else %}
+  {% for post in posts_collate  %}
+    {% capture this_year %}{{ post.date | date: "%Y" }}{% endcapture %}
+    {% capture this_month %}{{ post.date | date: "%B" }}{% endcapture %}
+    {% capture next_year %}{{ post.previous.date | date: "%Y" }}{% endcapture 
%}
+    {% capture next_month %}{{ post.previous.date | date: "%B" }}{% endcapture 
%}
+  
+    {% if forloop.first %}
+      <h2>{{this_year}}</h2>
+      <h3>{{this_month}}</h3>
+      <ul>
+    {% endif %}
+  
+    <li><span>{{ post.date | date: "%B %e, %Y" }}</span> &raquo; <a href="{{ 
BASE_PATH }}{{ post.url }}">{{ post.title }}</a></li>
+  
+    {% if forloop.last %}
+      </ul>
+    {% else %}
+      {% if this_year != next_year %}
+        </ul>
+        <h2>{{next_year}}</h2>
+        <h3>{{next_month}}</h3>
+        <ul>
+      {% else %}    
+        {% if this_month != next_month %}
+          </ul>
+          <h3>{{next_month}}</h3>
+          <ul>
+        {% endif %}
+      {% endif %}
+    {% endif %}
+  {% endfor %}
+{% endif %}
+{% assign posts_collate = nil %}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/d1d32b11/docs/_includes/JB/setup
----------------------------------------------------------------------
diff --git a/docs/_includes/JB/setup b/docs/_includes/JB/setup
new file mode 100644
index 0000000..efcd84b
--- /dev/null
+++ b/docs/_includes/JB/setup
@@ -0,0 +1,22 @@
+{% capture jbcache %}
+  <!--
+  - Dynamically set liquid variables for working with URLs/paths
+  -->
+  {% if site.JB.setup.provider == "custom" %}
+    {% include custom/setup %}
+  {% else %}
+    {% if site.safe and site.JB.BASE_PATH and site.JB.BASE_PATH != '' %}
+      {% assign BASE_PATH = site.JB.BASE_PATH %}
+      {% assign HOME_PATH = site.JB.BASE_PATH %}
+    {% else %}
+      {% assign BASE_PATH = nil %}
+      {% assign HOME_PATH = "/" %}
+    {% endif %}
+
+    {% if site.JB.ASSET_PATH %}
+      {% assign ASSET_PATH = site.JB.ASSET_PATH %}
+    {% else %}
+      {% capture ASSET_PATH %}{{ BASE_PATH }}/assets/themes/{{ page.theme.name 
}}{% endcapture %}
+    {% endif %}  
+  {% endif %}
+{% endcapture %}{% assign jbcache = nil %}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/d1d32b11/docs/_includes/JB/sharing
----------------------------------------------------------------------
diff --git a/docs/_includes/JB/sharing b/docs/_includes/JB/sharing
new file mode 100644
index 0000000..f5b1151
--- /dev/null
+++ b/docs/_includes/JB/sharing
@@ -0,0 +1,8 @@
+{% if site.safe and site.JB.sharing.provider and page.JB.sharing != false %}
+
+{% case site.JB.sharing.provider %}
+{% when "custom" %}
+  {% include custom/sharing %}
+{% endcase %}
+
+{% endif %}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/d1d32b11/docs/_includes/JB/tags_list
----------------------------------------------------------------------
diff --git a/docs/_includes/JB/tags_list b/docs/_includes/JB/tags_list
new file mode 100644
index 0000000..8eb62a7
--- /dev/null
+++ b/docs/_includes/JB/tags_list
@@ -0,0 +1,33 @@
+{% comment %}<!--
+The tags_list include is a listing helper for tags.
+Usage:
+  1) assign the 'tags_list' variable to a valid array of tags.
+  2) include JB/tags_list
+  example:
+    <ul>
+         {% assign tags_list = site.tags %}  
+         {% include JB/tags_list %}
+       </ul>
+  
+  Notes: 
+    Tags can be either a Hash of tag objects (hashes) or an Array of tag-names 
(strings).
+    The encapsulating 'if' statement checks whether tags_list is a Hash or 
Array.
+    site.tags is a Hash while page.tags is an array.
+    
+  This helper can be seen in use at: ../_layouts/default.html
+-->{% endcomment %}
+
+{% if site.JB.tags_list.provider == "custom" %}
+  {% include custom/tags_list %}
+{% else %}
+  {% if tags_list.first[0] == null %}
+    {% for tag in tags_list %} 
+       <li><a href="{{ BASE_PATH }}{{ site.JB.tags_path }}#{{ tag }}-ref">{{ 
tag }} <span>{{ site.tags[tag].size }}</span></a></li>
+    {% endfor %}
+  {% else %}
+    {% for tag in tags_list %} 
+       <li><a href="{{ BASE_PATH }}{{ site.JB.tags_path }}#{{ tag[0] 
}}-ref">{{ tag[0] }} <span>{{ tag[1].size }}</span></a></li>
+    {% endfor %}
+  {% endif %}
+{% endif %}
+{% assign tags_list = nil %}

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/d1d32b11/docs/_includes/themes/zeppelin/_jumbotron.html
----------------------------------------------------------------------
diff --git a/docs/_includes/themes/zeppelin/_jumbotron.html 
b/docs/_includes/themes/zeppelin/_jumbotron.html
new file mode 100644
index 0000000..0f43f0b
--- /dev/null
+++ b/docs/_includes/themes/zeppelin/_jumbotron.html
@@ -0,0 +1,50 @@
+
+{% if page.url == '/index.html' %}
+    <div class="jumbotron">
+      <div class="container">
+        <div class="row">
+          <div class="col-md-5">
+            <h1>Zeppelin</h1>
+            <p>Simplyfying data analytics</p>
+          </div>
+          <div class="col-md-6 col-md-offset-1">
+            <div id="myCarousel" class="carousel slide" data-ride="carousel">
+              <!-- Indicators -->
+              <ol class="carousel-indicators">
+                <li data-target="#myCarousel" data-slide-to="0" 
class="active"></li>
+                <li data-target="#myCarousel" data-slide-to="1"></li>
+              </ol>
+              <div class="carousel-inner">
+                <div class="item active">
+                  <div class="container">
+                    <div class="carousel-caption">
+                      <h3></h3>
+                      <a href="./screenshots.html"><img class="thumbnail" 
src="assets/themes/zeppelin/img/screenshots/notebook.png" /></a>
+                      <p></p>
+                    </div>
+                  </div>
+                </div>
+                <div class="item">
+                  <div class="container">
+                    <div class="carousel-caption">
+                      <a href="./screenshots.html"><img class="thumbnail" 
src="assets/themes/zeppelin/img/screenshots/sparksql.png" /></a>
+                    </div>
+                  </div>
+                </div>
+              </div>
+              <a class="left carousel-control" href="#myCarousel" 
data-slide="prev"><span class="glyphicon glyphicon-chevron-left"></span></a>
+              <a class="right carousel-control" href="#myCarousel" 
data-slide="next"><span class="glyphicon glyphicon-chevron-right"></span></a>
+            </div>
+
+          </div>
+        </div>
+      </div>
+    </div>
+{% else %}
+    <div class="jumbotron small">
+      <div class="container">
+        <div class="title">{{page.title}}</div><div 
class="subtitle">{{page.subtitle}}</div>
+       <p class="description">{{page.description}}</p>
+      </div>
+    </div>
+{% endif %}

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/d1d32b11/docs/_includes/themes/zeppelin/_navigation.html
----------------------------------------------------------------------
diff --git a/docs/_includes/themes/zeppelin/_navigation.html 
b/docs/_includes/themes/zeppelin/_navigation.html
new file mode 100644
index 0000000..ca53595
--- /dev/null
+++ b/docs/_includes/themes/zeppelin/_navigation.html
@@ -0,0 +1,52 @@
+    <div class="navbar navbar-inverse navbar-fixed-top" role="navigation">
+      <div class="container">
+        <div class="navbar-header">
+          <button type="button" class="navbar-toggle" data-toggle="collapse" 
data-target=".navbar-collapse">
+            <span class="sr-only">Toggle navigation</span>
+            <span class="icon-bar"></span>
+            <span class="icon-bar"></span>
+            <span class="icon-bar"></span>
+          </button>
+          <a class="navbar-brand" href="/">
+            <img src="/assets/themes/zeppelin/img/zeppelin_logo.png" 
width="50" alt="I'm zeppelin">
+            Apache Zeppelin <small>(incubating)</small>
+          </a>
+        </div>
+        <nav class="navbar-collapse collapse" role="navigation">
+          <ul class="nav navbar-nav">
+            {% assign pages_list = site.pages %}
+            {% assign group = 'nav-left' %}
+            {% include JB/pages_list %}
+          </ul>
+          <ul class="nav navbar-nav navbar-right">
+            {% assign pages_list = site.pages %}
+            {% assign group = 'nav-right' %}
+            {% include JB/pages_list %}
+            <li><a 
href="https://github.com/apache/incubator-zeppelin";>GitHub</a></li>
+            <li id="apache">
+              <a href="#" data-toggle="dropdown" 
class="dropdown-toggle">Apache<b class="caret"></b></a>
+               <ul class="dropdown-menu">
+                <li><a 
href="http://www.apache.org/foundation/how-it-works.html";>Apache Software 
Foundation</a></li>
+                <li><a href="http://www.apache.org/licenses/";>Apache 
License</a></li>
+                <li><a 
href="http://www.apache.org/foundation/sponsorship.html";>Sponsorship</a></li>
+                <li><a 
href="http://www.apache.org/foundation/thanks.html";>Thanks</a></li>
+            </ul>
+            </li>
+          </ul>
+        </nav><!--/.navbar-collapse -->
+      </div>
+    </div>
+
+{% if page.title == "Zeppelin" %}
+<div class="jumbotron">
+  <div class="container">
+    <h1>Apache Zeppelin <small>(incubating)</small></h1>
+    <p>A web-based notebook that enables interactive data analytics. <br/>
+      You can make beautiful data-driven, interactive and collaborative 
documents with SQL, Scala and more.
+    </p>
+    <p><a href="http://youtu.be/_PQbVH_aO5E"; target="_zeppelinVideo" 
class="btn btn-primary btn-lg bigFingerButton" role="button">Watch the video</a>
+
+       <a href="./download.html" class="btn btn-primary btn-lg 
bigFingerButton" role="button">Get Zeppelin</a></p>
+  </div>
+</div>
+{% endif %}

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/d1d32b11/docs/_includes/themes/zeppelin/default.html
----------------------------------------------------------------------
diff --git a/docs/_includes/themes/zeppelin/default.html 
b/docs/_includes/themes/zeppelin/default.html
new file mode 100644
index 0000000..50e9710
--- /dev/null
+++ b/docs/_includes/themes/zeppelin/default.html
@@ -0,0 +1,51 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="utf-8">
+    <title>{{ page.title }}</title>
+    {% if page.description %}<meta name="description" content="{{ 
page.description }}">{% endif %}
+    <meta name="author" content="{{ site.author.name }}">
+
+    <!-- Enable responsive viewport -->
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+    <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
+    <!--[if lt IE 9]>
+      <script 
src="http://html5shim.googlecode.com/svn/trunk/html5.js";></script>
+    <![endif]-->
+
+    <!-- Le styles -->
+    <link href="{{ ASSET_PATH }}/bootstrap/css/bootstrap.css" rel="stylesheet">
+    <link href="{{ ASSET_PATH }}/css/style.css?body=1" rel="stylesheet" 
type="text/css">
+    <link href="{{ ASSET_PATH }}/css/syntax.css" rel="stylesheet"  
type="text/css" media="screen" /> 
+    <!-- Le fav and touch icons -->
+    <!-- Update these with your own images
+    <link rel="shortcut icon" href="images/favicon.ico">
+    <link rel="apple-touch-icon" href="images/apple-touch-icon.png">
+    <link rel="apple-touch-icon" sizes="72x72" 
href="images/apple-touch-icon-72x72.png">
+    <link rel="apple-touch-icon" sizes="114x114" 
href="images/apple-touch-icon-114x114.png">
+  -->
+
+    <!-- atom & rss feed -->
+    <link href="{{ BASE_PATH }}{{ site.JB.atom_path }}" 
type="application/atom+xml" rel="alternate" title="Sitewide ATOM Feed">
+    <link href="{{ BASE_PATH }}{{ site.JB.rss_path }}" 
type="application/rss+xml" rel="alternate" title="Sitewide RSS Feed">
+  </head>
+
+  <body>
+    
+    {% include themes/zeppelin/_navigation.html %}
+
+    <div class="container">
+      {{ content }}
+      <hr>
+      <footer>
+        <!-- <p>&copy; {{ site.time | date: '%Y' }} {{ site.author.name 
}}</p>-->
+      </footer>
+    </div>
+
+    {% include JB/analytics %}
+    <script src="https://code.jquery.com/jquery-1.10.2.min.js";></script>
+    
+    <script src="{{ ASSET_PATH }}/bootstrap/js/bootstrap.min.js"></script>
+  </body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/d1d32b11/docs/_includes/themes/zeppelin/page.html
----------------------------------------------------------------------
diff --git a/docs/_includes/themes/zeppelin/page.html 
b/docs/_includes/themes/zeppelin/page.html
new file mode 100644
index 0000000..1a5f942
--- /dev/null
+++ b/docs/_includes/themes/zeppelin/page.html
@@ -0,0 +1,10 @@
+<!--<div class="hero-unit {{ page.title | lowercase }}">
+  <h1>{% if page.tagline %} <small>{{ page.tagline }}</small>{% endif %}</h1>
+</div>
+-->
+
+<div class="row">
+  <div class="col-md-12">
+    {{ content }}
+  </div>
+</div>

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/d1d32b11/docs/_includes/themes/zeppelin/post.html
----------------------------------------------------------------------
diff --git a/docs/_includes/themes/zeppelin/post.html 
b/docs/_includes/themes/zeppelin/post.html
new file mode 100644
index 0000000..2774711
--- /dev/null
+++ b/docs/_includes/themes/zeppelin/post.html
@@ -0,0 +1,49 @@
+<div class="page-header">
+  <h1>{{ page.title }} {% if page.tagline %}<small>{{page.tagline}}</small>{% 
endif %}</h1>
+</div>
+
+<div class="row-fluid post-full">
+  <div class="span12">
+    <div class="date">
+      <span>{{ page.date | date_to_long_string }}</span>
+    </div>
+    <div class="content">
+      {{ content }}
+    </div>
+
+  {% unless page.categories == empty %}
+    <ul class="tag_box inline">
+      <li><i class="icon-folder-open"></i></li>
+      {% assign categories_list = page.categories %}
+      {% include JB/categories_list %}
+    </ul>
+  {% endunless %}  
+
+  {% unless page.tags == empty %}
+    <ul class="tag_box inline">
+      <li><i class="icon-tags"></i></li>
+      {% assign tags_list = page.tags %}
+      {% include JB/tags_list %}
+    </ul>
+  {% endunless %}  
+
+    <hr>
+    <div class="pagination">
+      <ul>
+      {% if page.previous %}
+        <li class="prev"><a href="{{ BASE_PATH }}{{ page.previous.url }}" 
title="{{ page.previous.title }}">&larr; Previous</a></li>
+      {% else %}
+        <li class="prev disabled"><a>&larr; Previous</a></li>
+      {% endif %}
+        <li><a href="{{ BASE_PATH }}{{ site.JB.archive_path 
}}">Archive</a></li>
+      {% if page.next %}
+        <li class="next"><a href="{{ BASE_PATH }}{{ page.next.url }}" 
title="{{ page.next.title }}">Next &rarr;</a></li>
+      {% else %}
+        <li class="next disabled"><a>Next &rarr;</a>
+      {% endif %}
+      </ul>
+    </div>
+    <hr>
+    {% include JB/comments %}
+  </div>
+</div>

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/d1d32b11/docs/_includes/themes/zeppelin/settings.yml
----------------------------------------------------------------------
diff --git a/docs/_includes/themes/zeppelin/settings.yml 
b/docs/_includes/themes/zeppelin/settings.yml
new file mode 100644
index 0000000..8802244
--- /dev/null
+++ b/docs/_includes/themes/zeppelin/settings.yml
@@ -0,0 +1,2 @@
+theme :
+  name : zeppelin
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/d1d32b11/docs/_layouts/default.html
----------------------------------------------------------------------
diff --git a/docs/_layouts/default.html b/docs/_layouts/default.html
new file mode 100644
index 0000000..f405624
--- /dev/null
+++ b/docs/_layouts/default.html
@@ -0,0 +1,6 @@
+---
+theme :
+ name : zeppelin
+---
+{% include JB/setup %}
+{% include themes/zeppelin/default.html %}

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/d1d32b11/docs/_layouts/page.html
----------------------------------------------------------------------
diff --git a/docs/_layouts/page.html b/docs/_layouts/page.html
new file mode 100644
index 0000000..0687dca
--- /dev/null
+++ b/docs/_layouts/page.html
@@ -0,0 +1,5 @@
+---
+layout: default
+---
+{% include JB/setup %}
+{% include themes/zeppelin/page.html %}

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/d1d32b11/docs/_layouts/post.html
----------------------------------------------------------------------
diff --git a/docs/_layouts/post.html b/docs/_layouts/post.html
new file mode 100644
index 0000000..178bb88
--- /dev/null
+++ b/docs/_layouts/post.html
@@ -0,0 +1,5 @@
+---
+layout: default
+---
+{% include JB/setup %}
+{% include themes/zeppelin/post.html %}

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/d1d32b11/docs/_plugins/debug.rb
----------------------------------------------------------------------
diff --git a/docs/_plugins/debug.rb b/docs/_plugins/debug.rb
new file mode 100644
index 0000000..e1dde39
--- /dev/null
+++ b/docs/_plugins/debug.rb
@@ -0,0 +1,38 @@
+# A simple way to inspect liquid template variables.
+# Usage:
+#  Can be used anywhere liquid syntax is parsed (templates, includes, 
posts/pages)
+#  {{ site | debug }}
+#  {{ site.posts | debug }}
+#
+require 'pp'
+module Jekyll
+  # Need to overwrite the inspect method here because the original
+  # uses < > to encapsulate the psuedo post/page objects in which case
+  # the output is taken for HTML tags and hidden from view.
+  #
+  class Post
+    def inspect
+      "#Jekyll:Post @id=#{self.id.inspect}"
+    end
+  end
+  
+  class Page
+    def inspect
+      "#Jekyll:Page @name=#{self.name.inspect}"
+    end
+  end
+  
+end # Jekyll
+  
+module Jekyll
+  module DebugFilter
+    
+    def debug(obj, stdout=false)
+      puts obj.pretty_inspect if stdout
+      "<pre>#{obj.class}\n#{obj.pretty_inspect}</pre>"
+    end
+
+  end # DebugFilter
+end # Jekyll
+
+Liquid::Template.register_filter(Jekyll::DebugFilter)
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/d1d32b11/docs/assets/bootstrap-3.0.2-dist.zip
----------------------------------------------------------------------
diff --git a/docs/assets/bootstrap-3.0.2-dist.zip 
b/docs/assets/bootstrap-3.0.2-dist.zip
new file mode 100644
index 0000000..a935f7f
Binary files /dev/null and b/docs/assets/bootstrap-3.0.2-dist.zip differ

Reply via email to