ZEPPELIN-412 Documentation based on Zeppelin version (website) Together with #430, it addresses https://issues.apache.org/jira/browse/ZEPPELIN-412
* gh-pages branch will serve document version independent part of the website. * per version documentation will be served by 'docs' directory in main source tree. Following is screenshot of website from this PR.  Author: Lee moon soo <[email protected]> Closes #431 from Leemoonsoo/gh-pages-ZEPPELIN-412 and squashes the following commits: cd6dfe1 [Lee moon soo] ZEPPELIN-412 zeppelin website Project: http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/commit/71db6d57 Tree: http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/tree/71db6d57 Diff: http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/diff/71db6d57 Branch: refs/heads/gh-pages Commit: 71db6d57e711ba1eeca01422d2c00f240294ba29 Parents: 2292dfa Author: Lee moon soo <[email protected]> Authored: Sat Nov 14 20:23:56 2015 +0900 Committer: Lee moon soo <[email protected]> Committed: Wed Nov 18 09:10:16 2015 +0900 ---------------------------------------------------------------------- 404.html | 1 + Gemfile | 17 + Gemfile.lock | 61 + README.md | 37 +- Rakefile | 310 + _config.yml | 134 + _includes/JB/analytics | 18 + _includes/JB/analytics-providers/getclicky | 12 + _includes/JB/analytics-providers/google-classic | 11 + .../JB/analytics-providers/google-universal | 11 + _includes/JB/analytics-providers/mixpanel | 11 + _includes/JB/analytics-providers/piwik | 10 + _includes/JB/categories_list | 37 + _includes/JB/comments | 16 + _includes/JB/comments-providers/disqus | 14 + _includes/JB/comments-providers/facebook | 9 + _includes/JB/comments-providers/intensedebate | 6 + _includes/JB/comments-providers/livefyre | 6 + _includes/JB/liquid_raw | 32 + _includes/JB/pages_list | 39 + _includes/JB/posts_collate | 55 + _includes/JB/setup | 22 + _includes/JB/sharing | 8 + _includes/JB/tags_list | 33 + _includes/themes/zeppelin/_jumbotron.html | 50 + _includes/themes/zeppelin/_navigation.html | 68 + _includes/themes/zeppelin/default.html | 52 + _includes/themes/zeppelin/page.html | 10 + _includes/themes/zeppelin/post.html | 49 + _includes/themes/zeppelin/settings.yml | 2 + _layouts/default.html | 6 + _layouts/page.html | 5 + _layouts/post.html | 5 + _plugins/debug.rb | 38 + .../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 + assets/themes/zeppelin/css/style.css | 371 + assets/themes/zeppelin/css/syntax.css | 60 + assets/themes/zeppelin/img/body-bg.jpg | Bin 0 -> 3188 bytes assets/themes/zeppelin/img/graph1.png | Bin 0 -> 19462 bytes assets/themes/zeppelin/img/graph2.png | Bin 0 -> 22596 bytes assets/themes/zeppelin/img/header-bg.jpg | Bin 0 -> 10442 bytes assets/themes/zeppelin/img/highlight-bg.jpg | Bin 0 -> 34222 bytes assets/themes/zeppelin/img/interpreter.png | Bin 0 -> 36035 bytes 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 assets/themes/zeppelin/img/sidebar-bg.jpg | Bin 0 -> 3200 bytes assets/themes/zeppelin/img/spark_logo.jpg | Bin 0 -> 32200 bytes assets/themes/zeppelin/img/zeppelin_logo.png | Bin 0 -> 16393 bytes atom.xml | 28 + community.md | 33 + doap.rdf | 59 + download.md | 87 + index.md | 128 + robot.txt | 14 + rss.xml | 28 + rsync.sh | 1 + screenshots.md | 45 + sitemap.txt | 8 + 100 files changed, 11864 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/71db6d57/404.html ---------------------------------------------------------------------- diff --git a/404.html b/404.html new file mode 100644 index 0000000..6904bcd --- /dev/null +++ b/404.html @@ -0,0 +1 @@ +Sorry this page does not exist =( http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/71db6d57/Gemfile ---------------------------------------------------------------------- diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000..655775a --- /dev/null +++ b/Gemfile @@ -0,0 +1,17 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You 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. +# +source 'https://rubygems.org' +gem 'github-pages' http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/71db6d57/Gemfile.lock ---------------------------------------------------------------------- diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 0000000..170579e --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,61 @@ +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 + +BUNDLED WITH + 1.10.4 http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/71db6d57/README.md ---------------------------------------------------------------------- diff --git a/README.md b/README.md index 815b653..1e7a1aa 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,38 @@ ## Zeppelin project website -After [ZEPPELIN-279](https://issues.apache.org/jira/browse/ZEPPELIN-279) it was moved to master branch, under https://github.com/apache/incubator-zeppelin/tree/master/docs \ No newline at end of file +This readme will walk you through building the Zeppelin website + + +## Build website +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"* + + +## Run website + + bundle exec jekyll serve --watch + + +## Deploy to ASF svnpubsub infra (commiters only) + 1. generate static website in `./_site` + ``` + bundle exec jekyll build --safe + ``` + + 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``` + +## Adding a new page + + rake page name="new-page.md" http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/71db6d57/Rakefile ---------------------------------------------------------------------- diff --git a/Rakefile b/Rakefile new file mode 100644 index 0000000..176c94b --- /dev/null +++ b/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/71db6d57/_config.yml ---------------------------------------------------------------------- diff --git a/_config.yml b/_config.yml new file mode 100644 index 0000000..ee0e727 --- /dev/null +++ b/_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/71db6d57/_includes/JB/analytics ---------------------------------------------------------------------- diff --git a/_includes/JB/analytics b/_includes/JB/analytics new file mode 100644 index 0000000..48d87c2 --- /dev/null +++ b/_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/71db6d57/_includes/JB/analytics-providers/getclicky ---------------------------------------------------------------------- diff --git a/_includes/JB/analytics-providers/getclicky b/_includes/JB/analytics-providers/getclicky new file mode 100644 index 0000000..e9462f4 --- /dev/null +++ b/_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/71db6d57/_includes/JB/analytics-providers/google-classic ---------------------------------------------------------------------- diff --git a/_includes/JB/analytics-providers/google-classic b/_includes/JB/analytics-providers/google-classic new file mode 100644 index 0000000..af09907 --- /dev/null +++ b/_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/71db6d57/_includes/JB/analytics-providers/google-universal ---------------------------------------------------------------------- diff --git a/_includes/JB/analytics-providers/google-universal b/_includes/JB/analytics-providers/google-universal new file mode 100644 index 0000000..dae744b --- /dev/null +++ b/_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/71db6d57/_includes/JB/analytics-providers/mixpanel ---------------------------------------------------------------------- diff --git a/_includes/JB/analytics-providers/mixpanel b/_includes/JB/analytics-providers/mixpanel new file mode 100644 index 0000000..4406eb0 --- /dev/null +++ b/_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/71db6d57/_includes/JB/analytics-providers/piwik ---------------------------------------------------------------------- diff --git a/_includes/JB/analytics-providers/piwik b/_includes/JB/analytics-providers/piwik new file mode 100755 index 0000000..f016ed7 --- /dev/null +++ b/_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/71db6d57/_includes/JB/categories_list ---------------------------------------------------------------------- diff --git a/_includes/JB/categories_list b/_includes/JB/categories_list new file mode 100644 index 0000000..83be2e2 --- /dev/null +++ b/_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/71db6d57/_includes/JB/comments ---------------------------------------------------------------------- diff --git a/_includes/JB/comments b/_includes/JB/comments new file mode 100644 index 0000000..4e9e600 --- /dev/null +++ b/_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/71db6d57/_includes/JB/comments-providers/disqus ---------------------------------------------------------------------- diff --git a/_includes/JB/comments-providers/disqus b/_includes/JB/comments-providers/disqus new file mode 100644 index 0000000..618a7b7 --- /dev/null +++ b/_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/71db6d57/_includes/JB/comments-providers/facebook ---------------------------------------------------------------------- diff --git a/_includes/JB/comments-providers/facebook b/_includes/JB/comments-providers/facebook new file mode 100644 index 0000000..6b3e5e0 --- /dev/null +++ b/_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/71db6d57/_includes/JB/comments-providers/intensedebate ---------------------------------------------------------------------- diff --git a/_includes/JB/comments-providers/intensedebate b/_includes/JB/comments-providers/intensedebate new file mode 100644 index 0000000..ab0c3c9 --- /dev/null +++ b/_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/71db6d57/_includes/JB/comments-providers/livefyre ---------------------------------------------------------------------- diff --git a/_includes/JB/comments-providers/livefyre b/_includes/JB/comments-providers/livefyre new file mode 100644 index 0000000..704b803 --- /dev/null +++ b/_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/71db6d57/_includes/JB/liquid_raw ---------------------------------------------------------------------- diff --git a/_includes/JB/liquid_raw b/_includes/JB/liquid_raw new file mode 100644 index 0000000..a5c1783 --- /dev/null +++ b/_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:"|.", "{" | replace:".|", "}" | replace:">", ">" | replace:"<", "<" }}</code></pre> +{% endif %} +{% assign text = nil %} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/71db6d57/_includes/JB/pages_list ---------------------------------------------------------------------- diff --git a/_includes/JB/pages_list b/_includes/JB/pages_list new file mode 100644 index 0000000..42f827a --- /dev/null +++ b/_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/71db6d57/_includes/JB/posts_collate ---------------------------------------------------------------------- diff --git a/_includes/JB/posts_collate b/_includes/JB/posts_collate new file mode 100644 index 0000000..f612ade --- /dev/null +++ b/_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> » <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/71db6d57/_includes/JB/setup ---------------------------------------------------------------------- diff --git a/_includes/JB/setup b/_includes/JB/setup new file mode 100644 index 0000000..efcd84b --- /dev/null +++ b/_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/71db6d57/_includes/JB/sharing ---------------------------------------------------------------------- diff --git a/_includes/JB/sharing b/_includes/JB/sharing new file mode 100644 index 0000000..f5b1151 --- /dev/null +++ b/_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/71db6d57/_includes/JB/tags_list ---------------------------------------------------------------------- diff --git a/_includes/JB/tags_list b/_includes/JB/tags_list new file mode 100644 index 0000000..8eb62a7 --- /dev/null +++ b/_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/71db6d57/_includes/themes/zeppelin/_jumbotron.html ---------------------------------------------------------------------- diff --git a/_includes/themes/zeppelin/_jumbotron.html b/_includes/themes/zeppelin/_jumbotron.html new file mode 100644 index 0000000..0f43f0b --- /dev/null +++ b/_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/71db6d57/_includes/themes/zeppelin/_navigation.html ---------------------------------------------------------------------- diff --git a/_includes/themes/zeppelin/_navigation.html b/_includes/themes/zeppelin/_navigation.html new file mode 100644 index 0000000..6aa4c09 --- /dev/null +++ b/_includes/themes/zeppelin/_navigation.html @@ -0,0 +1,68 @@ + <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 %} + + <!-- Docs --> + <li id="docs"> + <a href="#" data-toggle="dropdown" class="dropdown-toggle">Docs<b class="caret"></b></a> + <ul class="dropdown-menu"> + <li><span><b>Release</b><span></li> + <li><a href="docs/0.5.5-incubating">0.5.5-incubating</a></li> + <li><a href="docs/0.5.0-incubating">0.5.0-incubating</a></li> + <li role="separator" class="divider"></li> + <li><span><b>Snapshot</b> (development)<span></li> + <li><a href="docs/0.6.0-incubating-SNAPSHOT">0.6.0-incubating-SNAPSHOT</a></li> + </ul> + </li> + + <li><a href="https://github.com/apache/incubator-zeppelin">GitHub</a></li> + + <!-- Apache --> + <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/71db6d57/_includes/themes/zeppelin/default.html ---------------------------------------------------------------------- diff --git a/_includes/themes/zeppelin/default.html b/_includes/themes/zeppelin/default.html new file mode 100644 index 0000000..29c2be2 --- /dev/null +++ b/_includes/themes/zeppelin/default.html @@ -0,0 +1,52 @@ +<!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"> + --> + + <!-- Js --> + <script src="https://code.jquery.com/jquery-1.10.2.min.js"></script> + <script src="{{ ASSET_PATH }}/bootstrap/js/bootstrap.min.js"></script> + + <!-- 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>© {{ site.time | date: '%Y' }} {{ site.author.name }}</p>--> + </footer> + </div> + + {% include JB/analytics %} + </body> +</html> http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/71db6d57/_includes/themes/zeppelin/page.html ---------------------------------------------------------------------- diff --git a/_includes/themes/zeppelin/page.html b/_includes/themes/zeppelin/page.html new file mode 100644 index 0000000..1a5f942 --- /dev/null +++ b/_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/71db6d57/_includes/themes/zeppelin/post.html ---------------------------------------------------------------------- diff --git a/_includes/themes/zeppelin/post.html b/_includes/themes/zeppelin/post.html new file mode 100644 index 0000000..2774711 --- /dev/null +++ b/_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 }}">← Previous</a></li> + {% else %} + <li class="prev disabled"><a>← 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 →</a></li> + {% else %} + <li class="next disabled"><a>Next →</a> + {% endif %} + </ul> + </div> + <hr> + {% include JB/comments %} + </div> +</div> http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/71db6d57/_includes/themes/zeppelin/settings.yml ---------------------------------------------------------------------- diff --git a/_includes/themes/zeppelin/settings.yml b/_includes/themes/zeppelin/settings.yml new file mode 100644 index 0000000..8802244 --- /dev/null +++ b/_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/71db6d57/_layouts/default.html ---------------------------------------------------------------------- diff --git a/_layouts/default.html b/_layouts/default.html new file mode 100644 index 0000000..f405624 --- /dev/null +++ b/_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/71db6d57/_layouts/page.html ---------------------------------------------------------------------- diff --git a/_layouts/page.html b/_layouts/page.html new file mode 100644 index 0000000..0687dca --- /dev/null +++ b/_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/71db6d57/_layouts/post.html ---------------------------------------------------------------------- diff --git a/_layouts/post.html b/_layouts/post.html new file mode 100644 index 0000000..178bb88 --- /dev/null +++ b/_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/71db6d57/_plugins/debug.rb ---------------------------------------------------------------------- diff --git a/_plugins/debug.rb b/_plugins/debug.rb new file mode 100644 index 0000000..e1dde39 --- /dev/null +++ b/_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/71db6d57/assets/themes/zeppelin/bootstrap/css/bootstrap-theme.css ---------------------------------------------------------------------- diff --git a/assets/themes/zeppelin/bootstrap/css/bootstrap-theme.css b/assets/themes/zeppelin/bootstrap/css/bootstrap-theme.css new file mode 100644 index 0000000..c9c347e --- /dev/null +++ b/assets/themes/zeppelin/bootstrap/css/bootstrap-theme.css @@ -0,0 +1,459 @@ +/*! + * Bootstrap v3.0.2 by @fat and @mdo + * Copyright 2013 Twitter, Inc. + * Licensed under http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world by @mdo and @fat. + */ + +.btn-default, +.btn-primary, +.btn-success, +.btn-info, +.btn-warning, +.btn-danger { + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2); + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.btn-default:active, +.btn-primary:active, +.btn-success:active, +.btn-info:active, +.btn-warning:active, +.btn-danger:active, +.btn-default.active, +.btn-primary.active, +.btn-success.active, +.btn-info.active, +.btn-warning.active, +.btn-danger.active { + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); +} + +.btn:active, +.btn.active { + background-image: none; +} + +.btn-default { + text-shadow: 0 1px 0 #fff; + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#ffffff), to(#e0e0e0)); + background-image: -webkit-linear-gradient(top, #ffffff 0%, #e0e0e0 100%); + background-image: -moz-linear-gradient(top, #ffffff 0%, #e0e0e0 100%); + background-image: linear-gradient(to bottom, #ffffff 0%, #e0e0e0 100%); + background-repeat: repeat-x; + border-color: #dbdbdb; + border-color: #ccc; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-default:hover, +.btn-default:focus { + background-color: #e0e0e0; + background-position: 0 -15px; +} + +.btn-default:active, +.btn-default.active { + background-color: #e0e0e0; + border-color: #dbdbdb; +} + +.btn-primary { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#428bca), to(#2d6ca2)); + background-image: -webkit-linear-gradient(top, #428bca 0%, #2d6ca2 100%); + background-image: -moz-linear-gradient(top, #428bca 0%, #2d6ca2 100%); + background-image: linear-gradient(to bottom, #428bca 0%, #2d6ca2 100%); + background-repeat: repeat-x; + border-color: #2b669a; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff2d6ca2', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-primary:hover, +.btn-primary:focus { + background-color: #2d6ca2; + background-position: 0 -15px; +} + +.btn-primary:active, +.btn-primary.active { + background-color: #2d6ca2; + border-color: #2b669a; +} + +.btn-success { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#5cb85c), to(#419641)); + background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%); + background-image: -moz-linear-gradient(top, #5cb85c 0%, #419641 100%); + background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%); + background-repeat: repeat-x; + border-color: #3e8f3e; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-success:hover, +.btn-success:focus { + background-color: #419641; + background-position: 0 -15px; +} + +.btn-success:active, +.btn-success.active { + background-color: #419641; + border-color: #3e8f3e; +} + +.btn-warning { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#f0ad4e), to(#eb9316)); + background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%); + background-image: -moz-linear-gradient(top, #f0ad4e 0%, #eb9316 100%); + background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%); + background-repeat: repeat-x; + border-color: #e38d13; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-warning:hover, +.btn-warning:focus { + background-color: #eb9316; + background-position: 0 -15px; +} + +.btn-warning:active, +.btn-warning.active { + background-color: #eb9316; + border-color: #e38d13; +} + +.btn-danger { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#d9534f), to(#c12e2a)); + background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%); + background-image: -moz-linear-gradient(top, #d9534f 0%, #c12e2a 100%); + background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%); + background-repeat: repeat-x; + border-color: #b92c28; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-danger:hover, +.btn-danger:focus { + background-color: #c12e2a; + background-position: 0 -15px; +} + +.btn-danger:active, +.btn-danger.active { + background-color: #c12e2a; + border-color: #b92c28; +} + +.btn-info { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#5bc0de), to(#2aabd2)); + background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%); + background-image: -moz-linear-gradient(top, #5bc0de 0%, #2aabd2 100%); + background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%); + background-repeat: repeat-x; + border-color: #28a4c9; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-info:hover, +.btn-info:focus { + background-color: #2aabd2; + background-position: 0 -15px; +} + +.btn-info:active, +.btn-info.active { + background-color: #2aabd2; + border-color: #28a4c9; +} + +.thumbnail, +.img-thumbnail { + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075); + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075); +} + +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus { + background-color: #e8e8e8; + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#f5f5f5), to(#e8e8e8)); + background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); + background-image: -moz-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); + background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0); +} + +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + background-color: #357ebd; + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#428bca), to(#357ebd)); + background-image: -webkit-linear-gradient(top, #428bca 0%, #357ebd 100%); + background-image: -moz-linear-gradient(top, #428bca 0%, #357ebd 100%); + background-image: linear-gradient(to bottom, #428bca 0%, #357ebd 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0); +} + +.navbar-default { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#ffffff), to(#f8f8f8)); + background-image: -webkit-linear-gradient(top, #ffffff 0%, #f8f8f8 100%); + background-image: -moz-linear-gradient(top, #ffffff 0%, #f8f8f8 100%); + background-image: linear-gradient(to bottom, #ffffff 0%, #f8f8f8 100%); + background-repeat: repeat-x; + border-radius: 4px; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075); +} + +.navbar-default .navbar-nav > .active > a { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#ebebeb), to(#f3f3f3)); + background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f3f3f3 100%); + background-image: -moz-linear-gradient(top, #ebebeb 0%, #f3f3f3 100%); + background-image: linear-gradient(to bottom, #ebebeb 0%, #f3f3f3 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff3f3f3', GradientType=0); + -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075); +} + +.navbar-brand, +.navbar-nav > li > a { + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.25); +} + +.navbar-inverse { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#3c3c3c), to(#222222)); + background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222222 100%); + background-image: -moz-linear-gradient(top, #3c3c3c 0%, #222222 100%); + background-image: linear-gradient(to bottom, #3c3c3c 0%, #222222 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.navbar-inverse .navbar-nav > .active > a { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#222222), to(#282828)); + background-image: -webkit-linear-gradient(top, #222222 0%, #282828 100%); + background-image: -moz-linear-gradient(top, #222222 0%, #282828 100%); + background-image: linear-gradient(to bottom, #222222 0%, #282828 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff282828', GradientType=0); + -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25); + box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25); +} + +.navbar-inverse .navbar-brand, +.navbar-inverse .navbar-nav > li > a { + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} + +.navbar-static-top, +.navbar-fixed-top, +.navbar-fixed-bottom { + border-radius: 0; +} + +.alert { + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.2); + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.alert-success { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#dff0d8), to(#c8e5bc)); + background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%); + background-image: -moz-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%); + background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%); + background-repeat: repeat-x; + border-color: #b2dba1; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0); +} + +.alert-info { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#d9edf7), to(#b9def0)); + background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%); + background-image: -moz-linear-gradient(top, #d9edf7 0%, #b9def0 100%); + background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%); + background-repeat: repeat-x; + border-color: #9acfea; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0); +} + +.alert-warning { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#fcf8e3), to(#f8efc0)); + background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%); + background-image: -moz-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%); + background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%); + background-repeat: repeat-x; + border-color: #f5e79e; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0); +} + +.alert-danger { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#f2dede), to(#e7c3c3)); + background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%); + background-image: -moz-linear-gradient(top, #f2dede 0%, #e7c3c3 100%); + background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%); + background-repeat: repeat-x; + border-color: #dca7a7; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0); +} + +.progress { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#ebebeb), to(#f5f5f5)); + background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%); + background-image: -moz-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%); + background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0); +} + +.progress-bar { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#428bca), to(#3071a9)); + background-image: -webkit-linear-gradient(top, #428bca 0%, #3071a9 100%); + background-image: -moz-linear-gradient(top, #428bca 0%, #3071a9 100%); + background-image: linear-gradient(to bottom, #428bca 0%, #3071a9 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3071a9', GradientType=0); +} + +.progress-bar-success { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#5cb85c), to(#449d44)); + background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%); + background-image: -moz-linear-gradient(top, #5cb85c 0%, #449d44 100%); + background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0); +} + +.progress-bar-info { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#5bc0de), to(#31b0d5)); + background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%); + background-image: -moz-linear-gradient(top, #5bc0de 0%, #31b0d5 100%); + background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0); +} + +.progress-bar-warning { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#f0ad4e), to(#ec971f)); + background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%); + background-image: -moz-linear-gradient(top, #f0ad4e 0%, #ec971f 100%); + background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0); +} + +.progress-bar-danger { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#d9534f), to(#c9302c)); + background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%); + background-image: -moz-linear-gradient(top, #d9534f 0%, #c9302c 100%); + background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0); +} + +.list-group { + border-radius: 4px; + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075); + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075); +} + +.list-group-item.active, +.list-group-item.active:hover, +.list-group-item.active:focus { + text-shadow: 0 -1px 0 #3071a9; + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#428bca), to(#3278b3)); + background-image: -webkit-linear-gradient(top, #428bca 0%, #3278b3 100%); + background-image: -moz-linear-gradient(top, #428bca 0%, #3278b3 100%); + background-image: linear-gradient(to bottom, #428bca 0%, #3278b3 100%); + background-repeat: repeat-x; + border-color: #3278b3; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3278b3', GradientType=0); +} + +.panel { + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.panel-default > .panel-heading { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#f5f5f5), to(#e8e8e8)); + background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); + background-image: -moz-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); + background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0); +} + +.panel-primary > .panel-heading { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#428bca), to(#357ebd)); + background-image: -webkit-linear-gradient(top, #428bca 0%, #357ebd 100%); + background-image: -moz-linear-gradient(top, #428bca 0%, #357ebd 100%); + background-image: linear-gradient(to bottom, #428bca 0%, #357ebd 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0); +} + +.panel-success > .panel-heading { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#dff0d8), to(#d0e9c6)); + background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%); + background-image: -moz-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%); + background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0); +} + +.panel-info > .panel-heading { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#d9edf7), to(#c4e3f3)); + background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%); + background-image: -moz-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%); + background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0); +} + +.panel-warning > .panel-heading { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#fcf8e3), to(#faf2cc)); + background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%); + background-image: -moz-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%); + background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0); +} + +.panel-danger > .panel-heading { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#f2dede), to(#ebcccc)); + background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%); + background-image: -moz-linear-gradient(top, #f2dede 0%, #ebcccc 100%); + background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0); +} + +.well { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#e8e8e8), to(#f5f5f5)); + background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%); + background-image: -moz-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%); + background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%); + background-repeat: repeat-x; + border-color: #dcdcdc; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0); + -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1); + box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1); +} \ No newline at end of file
