Refresh index to match docs.openstack.org

Added tools/build-index.sh which will build an index.html and copy
needed static files into publish-docs/www

Change-Id: If65a9da675a182f0aab659cb076c3a4aba032b58
This commit is contained in:
Russell Sim 2015-11-12 21:20:42 +11:00 committed by Anne Gentle
parent 904145ee0a
commit 68b1f1e748
42 changed files with 7919 additions and 394 deletions

44
tools/build-index.sh Executable file
View File

@ -0,0 +1,44 @@
#!/bin/bash -xe
#
# Licensed 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.
PUBLISH=$1
if [[ -z "$PUBLISH" ]] ; then
echo "usage $0 (build|publish)"
exit 1
fi
mkdir -p publish-docs
# Build the www pages so that openstack-doc-test creates a link to
# www/www-index.html.
if [ "$PUBLISH" = "build" ] ; then
python tools/www-generator.py --source-directory www/ \
--output-directory publish-docs/www/
rsync -a www/static/ publish-docs/www/
# publish-docs/www-index.html is the trigger for openstack-doc-test
# to include the file.
mv publish-docs/www/www-index.html publish-docs/www-index.html
fi
if [ "$PUBLISH" = "publish" ] ; then
# Publication happens from publish-docs/api-ref to
# developer.openstack.org, so move content around
mkdir publish-docs/api-ref/
python tools/www-generator.py --source-directory www/ \
--output-directory publish-docs/api-ref/
rsync -a www/static/ publish-docs/api-ref/
# Don't publish this file
rm publish-docs/api-ref/www-index.html
fi

111
tools/www-generator.py Executable file
View File

@ -0,0 +1,111 @@
#!/usr/bin/env python
# Licensed 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.
import argparse
import logging
import os
import sys
import lxml.html
from lxml import etree
import jinja2
def initialize_logging(debug, verbose):
"""Initialize the Logger."""
logger = logging.getLogger(name='logger')
formatter = logging.Formatter('%(asctime)s %(levelname)-8s %(message)s')
handler = logging.StreamHandler()
handler.setFormatter(formatter)
logger.addHandler(handler)
if verbose:
logger.setLevel(logging.INFO)
if debug:
logger.setLevel(logging.DEBUG)
return logging.getLogger('logger')
def parse_command_line_arguments():
"""Parse the command line arguments."""
parser = argparse.ArgumentParser()
parser.add_argument("--debug", help="Print debugging messages.",
action="store_true", default=False)
parser.add_argument("--verbose", help="Be more verbose.",
action="store_true", default=False)
parser.add_argument("--source-directory", type=str,
default='www', help='')
parser.add_argument("--output-directory", type=str,
default='publish-docs/www', help='')
return parser.parse_args()
def main():
"""Entry point for this script."""
args = parse_command_line_arguments()
logger = initialize_logging(args.debug, args.verbose)
try:
loader = jinja2.FileSystemLoader(args.source_directory)
environment = jinja2.Environment(loader=loader)
except Exception as e:
logger.error("initialising template environment failed: %s" % e)
return 1
for templateFile in environment.list_templates():
if not templateFile.endswith('.html'):
continue
logger.info("generating %s" % templateFile)
try:
template = environment.get_template(templateFile)
except Exception as e:
logger.error("parsing template %s failed: %s" %
(templateFile, e))
continue
try:
output = lxml.html.tostring(
lxml.html.fromstring(template.render()),
pretty_print=True)
except Exception as e:
logger.error("rendering template %s failed: %s" %
(templateFile, e))
continue
try:
target_directory = os.path.join(args.output_directory,
os.path.dirname(templateFile))
target_file = os.path.join(args.output_directory, templateFile)
if not os.path.isdir(target_directory):
logger.debug("creating target directory %s" %
target_directory)
os.makedirs(target_directory)
logger.debug("writing %s" % target_file)
with open(os.path.join(target_file), 'wb') as fh:
fh.write(output.encode('utf8'))
except (IOError, OSError, UnicodeEncodeError) as e:
logger.error("writing %s failed: %s" % (target_file, e))
continue
return 0
if __name__ == '__main__':
sys.exit(main())

View File

@ -42,6 +42,8 @@ commands = openstack-doc-test --check-deletions {posargs}
commands =
# Build and copy RST Guides
{toxinidir}/tools/build-all-rst.sh
# Build website index
{toxinidir}/tools/build-index.sh build
# Build DocBook Guides
openstack-doc-test --check-build {posargs}
@ -61,6 +63,8 @@ commands =
{toxinidir}/tools/build-firstapp-rst.sh
# Build and copy API Quick Start
{toxinidir}/tools/build-api-quick-start.sh
# Build website index
{toxinidir}/tools/build-index.sh publish
[testenv:checklang]
# openstack-generate-docbook needs xml2po which cannot be installed in

View File

@ -1,199 +1,58 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta content="HTML Tidy for Linux/x86 (vers 11 February 2007), see www.w3.org" name="generator"/>
<meta content="text/html; charset=utf8" http-equiv="Content-Type"/>
<meta content="Ip5yk0nd8yQHEo8I7SjzVfAiadlHvTvqQHLGwn1GFyU" name="google-site-verification"/>
<title>
Documentation &gt;&gt; Application Development
</title>
<!-- Google Fonts -->
<link href="http://www.openstack.org/blog/feed/" rel="alternate" title="RSS 2.0" type="application/rss+xml"/>
<link href="http://fonts.googleapis.com/css?family=PT+Sans&amp;subset=latin" rel="stylesheet" type="text/css"/>
<!-- Framework CSS -->
<link href="http://openstack.org/themes/openstack/css/blueprint/screen.css" media="screen, projection" rel="stylesheet" type="text/css"/>
<link href="http://openstack.org/themes/openstack/css/blueprint/print.css" media="print" rel="stylesheet" type="text/css"/>
<!--[if lt IE 8]><link rel="stylesheet" href="http://openstack.org/themes/openstack/css/blueprint/ie.css" type="text/css" media="screen, projection"><![endif]-->
<!-- OpenStack Specific CSS -->
<link href="http://openstack.org/themes/openstack/css/main.css" media="screen, projection, print" rel="stylesheet" type="text/css"/>
<link href="http://openstack.org/themes/openstack/css/dropdown.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript">
//<![CDATA[
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-17511903-1']);
_gaq.push(['_setDomainName', '.openstack.org']);
_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>
</head>
<body class="docshome" id="docshome">
<!-- Top Site Banner -->
<div class="topMessage">
<div class="container">
<div class="span-24 last">
<p>
Need help with a development problem?
<a class="roundedButton" href="https://ask.openstack.org/en/questions/">
Ask OpenStack
</a>
</p>
</div>
</div>
</div>
<!-- End Site Banner -->
<div class="container">
<div id="header">
<div class="span-5">
<h1 id="logo">
<a href="http://www.openstack.org/">
OpenStack
</a>
</h1>
</div>
<div class="span-19 last blueLine">
<div class="span-19" id="navigation">
<ul id="Menu1">
<li>
<a href="/" title="Go to the Home page">
Home
</a>
</li>
<li>
<a class="link" href="http://www.openstack.org/software/" title="Go to the Software page">
Software
</a>
</li>
<li>
<a class="link" href="http://www.openstack.org/user-stories/" title="Go to the User Stories page">
User Stories
</a>
</li>
<li>
<a class="link" href="http://www.openstack.org/community/" title="Go to the Community page">
Community
</a>
</li>
<li>
<a class="link" href="http://www.openstack.org/foundation/" title="Go to the Foundation page">
Foundation
</a>
</li>
<li>
<a class="link" href="http://www.openstack.org/profile/" title="Go to the Profile page">
Profile
</a>
</li>
<li>
<a href="http://www.openstack.org/blog/" title="Go to the OpenStack Blog">
Blog
</a>
</li>
<li>
<a href="http://wiki.openstack.org/" title="Go to the OpenStack Wiki">
Wiki
</a>
</li>
<li>
<a href="http://docs.openstack.org/" title="Go to OpenStack Documentation">
Documentation
</a>
</li>
</ul>
</div>
</div>
</div>
<div class="span-17">
<p>
</p>
</div>
<div class="span-7 last gcse-holder">
<div id="gcse">
<script>
(function() {
var cx = '000108871792296872333:noj9nikm74i';
var gcse = document.createElement('script');
gcse.type = 'text/javascript';
gcse.async = true;
gcse.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') +
'//www.google.com/cse/cse.js?cx=' + cx;
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(gcse, s);
})();
</script>
<gcse:search>
</gcse:search>
</div>
</div>
</div>
<!-- Page Content -->
<div class="container">
<div class="opener span-24 last">
<h1>
Resources for application development on private and public OpenStack clouds.
</h1>
<p>
You interact with an OpenStack cloud using a number of tools. The tool you choose depends on your use case in the cloud. Here are some starting points.
</p>
<div class="toolBoxes">
<div class="sdk span-6 prepend-1">
<h1>
SDK
</h1>
<a href="#sdk">
Software Development Kits
</a>
</div>
<div class="cli span-6 prepend-1">
<h1>
CLI
</h1>
<a href="#cli">
Command Line Interfaces
</a>
</div>
<div class="API span-6 prepend-1 last">
<h1>
API
</h1>
<a href="#api">
Application Programming Interfaces
</a>
</div>
</div>
</div>
<hr/>
<div class="span-24" id="sdk">
<h2>
Software Development Kits
</h2>
<p>
A Software Development Kit (SDK) is a collection of code, examples, and
documentation that helps you to create applications in the language of
your choice on OpenStack clouds. If one of the following SDKs do not
support your language or use case, you can use the <a href="#api">API</a>
or one of the other <a
{% set scriptdir = './common/js/' %}
{% set cssdir = './common/css/' %}
{% extends "templates/indexbase.tmpl" %}
{% block pagetitle %}Application Development{% endblock %}
{% block title %}{% endblock %}
{% block header %}{% endblock header %}
{% block content %}
<!-- Begin Page Content -->
<div class="top-docs-wrapper">
<div class="container">
<div class="col-lg-12">
<h1>Development Resources for OpenStack clouds</h1>
<p>
You interact with an OpenStack cloud using a number of tools. The tool you choose depends on your use case in the cloud. Here are some starting points.
</p>
<hr>
<a href="#sdk" class="overview-btn docs-btn">View SDKs <i class="fa fa-arrow-circle-o-down"></i></a>
<a href="#api" class="overview-btn docs-btn">View APIs <i class="fa fa-arrow-circle-o-down"></i></a>
<a href="#cli" class="overview-btn docs-btn">View CLIs <i class="fa fa-arrow-circle-o-down"></i></a>
<form class="docs-main-search-form">
<script type="text/javascript">
(function() {
var cx = '000108871792296872333:noj9nikm74i';
var gcse = document.createElement('script');
gcse.type = 'text/javascript';
gcse.async = true;
gcse.src = (document.location.protocol == 'https:' ? 'https:' :
'http:') +
'//www.google.com/cse/cse.js?cx=' + cx;
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(gcse, s);
})();
</script>
<gcse:search gname="standard" as_sitesearch="docs.openstack.org">
</gcse:search>
</form>
</div>
<div class="container docs-toc">
<div id="sdk">
<h2>
Software Development Kits
</h2>
<p>
A Software Development Kit (SDK) is a collection of code, examples, and
documentation that helps you to create applications in the language of
your choice on OpenStack clouds. If one of the following SDKs do not
support your language or use case, you can use the <a href="#api">API</a>
or one of the other <a
href="https://wiki.openstack.org/wiki/SDKs#Known_SDKs">Known SDKs</a>.
</p>
<div class="span-24" id="java">
<h3 class="lang-name">
Java
</h3>
<div class="span-6 prepend-1">
<p>
<a class="roundedButton" href="http://jclouds.apache.org/guides/openstack/">
Get SDK Now
</a>
</p>
</div>
<div class="span-3">
<div class="col-md-4">
<dl>
<dt>
SDK
@ -202,10 +61,15 @@
<a href="http://jclouds.apache.org/guides/openstack/">
Apache jclouds
</a>
<p>
<a class="roundedButton" href="http://jclouds.apache.org/guides/openstack/">
Get SDK Now
</a>
</p>
</dd>
</dl>
</div>
<div class="span-4 prepend-1">
<div class="col-md-4">
<dl>
<dt>
Docs and Resources
@ -227,7 +91,7 @@
</dd>
</dl>
</div>
<div class="span-6 prepend-1">
<div class="col-md-4">
<dl>
<dt>
Community Links
@ -270,20 +134,12 @@
</a>
</dd>
</dl>
</div>
</div>
</div></div>
<div class="span-24" id="nodejs">
<h3 class="lang-name">
Node.js
</h3>
<div class="span-6 prepend-1">
<p>
<a class="roundedButton" href="https://www.npmjs.org/package/pkgcloud">
Get SDK Now
</a>
</p>
</div>
<div class="span-3">
<div class="col-md-4">
<dl>
<dt>
SDK
@ -292,10 +148,15 @@
<a href="https://github.com/pkgcloud/pkgcloud/blob/master/docs/providers/openstack/README.md">
pkgcloud
</a>
<p>
<a class="roundedButton" href="https://www.npmjs.org/package/pkgcloud">
Get SDK Now
</a>
</p>
</dd>
</dl>
</div>
<div class="span-4 prepend-1">
<div class="col-md-4">
<dl>
<dt>
Docs and Resources
@ -317,7 +178,7 @@
</dd>
</dl>
</div>
<div class="span-6 prepend-1">
<div class="col-md-4">
<dl>
<dt>
Community Links
@ -362,14 +223,7 @@
<h3 class="lang-name">
Python
</h3>
<div class="span-6 prepend-1">
<p>
<a class="roundedButton" href="https://libcloud.apache.org/">
Get SDK Now
</a>
</p>
</div>
<div class="span-3">
<div class="col-md-4">
<dl>
<dt>
SDK
@ -378,10 +232,16 @@
<a href="https://libcloud.apache.org/">
libcloud
</a>
<p>
<a class="roundedButton" href="https://libcloud.apache.org/">
Get SDK Now
</a>
</p>
</dd>
</dl>
</div>
<div class="span-4 prepend-1">
<div class="col-md-4">
<dl>
<dt>
Docs and Resources
@ -408,7 +268,7 @@
</dd>
</dl>
</div>
<div class="span-6 prepend-1">
<div class="col-md-4">
<dl>
<dt>
Community Links
@ -457,14 +317,7 @@
<h3 class="lang-name">
Ruby
</h3>
<div class="span-6 prepend-1">
<p>
<a class="roundedButton" href="https://github.com/fog/fog/blob/master/lib/fog/openstack/docs/getting_started.md">
Get SDK Now
</a>
</p>
</div>
<div class="span-3">
<div class="col-md-4">
<dl>
<dt>
SDK
@ -473,10 +326,15 @@
<a href="https://github.com/fog/fog/blob/master/lib/fog/openstack/docs/getting_started.md">
Fog
</a>
<p>
<a class="roundedButton" href="https://github.com/fog/fog/blob/master/lib/fog/openstack/docs/getting_started.md">
Get SDK Now
</a>
</p>
</dd>
</dl>
</div>
<div class="span-4 prepend-1">
<div class="col-md-4">
<dl>
<dt>
Docs and Resources
@ -498,7 +356,7 @@
</dd>
</dl>
</div>
<div class="span-6 prepend-1">
<div class="col-md-4">
<dl>
<dt>
Community Links
@ -543,14 +401,7 @@
<h3 class="lang-name">
.NET
</h3>
<div class="span-6 prepend-1">
<p>
<a class="roundedButton" href="https://github.com/openstacknetsdk/openstack.net/releases/latest">
Get SDK Now
</a>
</p>
</div>
<div class="span-3">
<div class="col-md-4">
<dl>
<dt>
SDK
@ -559,10 +410,15 @@
<a href="https://github.com/openstacknetsdk/openstack.net/releases/latest">
.NET
</a>
<p>
<a class="roundedButton" href="https://github.com/openstacknetsdk/openstack.net/releases/latest">
Get SDK Now
</a>
</p>
</dd>
</dl>
</div>
<div class="span-4 prepend-1">
<div class="col-md-4">
<dl>
<dt>
Docs and Resources
@ -584,7 +440,7 @@
</dd>
</dl>
</div>
<div class="span-6 prepend-1">
<div class="col-md-4">
<dl>
<dt>
Community Links
@ -625,24 +481,22 @@
<h3 class="lang-name">
PHP
</h3>
<div class="span-6 prepend-1">
<p>
<a class="roundedButton" href="http://docs.php-opencloud.com/en/latest/getting-started-with-openstack.html">
Get SDK Now
</a>
</p>
</div>
<div class="span-3">
<div class="col-md-4">
<dl>
<dt>
SDK
</dt>
<dd>
PHP
<a href="http://docs.php-opencloud.com/en/latest/getting-started-with-openstack.html">PHP</a>
<p>
<a class="roundedButton" href="http://docs.php-opencloud.com/en/latest/getting-started-with-openstack.html">
Get SDK Now
</a>
</p>
</dd>
</dl>
</div>
<div class="span-4 prepend-1">
<div class="col-md-4">
<dl>
<dt>
Docs and Resources
@ -664,7 +518,7 @@
</dd>
</dl>
</div>
<div class="span-6 prepend-1">
<div class="col-md-4">
<dl>
<dt>
Community Links
@ -702,152 +556,7 @@
</div>
</div>
</div>
<div class="span-24" id="cli">
<h2>
Command Line Interfaces
</h2>
<p>
An OpenStack Command Line Interface (CLI) is a text based client that helps you to create scripts for interacting with OpenStack clouds.
</p>
<div class="span-24" id="python">
<div class="span-3">
<dl>
<dt>
Official CLI
</dt>
<dd>
<a href="https://git.openstack.org/cgit/openstack/python-openstackclient/">
OpenStack Client
</a>
</dd>
<dd>
<a href="https://git.openstack.org/cgit/openstack/python-cinderclient/">
Block Storage
</a>
</dd>
<dd>
<a href="https://git.openstack.org/cgit/openstack/python-novaclient/">
Compute
</a>
</dd>
<dd>
<a href="https://git.openstack.org/cgit/openstack/python-saharaclient/">
Data Processing
</a>
</dd>
<dd>
<a href="https://git.openstack.org/cgit/openstack/python-troveclient/">
Database Service
</a>
</dd>
<dd>
<a href="https://git.openstack.org/cgit/openstack/python-keystoneclient/">
Identity Service
</a>
</dd>
<dd>
<a href="https://git.openstack.org/cgit/openstack/python-glanceclient/">
Image Service
</a>
</dd>
<dd>
<a href="https://git.openstack.org/cgit/openstack/python-neutronclient/">
Networking
</a>
</dd>
<dd>
<a href="https://git.openstack.org/cgit/openstack/python-swiftclient/">
Object Storage
</a>
</dd>
<dd>
<a href="https://git.openstack.org/cgit/openstack/python-heatclient/">
Orchestration
</a>
</dd>
<dd>
<a href="https://git.openstack.org/cgit/openstack/python-manilaclient/">
Shared File Systems
</a>
</dd>
<dd>
<a href="https://git.openstack.org/cgit/openstack/python-ceilometerclient/">
Telemetry
</a>
</dd>
</dl>
</div>
<div class="span-4 prepend-1">
<dl>
<dt>
Docs and Resources
</dt>
<dd>
<a class="link" href="http://docs.openstack.org/user-guide" target="_top">
Getting Started Guide
</a>
</dd>
<dd>
<a class="link" href="http://docs.openstack.org/cli-reference/content/" target="_top">
CLI Reference Manual
</a>
</dd>
</dl>
</div>
<div class="span-6 prepend-1">
<dl>
<dt>
Community Links
</dt>
<dd>
<strong>
Twitter:
</strong>
<a href="https://twitter.com/openstack">
@openstack
</a>
</dd>
<dd>
<strong>
IRC:
</strong>
<a href="irc://irc.freenode.net/openstack">
#openstack
</a>
</dd>
<dd>
<strong>
Mailing List:
</strong>
<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack">
Register
</a>
|
<a href="http://openstack.markmail.org/">
Archive
</a>
</dd>
<dd>
<strong>
Report Issues:
</strong>
<a href="https://bugs.launchpad.net/">
Issue Tracker
</a>
</dd>
<dd>
<strong>
Support:
</strong>
<a href="https://ask.openstack.org/">
Ask
</a>
</dd>
</dl>
</div>
</div>
</div>
<div class="span-24" id="api">
<div id="api">
<h2>
Application Programming Interfaces
</h2>
@ -858,8 +567,6 @@
OpenStack API Quick Start
</a> gives you the basics for interacting with the services.
</p>
<div class="span-24" id="api-docs">
<div class="span-8 last">
<dl>
<dt>
References
@ -966,8 +673,151 @@
</dd>
</dl>
</div>
<div id="cli">
<h2>
Command Line Interfaces
</h2>
<p>
An OpenStack Command Line Interface (CLI) is a text based client that helps you to create scripts for interacting with OpenStack clouds.
</p>
<div class="col-md-4">
<dl>
<dt>
Official CLI
</dt>
<dd>
<a href="https://git.openstack.org/cgit/openstack/python-openstackclient/">
OpenStack Client
</a>
</dd>
<dd>
<a href="https://git.openstack.org/cgit/openstack/python-cinderclient/">
Block Storage
</a>
</dd>
<dd>
<a href="https://git.openstack.org/cgit/openstack/python-novaclient/">
Compute
</a>
</dd>
<dd>
<a href="https://git.openstack.org/cgit/openstack/python-saharaclient/">
Data Processing
</a>
</dd>
<dd>
<a href="https://git.openstack.org/cgit/openstack/python-troveclient/">
Database Service
</a>
</dd>
<dd>
<a href="https://git.openstack.org/cgit/openstack/python-keystoneclient/">
Identity Service
</a>
</dd>
<dd>
<a href="https://git.openstack.org/cgit/openstack/python-glanceclient/">
Image Service
</a>
</dd>
<dd>
<a href="https://git.openstack.org/cgit/openstack/python-neutronclient/">
Networking
</a>
</dd>
<dd>
<a href="https://git.openstack.org/cgit/openstack/python-swiftclient/">
Object Storage
</a>
</dd>
<dd>
<a href="https://git.openstack.org/cgit/openstack/python-heatclient/">
Orchestration
</a>
</dd>
<dd>
<a href="https://git.openstack.org/cgit/openstack/python-manilaclient/">
Shared File Systems
</a>
</dd>
<dd>
<a href="https://git.openstack.org/cgit/openstack/python-ceilometerclient/">
Telemetry
</a>
</dd>
</dl>
</div>
<div class="col-md-4">
<dl>
<dt>
Docs and Resources
</dt>
<dd>
<a class="link" href="http://docs.openstack.org/user-guide" target="_top">
Getting Started Guide
</a>
</dd>
<dd>
<a class="link" href="http://docs.openstack.org/cli-reference/content/" target="_top">
CLI Reference Manual
</a>
</dd>
</dl>
</div>
<div class="col-md-4">
<dl>
<dt>
Community Links
</dt>
<dd>
<strong>
Twitter:
</strong>
<a href="https://twitter.com/openstack">
@openstack
</a>
</dd>
<dd>
<strong>
IRC:
</strong>
<a href="irc://irc.freenode.net/openstack">
#openstack
</a>
</dd>
<dd>
<strong>
Mailing List:
</strong>
<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack">
Register
</a>
|
<a href="http://openstack.markmail.org/">
Archive
</a>
</dd>
<dd>
<strong>
Report Issues:
</strong>
<a href="https://bugs.launchpad.net/">
Issue Tracker
</a>
</dd>
<dd>
<strong>
Support:
</strong>
<a href="https://ask.openstack.org/">
Ask
</a>
</dd>
</dl>
</div>
</div>
</div>
</div>
<!-- End Page Content -->
<div class="container">
<div id="footer">
@ -988,6 +838,7 @@
</p>
</div>
</div>
{% endblock content %}
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js" type="text/javascript">
</script>
<script charset="utf-8" src="/common/jquery/jquery.hoverIntent.minified.js" type="text/javascript">

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 729 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

View File

@ -0,0 +1,285 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 16.0.4, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="136px" height="33px" viewBox="0 0 136 33" enable-background="new 0 0 136 33" xml:space="preserve">
<g>
<path fill="#6D6D6D" d="M51.721,16.175c0,5.531-2.574,7.395-4.764,7.395c-2.574,0-4.645-2.336-4.645-7.365
c0-5.237,2.336-7.427,4.792-7.427C49.649,8.779,51.721,11.175,51.721,16.175z M44.591,16.175c0,2.367,0.413,5.591,2.484,5.591
c1.953,0,2.336-3.372,2.336-5.591c0-2.189-0.384-5.562-2.397-5.562C44.976,10.613,44.591,13.986,44.591,16.175z"/>
<path fill="#6D6D6D" d="M54.235,13.484c0-2.19-0.09-3.462-0.118-4.468h2.041l0.118,1.834h0.059
c0.768-1.538,1.893-2.071,3.018-2.071c2.483,0,4.143,2.663,4.143,7.367c0,5.295-2.19,7.425-4.439,7.425
c-1.331,0-2.101-0.858-2.484-1.655h-0.058v7.1h-2.279V13.484z M56.514,18.069c0,0.443,0,0.857,0.087,1.183
c0.443,2.041,1.479,2.426,2.101,2.426c1.894,0,2.484-2.604,2.484-5.502c0-2.958-0.71-5.444-2.514-5.444
c-1.035,0-1.953,1.302-2.101,2.605c-0.058,0.354-0.058,0.708-0.058,1.093V18.069z"/>
<path fill="#6D6D6D" d="M67.667,16.383c0.027,4.378,1.745,5.323,3.401,5.323c0.975,0,1.805-0.235,2.367-0.562l0.354,1.687
c-0.798,0.443-2.011,0.682-3.136,0.682c-3.431,0-5.208-2.812-5.208-7.19c0-4.645,1.953-7.544,4.821-7.544
c2.931,0,4.085,3.077,4.085,6.332c0,0.532,0,0.916-0.03,1.272H67.667z M72.162,14.696c0.061-2.869-1.037-4.141-2.13-4.141
c-1.477,0-2.247,2.188-2.338,4.141H72.162z"/>
<path fill="#6D6D6D" d="M76.805,12.714c0-1.687-0.087-2.544-0.118-3.698h1.985l0.117,1.715h0.059
c0.623-1.153,1.774-1.952,3.285-1.952c1.981,0,3.461,1.48,3.461,4.941v9.615h-2.278v-9.23c0-1.687-0.326-3.402-1.982-3.402
c-0.947,0-1.862,0.797-2.16,2.336c-0.058,0.354-0.089,0.8-0.089,1.272v9.024h-2.279V12.714z"/>
<path fill="#CE3427" d="M88.403,20.967c0.503,0.326,1.392,0.739,2.309,0.739c1.3,0,2.101-0.797,2.101-2.07
c0-1.094-0.387-1.834-1.836-2.81c-1.862-1.212-2.869-2.426-2.869-4.083c0-2.307,1.718-3.964,3.937-3.964
c1.123,0,1.98,0.384,2.573,0.74l-0.623,1.716c-0.532-0.355-1.152-0.622-1.893-0.622c-1.243,0-1.863,0.887-1.863,1.805
c0,0.976,0.354,1.509,1.773,2.484c1.658,1.065,2.958,2.367,2.958,4.35c0,2.869-1.952,4.261-4.287,4.261
c-1.067,0-2.221-0.325-2.842-0.829L88.403,20.967z"/>
<path fill="#CE3427" d="M100.117,5.23v3.786h2.751v1.746h-2.751v8.491c0,1.863,0.682,2.367,1.508,2.367
c0.356,0,0.653-0.03,0.918-0.09l0.089,1.745c-0.414,0.147-0.946,0.238-1.685,0.238c-0.89,0-1.687-0.238-2.249-0.859
c-0.562-0.651-0.859-1.627-0.859-3.607v-8.285h-1.744V9.016h1.744V5.88L100.117,5.23z"/>
<path fill="#CE3427" d="M110.53,23.335l-0.146-1.51h-0.091c-0.62,1.095-1.626,1.745-2.838,1.745c-1.924,0-3.404-1.626-3.404-4.082
c0-3.581,2.871-5.177,6.095-5.206v-0.443c0-1.924-0.473-3.255-2.278-3.255c-0.887,0-1.687,0.296-2.366,0.74l-0.503-1.598
c0.593-0.443,1.924-0.947,3.344-0.947c2.868,0,4.112,1.894,4.112,5.118v6.183c0,1.097,0,2.337,0.148,3.256H110.53z M110.204,15.939
c-1.181,0-3.935,0.207-3.935,3.313c0,1.863,0.947,2.544,1.747,2.544c1.007,0,1.862-0.739,2.129-2.16
c0.059-0.266,0.059-0.562,0.059-0.798V15.939z"/>
<path fill="#CE3427" d="M122.631,22.979c-0.505,0.296-1.361,0.534-2.367,0.534c-3.137,0-5.236-2.516-5.236-7.249
c0-4.112,2.069-7.455,5.649-7.455c0.77,0,1.599,0.207,2.012,0.444l-0.443,1.863c-0.295-0.147-0.888-0.385-1.626-0.385
c-2.279,0-3.312,2.722-3.312,5.533c0,3.344,1.271,5.355,3.37,5.355c0.623,0,1.124-0.148,1.656-0.385L122.631,22.979z"/>
<path fill="#CE3427" d="M126.831,15.673h0.058c0.268-0.562,0.505-1.125,0.769-1.598l2.842-5.06h2.456l-3.787,6.036l4.112,8.283
h-2.545l-3.106-6.746l-0.798,1.332v5.414h-2.28V2.863h2.28V15.673z"/>
</g>
<g>
<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="135.2939" y1="-289.2324" x2="150.7576" y2="-290.3611" gradientTransform="matrix(0.711 -0.7032 -0.7032 -0.711 -294.0409 -81.7453)">
<stop offset="0" style="stop-color:#000000;stop-opacity:0"/>
<stop offset="1" style="stop-color:#010201"/>
</linearGradient>
<path fill="url(#SVGID_1_)" d="M3.407,22.683c-0.546-0.552-0.542-0.74,0.011-1.286l6.262,0.35c0.552-0.546,1.489,0.218,2.035,0.771
l3.739,2.75c0.547,0.553,2.563,1.941,2.011,2.487l-3.58,2.169c-0.552,0.547-2.675,0.635-3.221,0.083L3.407,22.683z"/>
<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="295.373" y1="-347.7021" x2="296.8124" y2="-346.4509" gradientTransform="matrix(1 0 0 -1 -268.5 -325.5)">
<stop offset="0" style="stop-color:#C33A28"/>
<stop offset="0.8825" style="stop-color:#8A241C"/>
</linearGradient>
<path fill="url(#SVGID_2_)" d="M25.441,20.554l3.321,3.294c0.795-0.128,0.926-0.529,0.833-1.422l-3.31-3.285l0,0
C26.136,20.271,26.181,20.519,25.441,20.554L25.441,20.554z"/>
<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="277.2236" y1="-332.2896" x2="278.9883" y2="-329.2331" gradientTransform="matrix(1 0 0 -1 -268.5 -325.5)">
<stop offset="0" style="stop-color:#8A241C"/>
<stop offset="1" style="stop-color:#C33A28"/>
</linearGradient>
<path fill="url(#SVGID_3_)" d="M10.542,7.84L7.219,4.55c0-0.742,0.532-1.597,1.662-1.744l3.285,3.311l0,0
C11.036,6.264,10.577,7.1,10.542,7.84L10.542,7.84z"/>
<g>
<g>
<g>
<g>
<g>
<g>
<g enable-background="new ">
<g>
<g>
<polygon fill="#8A241C" points="29.603,21.781 26.278,18.487 31.301,18.046 34.624,21.341 "/>
</g>
<g>
<polygon fill="#8A241C" points="29.603,21.781 26.278,18.487 31.301,18.046 34.624,21.341 "/>
</g>
</g>
<g>
<polygon fill="#8A241C" points="29.601,22.939 26.278,19.646 26.278,18.487 29.603,21.781 "/>
</g>
<g>
<polygon fill="#C33A28" points="16.385,24.936 13.065,21.641 25.441,20.554 28.762,23.848 "/>
</g>
<g enable-background="new ">
<g>
<defs>
<path id="SVGID_4_" d="M15.777,24.723c-0.052-0.05-0.118-0.114-0.169-0.166c-1.05-1.043-2.104-2.084-3.156-3.129
c0.152,0.151,0.368,0.233,0.612,0.213l3.32,3.295C16.143,24.957,15.929,24.87,15.777,24.723z"/>
</defs>
<clipPath id="SVGID_5_">
<use xlink:href="#SVGID_4_" overflow="visible"/>
</clipPath>
<g clip-path="url(#SVGID_5_)" enable-background="new ">
<path fill="#942820" d="M15.777,24.723l-3.325-3.295c0.011,0.013,0.023,0.021,0.034,0.03l3.323,3.296
C15.796,24.741,15.788,24.733,15.777,24.723"/>
<path fill="#972920" d="M15.81,24.754l-3.323-3.296c0.017,0.018,0.036,0.031,0.053,0.045l3.322,3.293
C15.844,24.782,15.827,24.766,15.81,24.754"/>
<path fill="#9A2C21" d="M15.862,24.796l-3.322-3.293c0.015,0.012,0.032,0.021,0.049,0.031l3.323,3.293
C15.897,24.817,15.88,24.807,15.862,24.796"/>
<path fill="#9E2D21" d="M15.912,24.827l-3.323-3.293c0.017,0.012,0.034,0.021,0.051,0.027l3.323,3.294
C15.946,24.849,15.929,24.839,15.912,24.827"/>
<path fill="#A22C23" d="M15.963,24.855l-3.323-3.294c0.016,0.009,0.032,0.017,0.047,0.026l3.322,3.29
C15.996,24.87,15.98,24.863,15.963,24.855"/>
<path fill="#A72D24" d="M16.01,24.878l-3.322-3.29c0.017,0.003,0.036,0.011,0.051,0.017l3.321,3.293
C16.044,24.89,16.028,24.886,16.01,24.878"/>
<path fill="#AB3125" d="M16.06,24.897l-3.321-3.293c0.017,0.005,0.034,0.012,0.051,0.016l3.323,3.292
C16.094,24.908,16.077,24.901,16.06,24.897"/>
<path fill="#AE3125" d="M16.113,24.912l-3.323-3.292c0.015,0.005,0.034,0.008,0.053,0.012l3.32,3.291
C16.146,24.92,16.128,24.915,16.113,24.912"/>
<path fill="#B13126" d="M16.164,24.923l-3.32-3.291c0.017,0.002,0.034,0.005,0.054,0.007l3.323,3.292
C16.204,24.931,16.181,24.93,16.164,24.923"/>
<path fill="#B63327" d="M16.221,24.931l-3.323-3.292c0.02,0.004,0.041,0.004,0.06,0.005l3.323,3.294
C16.258,24.938,16.242,24.936,16.221,24.931"/>
<path fill="#B63627" d="M16.28,24.938l-3.323-3.294c0.021,0.001,0.045,0.001,0.066,0.001l3.324,3.293
C16.325,24.938,16.304,24.938,16.28,24.938"/>
<path fill="#BB3727" d="M16.349,24.938l-3.324-3.293c0.013-0.002,0.027-0.002,0.041-0.004l3.32,3.295
C16.372,24.938,16.359,24.938,16.349,24.938"/>
</g>
</g>
</g>
<g enable-background="new ">
<g>
<defs>
<path id="SVGID_6_" d="M10.944,29.924l-3.323-3.293c-0.265-0.261-0.425-0.629-0.425-1.044l3.324,3.289
C10.521,29.296,10.679,29.658,10.944,29.924z"/>
</defs>
<clipPath id="SVGID_7_">
<use xlink:href="#SVGID_6_" overflow="visible"/>
</clipPath>
<g clip-path="url(#SVGID_7_)" enable-background="new ">
<path fill="#82211A" d="M10.944,29.924l-3.323-3.293c-0.237-0.235-0.392-0.557-0.419-0.921l3.322,3.294
C10.553,29.369,10.707,29.688,10.944,29.924"/>
<path fill="#87241B" d="M10.524,29.004L7.202,25.71c-0.004-0.039-0.004-0.083-0.006-0.123l3.324,3.289
C10.521,28.92,10.523,28.96,10.524,29.004"/>
</g>
</g>
</g>
<g>
<path fill="#D83E27" d="M34.624,21.341l-0.008,5.421c-0.002,0.879-0.716,1.656-1.601,1.734l-20.903,1.836
c-0.881,0.078-1.596-0.576-1.592-1.456l0.011-5.421l5.024-0.443l-0.002,1.162c0,0.461,0.372,0.801,0.833,0.762l12.26-1.088
c0.459-0.042,0.952-0.445,0.956-0.908l0.001-1.158L34.624,21.341z"/>
</g>
<g>
<g>
<polygon fill="#8A241C" points="10.531,23.455 7.209,20.163 12.234,19.72 15.555,23.012 "/>
</g>
<g>
<polygon fill="#8A241C" points="10.531,23.455 7.209,20.163 12.234,19.72 15.555,23.012 "/>
</g>
</g>
<g>
<polygon fill="#8A241C" points="10.521,28.876 7.196,25.587 7.209,20.163 10.531,23.455 "/>
</g>
</g>
<g enable-background="new ">
<g>
<g>
<polygon fill="#E6584F" points="34.596,12.192 34.626,20.171 29.603,20.612 29.573,12.632 "/>
</g>
<g>
<polygon fill="#E2493C" points="34.596,12.192 34.626,20.171 29.603,20.612 29.573,12.632 "/>
</g>
</g>
<g>
<polygon fill="#8A241C" points="29.603,20.612 26.284,17.318 26.25,9.337 29.573,12.632 "/>
</g>
<g>
<g>
<polygon fill="#8A241C" points="29.573,12.632 26.25,9.337 31.274,8.898 34.596,12.192 "/>
</g>
<g>
<polygon fill="#8A241C" points="29.573,12.632 26.25,9.337 31.274,8.898 34.596,12.192 "/>
</g>
</g>
</g>
<g enable-background="new ">
<g>
<g>
<polygon fill="#E6584F" points="15.526,13.863 15.559,21.845 10.533,22.285 10.499,14.306 "/>
</g>
<g>
<polygon fill="#E2493C" points="15.526,13.863 15.559,21.845 10.533,22.285 10.499,14.306 "/>
</g>
</g>
<g>
<polygon fill="#8A241C" points="10.533,22.285 7.21,18.992 7.179,11.015 10.499,14.306 "/>
</g>
<g>
<polygon fill="#8A241C" points="10.499,14.306 7.179,11.015 12.204,10.573 15.526,13.863 "/>
</g>
</g>
</g>
<g>
<g enable-background="new ">
<g>
<polygon fill="#8A241C" points="29.598,11.441 26.273,8.151 26.278,7.148 29.601,10.441 "/>
</g>
<g enable-background="new ">
<g>
<defs>
<path id="SVGID_8_" d="M26.055,6.599c1.108,1.098,2.214,2.196,3.32,3.294c0.14,0.137,0.225,0.329,0.225,0.548
l-3.323-3.293C26.278,6.928,26.192,6.737,26.055,6.599z"/>
</defs>
<clipPath id="SVGID_9_">
<use xlink:href="#SVGID_8_" overflow="visible"/>
</clipPath>
<g clip-path="url(#SVGID_9_)" enable-background="new ">
<path fill="#87241B" d="M29.601,10.441l-3.323-3.293c0-0.023-0.004-0.042-0.007-0.065l3.325,3.293
C29.598,10.396,29.601,10.421,29.601,10.441"/>
<path fill="#82211A" d="M29.596,10.376l-3.325-3.293c-0.012-0.193-0.091-0.362-0.216-0.484l3.32,3.293
C29.5,10.016,29.581,10.184,29.596,10.376"/>
</g>
</g>
</g>
<g enable-background="new ">
<g>
<g>
<path id="SVGID_16_" fill="#C33A28" d="M30.891,1.404c0.223,0.216,0.445,0.437,0.663,0.655
c0.888,0.879,1.774,1.757,2.66,2.634c-0.292-0.287-0.706-0.445-1.168-0.409l-3.323-3.291
C30.185,0.953,30.602,1.112,30.891,1.404z"/>
</g>
<g>
<defs>
<path id="SVGID_10_" d="M30.891,1.404c0.223,0.216,0.445,0.437,0.663,0.655c0.888,0.879,1.774,1.757,2.66,2.634
c-0.292-0.287-0.706-0.445-1.168-0.409l-3.323-3.291C30.185,0.953,30.602,1.112,30.891,1.404z"/>
</defs>
<clipPath id="SVGID_11_">
<use xlink:href="#SVGID_10_" overflow="visible"/>
</clipPath>
<g clip-path="url(#SVGID_11_)">
<path fill="#C33A28" d="M29.722,0.993l3.323,3.292c0.021,0,0.044-0.003,0.068-0.003L29.791,0.99
C29.769,0.99,29.746,0.991,29.722,0.993z"/>
<path fill="#C33A28" d="M29.791,0.99l3.323,3.292c0.042-0.003,0.085-0.003,0.126-0.001l-3.32-3.291
C29.878,0.986,29.833,0.986,29.791,0.99z"/>
<path fill="#C33A28" d="M29.919,0.99l3.32,3.291c0.041,0.001,0.081,0.004,0.118,0.01l-3.323-3.293
C29.996,0.992,29.96,0.99,29.919,0.99z"/>
<path fill="#C33A28" d="M30.035,0.998l3.323,3.293c0.036,0.004,0.072,0.009,0.106,0.016l-3.323-3.295
C30.107,1.007,30.071,1,30.035,0.998z"/>
<path fill="#C33A28" d="M30.142,1.012l3.323,3.295c0.034,0.003,0.071,0.012,0.103,0.021l-3.323-3.29
C30.21,1.028,30.178,1.021,30.142,1.012z"/>
<path fill="#C33A28" d="M30.245,1.037l3.323,3.29c0.031,0.011,0.063,0.019,0.096,0.03l-3.322-3.292
C30.308,1.055,30.278,1.043,30.245,1.037z"/>
<path fill="#C33A28" d="M30.341,1.065l3.322,3.292c0.033,0.01,0.064,0.022,0.097,0.036l-3.322-3.292
C30.405,1.088,30.373,1.075,30.341,1.065z"/>
<path fill="#C33A28" d="M30.438,1.101l3.322,3.292c0.034,0.014,0.062,0.027,0.095,0.045l-3.323-3.295
C30.501,1.129,30.469,1.112,30.438,1.101z"/>
<path fill="#C33A28" d="M30.531,1.143l3.323,3.295c0.032,0.015,0.063,0.033,0.096,0.051l-3.325-3.294
C30.595,1.18,30.563,1.162,30.531,1.143z"/>
<path fill="#C33A28" d="M30.625,1.194l3.325,3.295c0.032,0.02,0.064,0.042,0.097,0.064l-3.324-3.292
C30.694,1.238,30.659,1.217,30.625,1.194z"/>
<path fill="#C33A28" d="M30.723,1.262l3.324,3.291c0.036,0.027,0.068,0.052,0.1,0.078l-3.32-3.289
C30.792,1.312,30.761,1.284,30.723,1.262z"/>
<path fill="#C33A28" d="M30.891,1.404c-0.021-0.024-0.043-0.044-0.064-0.061l3.32,3.289
c0.026,0.024,0.045,0.042,0.067,0.062L30.891,1.404z"/>
</g>
</g>
</g>
</g>
<g>
<polygon fill="#8A241C" points="10.527,13.104 7.204,9.811 7.219,4.55 10.542,7.84 "/>
</g>
<g>
<polygon fill="#C33A28" points="12.14,6.109 8.817,2.816 29.722,0.993 33.045,4.285 "/>
</g>
<g>
<g>
<path fill="#E6584F" d="M12.14,6.109l20.905-1.825c0.881-0.073,1.594,0.575,1.591,1.459l-0.016,5.261l-5.022,0.438
l0.002-1c0-0.459-0.371-0.8-0.833-0.76l-12.379,1.077c-0.458,0.041-0.834,0.447-0.834,0.908l-0.002,0.998l-5.025,0.439
l0.014-5.263C10.544,6.961,11.261,6.187,12.14,6.109z"/>
</g>
<g>
<path fill="#E6584F" d="M12.14,6.109l20.905-1.825c0.881-0.073,1.594,0.575,1.591,1.459l-0.016,5.261l-5.022,0.438
l0.002-1c0-0.459-0.371-0.8-0.833-0.76l-12.379,1.077c-0.458,0.041-0.834,0.447-0.834,0.908l-0.002,0.998l-5.025,0.439
l0.014-5.263C10.544,6.961,11.261,6.187,12.14,6.109z"/>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

@ -0,0 +1,286 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 16.0.4, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="59.37px" height="54.166px" viewBox="0 0 59.37 54.166" enable-background="new 0 0 59.37 54.166" xml:space="preserve">
<g>
<path fill="#6D6D6D" d="M6.49,44.841c0,3.587-1.669,4.795-3.089,4.795c-1.668,0-3.011-1.515-3.011-4.774
c0-3.396,1.515-4.815,3.107-4.815C5.146,40.046,6.49,41.6,6.49,44.841z M1.867,44.841c0,1.535,0.268,3.625,1.611,3.625
c1.266,0,1.515-2.186,1.515-3.625c0-1.419-0.249-3.606-1.554-3.606C2.117,41.234,1.867,43.422,1.867,44.841z"/>
<path fill="#6D6D6D" d="M8.12,43.096c0-1.419-0.058-2.244-0.076-2.896h1.322l0.077,1.189h0.038
c0.499-0.997,1.228-1.343,1.957-1.343c1.611,0,2.686,1.727,2.686,4.776c0,3.433-1.42,4.813-2.878,4.813
c-0.862,0-1.362-0.557-1.611-1.072H9.598v4.603H8.12V43.096z M9.598,46.069c0,0.288,0,0.556,0.057,0.767
c0.288,1.324,0.959,1.573,1.362,1.573c1.228,0,1.611-1.688,1.611-3.568c0-1.917-0.46-3.529-1.63-3.529
c-0.671,0-1.266,0.845-1.362,1.689c-0.038,0.229-0.038,0.459-0.038,0.708V46.069z"/>
<path fill="#6D6D6D" d="M16.828,44.976c0.019,2.84,1.132,3.452,2.206,3.452c0.633,0,1.17-0.153,1.535-0.364l0.23,1.093
c-0.518,0.288-1.305,0.441-2.034,0.441c-2.224,0-3.376-1.822-3.376-4.66c0-3.012,1.266-4.892,3.126-4.892
c1.9,0,2.648,1.995,2.648,4.104c0,0.346,0,0.595-0.019,0.825H16.828z M19.744,43.882c0.039-1.859-0.672-2.685-1.381-2.685
c-0.958,0-1.457,1.418-1.516,2.685H19.744z"/>
<path fill="#6D6D6D" d="M22.754,42.598c0-1.095-0.057-1.649-0.077-2.398h1.287l0.076,1.112h0.038
c0.403-0.748,1.15-1.266,2.13-1.266c1.285,0,2.244,0.96,2.244,3.204v6.232h-1.478v-5.984c0-1.093-0.21-2.206-1.285-2.206
c-0.615,0-1.208,0.518-1.401,1.516c-0.037,0.23-0.057,0.519-0.057,0.824v5.851h-1.478V42.598z"/>
<path fill="#CE3427" d="M30.273,47.948c0.326,0.212,0.902,0.479,1.497,0.479c0.844,0,1.361-0.518,1.361-1.343
c0-0.709-0.25-1.188-1.189-1.821c-1.208-0.786-1.86-1.573-1.86-2.648c0-1.495,1.113-2.569,2.552-2.569
c0.729,0,1.284,0.249,1.669,0.48l-0.404,1.111c-0.346-0.229-0.747-0.403-1.228-0.403c-0.806,0-1.207,0.575-1.207,1.171
c0,0.633,0.229,0.979,1.15,1.611c1.073,0.69,1.917,1.535,1.917,2.819c0,1.861-1.266,2.762-2.781,2.762
c-0.69,0-1.438-0.21-1.841-0.536L30.273,47.948z"/>
<path fill="#CE3427" d="M37.869,37.744v2.455h1.782v1.132h-1.782v5.505c0,1.208,0.441,1.535,0.977,1.535
c0.231,0,0.424-0.021,0.597-0.06l0.057,1.133c-0.268,0.096-0.613,0.153-1.092,0.153c-0.578,0-1.094-0.153-1.459-0.556
c-0.364-0.422-0.557-1.057-0.557-2.34v-5.371H35.26v-1.132h1.132v-2.033L37.869,37.744z"/>
<path fill="#CE3427" d="M44.619,49.482l-0.094-0.978h-0.061c-0.401,0.709-1.054,1.131-1.839,1.131
c-1.248,0-2.207-1.054-2.207-2.646c0-2.322,1.861-3.358,3.952-3.376v-0.288c0-1.247-0.308-2.109-1.479-2.109
c-0.574,0-1.094,0.191-1.533,0.479l-0.327-1.036c0.386-0.288,1.248-0.614,2.169-0.614c1.86,0,2.666,1.229,2.666,3.317v4.01
c0,0.711,0,1.515,0.097,2.109H44.619z M44.409,44.688c-0.766,0-2.553,0.134-2.553,2.147c0,1.208,0.616,1.65,1.134,1.65
c0.653,0,1.207-0.479,1.381-1.401c0.038-0.172,0.038-0.363,0.038-0.518V44.688z"/>
<path fill="#CE3427" d="M52.465,49.253c-0.327,0.191-0.882,0.345-1.534,0.345c-2.033,0-3.395-1.631-3.395-4.699
c0-2.665,1.341-4.833,3.663-4.833c0.498,0,1.037,0.134,1.304,0.287l-0.288,1.209c-0.19-0.096-0.575-0.25-1.055-0.25
c-1.477,0-2.146,1.765-2.146,3.587c0,2.169,0.824,3.473,2.186,3.473c0.403,0,0.729-0.097,1.073-0.25L52.465,49.253z"/>
<path fill="#CE3427" d="M55.189,44.516h0.037c0.173-0.365,0.326-0.729,0.498-1.036l1.843-3.28h1.592l-2.455,3.914l2.666,5.369
h-1.649l-2.014-4.373l-0.518,0.864v3.509H53.71V36.21h1.479V44.516z"/>
</g>
<g>
<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="133.168" y1="-304.7446" x2="150.967" y2="-306.0438" gradientTransform="matrix(0.711 -0.7032 -0.7032 -0.711 -297.5767 -90.3491)">
<stop offset="0" style="stop-color:#000000;stop-opacity:0"/>
<stop offset="1" style="stop-color:#010201"/>
</linearGradient>
<path fill="url(#SVGID_1_)" d="M8.945,25.686c-0.629-0.635-0.624-0.852,0.013-1.481l7.208,0.403
c0.635-0.628,1.713,0.25,2.342,0.888l4.304,3.166c0.629,0.637,2.95,2.234,2.314,2.863l-4.121,2.496
c-0.636,0.63-3.079,0.73-3.708,0.096L8.945,25.686z"/>
<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="304.4561" y1="-328.6318" x2="306.1114" y2="-327.1929" gradientTransform="matrix(1 0 0 -1 -268.5 -303.5)">
<stop offset="0" style="stop-color:#C33A28"/>
<stop offset="0.8825" style="stop-color:#8A241C"/>
</linearGradient>
<path fill="url(#SVGID_2_)" d="M34.308,23.235l3.821,3.792c0.916-0.147,1.066-0.609,0.958-1.636l-3.81-3.782l0,0
C35.108,22.911,35.16,23.195,34.308,23.235L34.308,23.235z"/>
<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="283.5645" y1="-310.8936" x2="285.5962" y2="-307.3745" gradientTransform="matrix(1 0 0 -1 -268.5 -303.5)">
<stop offset="0" style="stop-color:#8A241C"/>
<stop offset="1" style="stop-color:#C33A28"/>
</linearGradient>
<path fill="url(#SVGID_3_)" d="M17.157,8.602l-3.824-3.788c0-0.854,0.612-1.837,1.913-2.007l3.781,3.812l0,0
C17.726,6.788,17.198,7.75,17.157,8.602L17.157,8.602z"/>
<g>
<g>
<g>
<g>
<g>
<g>
<g enable-background="new ">
<g>
<g>
<polygon fill="#8A241C" points="39.098,24.648 35.271,20.857 41.053,20.349 44.878,24.142 "/>
</g>
<g>
<polygon fill="#8A241C" points="39.098,24.648 35.271,20.857 41.053,20.349 44.878,24.142 "/>
</g>
</g>
<g>
<polygon fill="#8A241C" points="39.096,25.981 35.271,22.19 35.271,20.857 39.098,24.648 "/>
</g>
<g>
<polygon fill="#C33A28" points="23.883,28.279 20.062,24.486 34.308,23.235 38.129,27.027 "/>
</g>
<g enable-background="new ">
<g>
<defs>
<path id="SVGID_4_" d="M23.184,28.034c-0.059-0.058-0.135-0.131-0.194-0.191c-1.209-1.201-2.421-2.399-3.632-3.602
c0.175,0.174,0.424,0.269,0.705,0.245l3.821,3.793C23.605,28.305,23.358,28.204,23.184,28.034z"/>
</defs>
<clipPath id="SVGID_5_">
<use xlink:href="#SVGID_4_" overflow="visible"/>
</clipPath>
<g clip-path="url(#SVGID_5_)" enable-background="new ">
<path fill="#942820" d="M23.184,28.034l-3.827-3.792c0.012,0.014,0.027,0.023,0.04,0.034l3.825,3.793
C23.206,28.056,23.196,28.047,23.184,28.034"/>
<path fill="#972920" d="M23.221,28.069l-3.825-3.793c0.02,0.021,0.042,0.037,0.061,0.053l3.824,3.79
C23.26,28.104,23.241,28.084,23.221,28.069"/>
<path fill="#9A2C21" d="M23.282,28.118l-3.824-3.79c0.017,0.013,0.037,0.024,0.057,0.035l3.825,3.791
C23.322,28.144,23.302,28.131,23.282,28.118"/>
<path fill="#9E2D21" d="M23.339,28.154l-3.825-3.791c0.02,0.014,0.04,0.024,0.059,0.032l3.825,3.792
C23.378,28.179,23.358,28.168,23.339,28.154"/>
<path fill="#A22C23" d="M23.398,28.188l-3.825-3.792c0.018,0.01,0.037,0.019,0.055,0.03l3.824,3.788
C23.435,28.204,23.418,28.196,23.398,28.188"/>
<path fill="#A72D24" d="M23.452,28.214l-3.824-3.788c0.02,0.004,0.042,0.013,0.059,0.019l3.823,3.791
C23.491,28.227,23.472,28.222,23.452,28.214"/>
<path fill="#AB3125" d="M23.509,28.235l-3.823-3.791c0.02,0.006,0.04,0.014,0.059,0.018l3.825,3.789
C23.549,28.248,23.529,28.239,23.509,28.235"/>
<path fill="#AE3125" d="M23.57,28.252l-3.825-3.789c0.017,0.006,0.04,0.009,0.062,0.013l3.822,3.789
C23.607,28.261,23.587,28.256,23.57,28.252"/>
<path fill="#B13126" d="M23.629,28.265l-3.822-3.789c0.02,0.003,0.04,0.006,0.062,0.008l3.826,3.79
C23.675,28.274,23.648,28.272,23.629,28.265"/>
<path fill="#B63327" d="M23.694,28.274l-3.826-3.79c0.023,0.005,0.047,0.005,0.069,0.006l3.825,3.791
C23.737,28.281,23.718,28.279,23.694,28.274"/>
<path fill="#B63627" d="M23.763,28.281l-3.825-3.791c0.025,0.001,0.052,0.001,0.076,0.001l3.827,3.79
C23.814,28.281,23.79,28.281,23.763,28.281"/>
<path fill="#BB3727" d="M23.841,28.281l-3.827-3.79c0.015-0.002,0.032-0.002,0.047-0.005l3.821,3.793
C23.868,28.281,23.853,28.281,23.841,28.281"/>
</g>
</g>
</g>
<g enable-background="new ">
<g>
<defs>
<path id="SVGID_6_" d="M17.621,34.021l-3.825-3.79c-0.305-0.3-0.489-0.724-0.489-1.202l3.826,3.786
C17.133,33.298,17.315,33.716,17.621,34.021z"/>
</defs>
<clipPath id="SVGID_7_">
<use xlink:href="#SVGID_6_" overflow="visible"/>
</clipPath>
<g clip-path="url(#SVGID_7_)" enable-background="new ">
<path fill="#82211A" d="M17.621,34.021l-3.825-3.79c-0.273-0.271-0.45-0.641-0.483-1.061l3.824,3.792
C17.17,33.383,17.347,33.749,17.621,34.021"/>
<path fill="#87241B" d="M17.137,32.962l-3.824-3.792c-0.004-0.044-0.004-0.095-0.006-0.142l3.826,3.786
C17.133,32.866,17.136,32.911,17.137,32.962"/>
</g>
</g>
</g>
<g>
<path fill="#D83E27" d="M44.878,24.142l-0.011,6.239c-0.003,1.013-0.824,1.906-1.842,1.996l-24.061,2.114
c-1.014,0.089-1.837-0.663-1.832-1.677l0.013-6.24l5.783-0.51l-0.003,1.337c0,0.531,0.428,0.922,0.958,0.877l14.112-1.252
c0.527-0.048,1.095-0.513,1.102-1.046l0.001-1.333L44.878,24.142z"/>
</g>
<g>
<g>
<polygon fill="#8A241C" points="17.146,26.575 13.321,22.786 19.105,22.275 22.928,26.065 "/>
</g>
<g>
<polygon fill="#8A241C" points="17.146,26.575 13.321,22.786 19.105,22.275 22.928,26.065 "/>
</g>
</g>
<g>
<polygon fill="#8A241C" points="17.133,32.814 13.307,29.028 13.321,22.786 17.146,26.575 "/>
</g>
</g>
<g enable-background="new ">
<g>
<g>
<polygon fill="#E6584F" points="44.844,13.61 44.881,22.795 39.098,23.303 39.063,14.118 "/>
</g>
<g>
<polygon fill="#E2493C" points="44.844,13.61 44.881,22.795 39.098,23.303 39.063,14.118 "/>
</g>
</g>
<g>
<polygon fill="#8A241C" points="39.098,23.303 35.277,19.512 35.238,10.324 39.063,14.118 "/>
</g>
<g>
<g>
<polygon fill="#8A241C" points="39.063,14.118 35.238,10.324 41.021,9.82 44.844,13.61 "/>
</g>
<g>
<polygon fill="#8A241C" points="39.063,14.118 35.238,10.324 41.021,9.82 44.844,13.61 "/>
</g>
</g>
</g>
<g enable-background="new ">
<g>
<g>
<polygon fill="#E6584F" points="22.895,15.535 22.933,24.722 17.147,25.229 17.108,16.044 "/>
</g>
<g>
<polygon fill="#E2493C" points="22.895,15.535 22.933,24.722 17.147,25.229 17.108,16.044 "/>
</g>
</g>
<g>
<polygon fill="#8A241C" points="17.147,25.229 13.323,21.438 13.286,12.256 17.108,16.044 "/>
</g>
<g>
<polygon fill="#8A241C" points="17.108,16.044 13.286,12.256 19.071,11.747 22.895,15.535 "/>
</g>
</g>
</g>
<g>
<g enable-background="new ">
<g>
<polygon fill="#8A241C" points="39.091,12.747 35.265,8.959 35.271,7.805 39.096,11.595 "/>
</g>
<g enable-background="new ">
<g>
<defs>
<path id="SVGID_8_" d="M35.014,7.173c1.277,1.264,2.549,2.527,3.821,3.792c0.162,0.157,0.261,0.378,0.261,0.631
l-3.825-3.79C35.271,7.552,35.172,7.332,35.014,7.173z"/>
</defs>
<clipPath id="SVGID_9_">
<use xlink:href="#SVGID_8_" overflow="visible"/>
</clipPath>
<g clip-path="url(#SVGID_9_)" enable-background="new ">
<path fill="#87241B" d="M39.096,11.595l-3.825-3.79c0-0.026-0.006-0.048-0.008-0.075l3.826,3.791
C39.091,11.543,39.096,11.572,39.096,11.595"/>
<path fill="#82211A" d="M39.089,11.521L35.263,7.73c-0.014-0.222-0.104-0.416-0.249-0.557l3.821,3.791
C38.979,11.106,39.072,11.299,39.089,11.521"/>
</g>
</g>
</g>
<g enable-background="new ">
<g>
<g>
<path id="SVGID_16_" fill="#C33A28" d="M40.58,1.193c0.256,0.249,0.513,0.502,0.763,0.753
c1.022,1.012,2.043,2.023,3.062,3.032c-0.336-0.33-0.813-0.513-1.345-0.47l-3.824-3.788
C39.767,0.674,40.247,0.857,40.58,1.193z"/>
</g>
<g>
<defs>
<path id="SVGID_10_" d="M40.58,1.193c0.256,0.249,0.513,0.502,0.763,0.753c1.022,1.012,2.043,2.023,3.062,3.032
c-0.336-0.33-0.813-0.513-1.345-0.47l-3.824-3.788C39.767,0.674,40.247,0.857,40.58,1.193z"/>
</defs>
<clipPath id="SVGID_11_">
<use xlink:href="#SVGID_10_" overflow="visible"/>
</clipPath>
<g clip-path="url(#SVGID_11_)">
<path fill="#C33A28" d="M39.236,0.721l3.824,3.789c0.023,0,0.051-0.004,0.077-0.004l-3.824-3.789
C39.289,0.716,39.262,0.718,39.236,0.721z"/>
<path fill="#C33A28" d="M39.313,0.716l3.824,3.789c0.05-0.004,0.1-0.004,0.146-0.001l-3.821-3.788
C39.415,0.713,39.363,0.713,39.313,0.716z"/>
<path fill="#C33A28" d="M39.463,0.716l3.821,3.788c0.046,0.001,0.093,0.004,0.135,0.011l-3.824-3.79
C39.551,0.719,39.509,0.716,39.463,0.716z"/>
<path fill="#C33A28" d="M39.595,0.726l3.824,3.79c0.043,0.005,0.083,0.01,0.124,0.019l-3.825-3.793
C39.679,0.736,39.637,0.729,39.595,0.726z"/>
<path fill="#C33A28" d="M39.718,0.742l3.825,3.793c0.038,0.004,0.08,0.014,0.118,0.023l-3.825-3.787
C39.797,0.761,39.76,0.752,39.718,0.742z"/>
<path fill="#C33A28" d="M39.836,0.771l3.825,3.787c0.036,0.012,0.072,0.021,0.11,0.034l-3.824-3.789
C39.909,0.792,39.875,0.778,39.836,0.771z"/>
<path fill="#C33A28" d="M39.947,0.804l3.824,3.789c0.037,0.012,0.073,0.026,0.111,0.041l-3.824-3.789
C40.02,0.83,39.984,0.815,39.947,0.804z"/>
<path fill="#C33A28" d="M40.059,0.844l3.824,3.789c0.039,0.016,0.071,0.031,0.108,0.052l-3.825-3.792
C40.131,0.877,40.095,0.857,40.059,0.844z"/>
<path fill="#C33A28" d="M40.166,0.893l3.824,3.792c0.039,0.017,0.074,0.038,0.111,0.058l-3.827-3.791
C40.239,0.936,40.202,0.914,40.166,0.893z"/>
<path fill="#C33A28" d="M40.274,0.952l3.827,3.792c0.037,0.022,0.073,0.048,0.111,0.074L40.387,1.03
C40.353,1.002,40.313,0.979,40.274,0.952z"/>
<path fill="#C33A28" d="M40.387,1.03l3.826,3.789c0.041,0.031,0.079,0.06,0.114,0.09l-3.822-3.785
C40.467,1.087,40.431,1.055,40.387,1.03z"/>
<path fill="#C33A28" d="M40.58,1.193c-0.025-0.028-0.05-0.051-0.075-0.07l3.822,3.785
c0.029,0.027,0.052,0.048,0.077,0.071L40.58,1.193z"/>
</g>
</g>
</g>
</g>
<g>
<polygon fill="#8A241C" points="17.141,14.66 13.316,10.87 13.333,4.814 17.157,8.602 "/>
</g>
<g>
<polygon fill="#C33A28" points="18.998,6.609 15.173,2.819 39.236,0.721 43.061,4.509 "/>
</g>
<g>
<g>
<path fill="#E6584F" d="M18.998,6.609l24.063-2.1c1.014-0.084,1.833,0.662,1.831,1.679l-0.02,6.055l-5.781,0.503
l0.005-1.151c0-0.529-0.427-0.921-0.959-0.875l-14.249,1.24c-0.527,0.047-0.96,0.515-0.96,1.045l-0.003,1.149
l-5.784,0.505l0.016-6.058C17.16,7.59,17.985,6.699,18.998,6.609z"/>
</g>
<g>
<path fill="#E6584F" d="M18.998,6.609l24.063-2.1c1.014-0.084,1.833,0.662,1.831,1.679l-0.02,6.055l-5.781,0.503
l0.005-1.151c0-0.529-0.427-0.921-0.959-0.875l-14.249,1.24c-0.527,0.047-0.96,0.515-0.96,1.045l-0.003,1.149
l-5.784,0.505l0.016-6.058C17.16,7.59,17.985,6.699,18.998,6.609z"/>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 278 B

6
www/static/common/js/bootstrap.min.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,20 @@
{
"images": [
{
"image": "superuser1.png",
"caption": "Jesse Proudman"
},
{
"image": "superuser2.png",
"caption": "Narayan Desai"
},
{
"image": "superuser3.png",
"caption": "Elissa Murphy"
},
{
"image": "superuser4.png",
"caption": "Tim Bell"
}
]
}

View File

@ -0,0 +1,89 @@
// Toggle main sections
$(".docs-sidebar-section-title").click(function () {
$('.docs-sidebar-section').not(this).closest('.docs-sidebar-section').removeClass('active');
$(this).closest('.docs-sidebar-section').toggleClass('active');
event.preventDefault();
});
// Toggle 1st sub-sections
$(".docs-sidebar-section ol lh").click(function () {
$('.docs-sidebar-section ol').not(this).closest('.docs-sidebar-section ol').removeClass('active');
$(this).closest('.docs-sidebar-section ol').toggleClass('active');
if ($('.docs-has-sub').hasClass('active')) {
$(this).closest('.docs-sidebar-section ol li').addClass('open');
}
event.preventDefault();
});
// Toggle 2nd sub-sections
$(".docs-sidebar-section ol > li > a").click(function () {
$('.docs-sidebar-section ol li').not(this).removeClass('active').removeClass('open');
$(this).closest('.docs-sidebar-section ol li').toggleClass('active');
if ($('.docs-has-sub').hasClass('active')) {
$(this).closest('.docs-sidebar-section ol li').addClass('open');
}
event.preventDefault();
});
$('ol > li:has(ul)').addClass('docs-has-sub');
// Needed for code and pre
$(function() {
var pre = document.getElementsByTagName('pre'),
pl = pre.length;
for (var i = 0; i < pl; i++) {
pre[i].innerHTML = '<span class="line-number"></span>' + pre[i].innerHTML + '<span class="cl"></span>';
var num = pre[i].innerHTML.split(/\n/).length;
for (var j = 0; j < num; j++) {
var line_num = pre[i].getElementsByTagName('span')[0];
line_num.innerHTML += '<span aria-hidden="true">' + (j + 1) + '</span>';
}
}
});
// webui popover
$(document).ready(function() {
function checkWidth() {
var windowSize = $(window).width();
if (windowSize <= 767) {
$('.gloss').webuiPopover({placement:'auto',trigger:'click'});
}
else if (windowSize >= 768) {
$('.gloss').webuiPopover({placement:'auto',trigger:'hover'});
}
}
// Execute on load
checkWidth();
// Bind event listener
$(window).resize(checkWidth);
});
// Bootstrap stuff
$('.docs-actions i').tooltip();
$('.docs-sidebar-home').tooltip();
// Hide/Toggle definitions
$("#toggle-definitions").click(function () {
$(this).toggleClass('docs-info-off');
if ($('.gloss').hasClass('on')) {
$('.gloss').removeClass('on').addClass('off').webuiPopover('destroy');
} else if ($('.gloss').hasClass('off')) {
$('.gloss').removeClass('off').addClass('on').webuiPopover();
}
});
// Smooth scroll
$('a').click(function(){
$('html, body').animate({
scrollTop: $( $.attr(this, 'href') ).offset().top
}, 500);
return false;
});

4
www/static/common/js/jquery-1.11.0.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,65 @@
// Open header search bar
$(function() {
$(".search-icon").click(function() {
$(".navbar-main").toggleClass("show");
$(".search-container").toggleClass("show");
$(".search-icon").toggleClass("show");
$('#gsc-i-id1').focus();
});
});
// Close header search bar
$(function() {
$(".close-search").click(function() {
$(".navbar-main").toggleClass("show");
$(".search-container").toggleClass("show");
$(".search-icon").toggleClass("show");
});
});
// Open header drop downs on hover
jQuery(document).ready(function(){
if (jQuery(window).width() > 767) {
$('ul.navbar-main li ul.dropdown-menu').addClass('dropdown-hover');
$('ul.navbar-main li').hover(function() {
$(this).find('.dropdown-hover').stop(true, true).delay(400).fadeIn(100);
}, function() {
$(this).find('.dropdown-hover').stop(true, true).delay(100).fadeOut(200);
});
} else {
$('ul.navbar-main li ul.dropdown-menu').removeClass('dropdown-hover');
}
});
jQuery(window).resize(function () {
if (jQuery(window).width() > 767) {
$('ul.navbar-main li ul.dropdown-menu').addClass('dropdown-hover');
$('ul.navbar-main li').hover(function() {
$(this).find('.dropdown-hover').stop(true, true).delay(400).fadeIn(100);
}, function() {
$(this).find('.dropdown-hover').stop(true, true).delay(100).fadeOut(200);
});
} else {
$('ul.navbar-main li ul.dropdown-menu').removeClass('dropdown-hover');
}
});
// Remove Search text in smaller browser windows
jQuery(document).ready(function(){
if (jQuery(window).width() < 1050) {
$('#search-label').text('');
} else {
$('#search-label').text('Search');
}
});
jQuery(window).resize(function () {
if (jQuery(window).width() < 1050) {
$('#search-label').text('');
} else {
$('#search-label').text('Search');
}
});
// Show placeholder text in Google Search
setTimeout( function() {
$(".gsc-input").attr("placeholder", "search openstack");
}, 1000 );

View File

@ -0,0 +1,434 @@
;(function ( $, window, document, undefined ) {
// Create the defaults once
var pluginName = 'webuiPopover';
var pluginClass = 'webui-popover';
var pluginType = 'webui.popover';
var defaults = {
placement:'auto',
width:'auto',
height:'auto',
trigger:'click',
style:'',
delay:300,
cache:true,
multi:false,
arrow:true,
title:'',
content:'',
closeable:false,
padding:true,
url:'',
type:'html',
template:'<div class="webui-popover">'+
'<div class="arrow"></div>'+
'<div class="webui-popover-inner">'+
'<a href="#" class="close">x</a>'+
'<h3 class="webui-popover-title"></h3>'+
'<div class="webui-popover-content"><i class="icon-refresh"></i> <p>&nbsp;</p></div>'+
'</div>'+
'</div>'
};
// The actual plugin constructor
function WebuiPopover ( element, options ) {
this.$element = $(element);
this.options = $.extend( {}, defaults, options );
this._defaults = defaults;
this._name = pluginName;
this.init();
}
WebuiPopover.prototype = {
//init webui popover
init: function () {
//init the event handlers
if (this.options.trigger==='click'){
this.$element.off('click').on('click',$.proxy(this.toggle,this));
}else{
this.$element.off('mouseenter mouseleave')
.on('mouseenter',$.proxy(this.mouseenterHandler,this))
.on('mouseleave',$.proxy(this.mouseleaveHandler,this));
}
this._poped = false;
this._inited = true;
},
/* api methods and actions */
destroy:function(){
this.hide();
this.$element.data('plugin_'+pluginName,null);
this.$element.off();
if (this.$target){
this.$target.remove();
}
},
hide:function(event){
if (event){
event.preventDefault();
event.stopPropagation();
}
var e = $.Event('hide.' + pluginType);
this.$element.trigger(e);
if (this.$target){this.$target.removeClass('in').hide();}
this.$element.trigger('hidden.'+pluginType);
},
toggle:function(e){
if (e) {
e.preventDefault();
e.stopPropagation();
}
this[this.getTarget().hasClass('in') ? 'hide' : 'show']();
},
hideAll:function(){
$('div.webui-popover').not('.webui-popover-fixed').removeClass('in').hide();
},
/*core method ,show popover */
show:function(){
var
$target = this.getTarget().removeClass().addClass(pluginClass);
if (!this.options.multi){
this.hideAll();
}
// use cache by default, if not cache set, reInit the contents
if (!this.options.cache||!this._poped){
this.setTitle(this.getTitle());
if (!this.options.closeable){
$target.find('.close').off('click').remove();
}
if (!this.isAsync()){
this.setContent(this.getContent());
}else{
this.setContentASync(this.options.content);
this.displayContent();
return;
}
$target.show();
}
this.displayContent();
this.bindBodyEvents();
},
displayContent:function(){
var
//element postion
elementPos = this.getElementPosition(),
//target postion
$target = this.getTarget().removeClass().addClass(pluginClass),
//target content
$targetContent = this.getContentElement(),
//target Width
targetWidth = $target[0].offsetWidth,
//target Height
targetHeight = $target[0].offsetHeight,
//placement
placement = 'bottom',
e = $.Event('show.' + pluginType);
//if (this.hasContent()){
this.$element.trigger(e);
//}
if (this.options.width!=='auto') {$target.width(this.options.width);}
if (this.options.height!=='auto'){$targetContent.height(this.options.height);}
//init the popover and insert into the document body
if (!this.options.arrow){
$target.find('.arrow').remove();
}
$target.remove().css({ top: -1000, left: -1000, display: 'block' }).appendTo(document.body);
targetWidth = $target[0].offsetWidth;
targetHeight = $target[0].offsetHeight;
placement = this.getPlacement(elementPos,targetHeight);
this.initTargetEvents();
var postionInfo = this.getTargetPositin(elementPos,placement,targetWidth,targetHeight);
this.$target.css(postionInfo.position).addClass(placement).addClass('in');
if (this.options.type==='iframe'){
var $iframe = $target.find('iframe');
$iframe.width($target.width()).height($iframe.parent().height());
}
if (this.options.style){
this.$target.addClass(pluginClass+'-'+this.options.style);
}
if (!this.options.padding){
$targetContent.css('height',$targetContent.outerHeight());
this.$target.addClass('webui-no-padding');
}
if (!this.options.arrow){
this.$target.css({'margin':0});
}
if (this.options.arrow){
var $arrow = this.$target.find('.arrow');
$arrow.removeAttr('style');
if (postionInfo.arrowOffset){
$arrow.css(postionInfo.arrowOffset);
}
}
this._poped = true;
this.$element.trigger('shown.'+pluginType);
},
isTargetLoaded:function(){
return this.getTarget().find('i.glyphicon-refresh').length===0;
},
/*getter setters */
getTarget:function(){
if (!this.$target){
this.$target = $(this.options.template);
}
return this.$target;
},
getTitleElement:function(){
return this.getTarget().find('.'+pluginClass+'-title');
},
getContentElement:function(){
return this.getTarget().find('.'+pluginClass+'-content');
},
getTitle:function(){
return this.options.title||this.$element.attr('data-title')||this.$element.attr('title');
},
setTitle:function(title){
var $titleEl = this.getTitleElement();
if (title){
$titleEl.html(title);
}else{
$titleEl.remove();
}
},
hasContent:function () {
return this.getContent();
},
getContent:function(){
if (this.options.url){
if (this.options.type==='iframe'){
this.content = $('<iframe frameborder="0"></iframe>').attr('src',this.options.url);
}
}else if (!this.content){
var content='';
if ($.isFunction(this.options.content)){
content = this.options.content.apply(this.$element[0],arguments);
}else{
content = this.options.content;
}
this.content = this.$element.attr('data-content')||content;
}
return this.content;
},
setContent:function(content){
var $target = this.getTarget();
this.getContentElement().html(content);
this.$target = $target;
},
isAsync:function(){
return this.options.type==='async';
},
setContentASync:function(content){
var that = this;
$.ajax({
url:this.options.url,
type:'GET',
cache:this.options.cache,
success:function(data){
if (content&&$.isFunction(content)){
that.content = content.apply(that.$element[0],[data]);
}else{
that.content = data;
}
that.setContent(that.content);
var $targetContent = that.getContentElement();
$targetContent.removeAttr('style');
that.displayContent();
}
});
},
bindBodyEvents:function(){
$('body').off('keyup.webui-popover').on('keyup.webui-popover',$.proxy(this.escapeHandler,this));
$('body').off('click.webui-popover').on('click.webui-popover',$.proxy(this.bodyClickHandler,this));
},
/* event handlers */
mouseenterHandler:function(){
var self = this;
if (self._timeout){clearTimeout(self._timeout);}
if (!self.getTarget().is(':visible')){self.show();}
},
mouseleaveHandler:function(){
var self = this;
//key point, set the _timeout then use clearTimeout when mouse leave
self._timeout = setTimeout(function(){
self.hide();
},self.options.delay);
},
escapeHandler:function(e){
if (e.keyCode===27){
this.hideAll();
}
},
bodyClickHandler:function(){
this.hideAll();
},
targetClickHandler:function(e){
e.stopPropagation();
},
//reset and init the target events;
initTargetEvents:function(){
if (this.options.trigger!=='click'){
this.$target.off('mouseenter mouseleave')
.on('mouseenter',$.proxy(this.mouseenterHandler,this))
.on('mouseleave',$.proxy(this.mouseleaveHandler,this));
}
this.$target.find('.close').off('click').on('click', $.proxy(this.hide,this));
this.$target.off('click.webui-popover').on('click.webui-popover',$.proxy(this.targetClickHandler,this));
},
/* utils methods */
//caculate placement of the popover
getPlacement:function(pos,targetHeight){
var
placement,
de = document.documentElement,
db = document.body,
clientWidth = de.clientWidth,
clientHeight = de.clientHeight,
scrollTop = Math.max(db.scrollTop,de.scrollTop),
scrollLeft = Math.max(db.scrollLeft,de.scrollLeft),
pageX = Math.max(0,pos.left - scrollLeft),
pageY = Math.max(0,pos.top - scrollTop),
arrowSize = 20;
//if placement equals autocaculate the placement by element information;
if (typeof(this.options.placement)==='function'){
placement = this.options.placement.call(this, this.getTarget()[0], this.$element[0]);
}else{
placement = this.$element.data('placement')||this.options.placement;
}
if (placement==='auto'){
if (pageX<clientWidth/3){
if (pageY<clientHeight/3){
placement = 'bottom-right';
}else if (pageY<clientHeight*2/3){
placement = 'right';
}else{
placement = 'top-right';
}
//placement= pageY>targetHeight+arrowSize?'top-right':'bottom-right';
}else if (pageX<clientWidth*2/3){
if (pageY<clientHeight/3){
placement = 'bottom';
}else if (pageY<clientHeight*2/3){
placement = 'bottom';
}else{
placement = 'top';
}
}else{
placement = pageY>targetHeight+arrowSize?'top-left':'bottom-left';
if (pageY<clientHeight/3){
placement = 'bottom-left';
}else if (pageY<clientHeight*2/3){
placement = 'left';
}else{
placement = 'top-left';
}
}
}
return placement;
},
getElementPosition:function(){
return $.extend({},this.$element.offset(), {
width: this.$element[0].offsetWidth,
height: this.$element[0].offsetHeight
});
},
getTargetPositin:function(elementPos,placement,targetWidth,targetHeight){
var pos = elementPos,
elementW = this.$element.outerWidth(),
elementH = this.$element.outerHeight(),
position={},
arrowOffset=null,
arrowSize = this.options.arrow?28:0,
fixedW = elementW<arrowSize+10?arrowSize:0,
fixedH = elementH<arrowSize+10?arrowSize:0;
switch (placement) {
case 'bottom':
position = {top: pos.top + pos.height, left: pos.left + pos.width / 2 - targetWidth / 2};
break;
case 'top':
position = {top: pos.top - targetHeight, left: pos.left + pos.width / 2 - targetWidth / 2};
break;
case 'left':
position = {top: pos.top + pos.height / 2 - targetHeight / 2, left: pos.left - targetWidth};
break;
case 'right':
position = {top: pos.top + pos.height / 2 - targetHeight / 2, left: pos.left + pos.width};
break;
case 'top-right':
position = {top: pos.top - targetHeight, left: pos.left-fixedW};
arrowOffset = {left: elementW/2 + fixedW};
break;
case 'top-left':
position = {top: pos.top - targetHeight, left: pos.left -targetWidth +pos.width + fixedW};
arrowOffset = {left: targetWidth - elementW /2 -fixedW};
break;
case 'bottom-right':
position = {top: pos.top + pos.height, left: pos.left-fixedW};
arrowOffset = {left: elementW /2+fixedW};
break;
case 'bottom-left':
position = {top: pos.top + pos.height, left: pos.left -targetWidth +pos.width+fixedW};
arrowOffset = {left: targetWidth- elementW /2 - fixedW};
break;
case 'right-top':
position = {top: pos.top -targetHeight + pos.height + fixedH, left: pos.left + pos.width};
arrowOffset = {top: targetHeight - elementH/2 -fixedH};
break;
case 'right-bottom':
position = {top: pos.top - fixedH, left: pos.left + pos.width};
arrowOffset = {top: elementH /2 +fixedH };
break;
case 'left-top':
position = {top: pos.top -targetHeight + pos.height+fixedH, left: pos.left - targetWidth};
arrowOffset = {top: targetHeight - elementH/2 - fixedH};
break;
case 'left-bottom':
position = {top: pos.top , left: pos.left -targetWidth};
arrowOffset = {top: elementH /2 };
break;
}
return {position:position,arrowOffset:arrowOffset};
}
};
$.fn[ pluginName ] = function ( options ) {
return this.each(function() {
var webuiPopover = $.data( this, 'plugin_' + pluginName );
if (!webuiPopover) {
if (!options){
webuiPopover = new WebuiPopover( this, null);
}else if (typeof options ==='string'){
if (options!=='destroy'){
webuiPopover = new WebuiPopover( this, null );
webuiPopover[options]();
}
}else if (typeof options ==='object'){
webuiPopover = new WebuiPopover( this, options );
}
$.data( this, 'plugin_' + pluginName, webuiPopover);
}else{
if (options==='destroy'){
webuiPopover.destroy();
}else if (typeof options ==='string'){
webuiPopover[options]();
}
}
});
};
})( jQuery, window, document );

BIN
www/static/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

38
www/templates/base.tmpl Normal file
View File

@ -0,0 +1,38 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type"/>
{% block header %}{% endblock %}
<title>OpenStack Docs: {% block pagetitle %}{% endblock %}</title>
<meta charset="utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<!-- CSS in: {{ cssdir }}-->
{% include 'templates/css.tmpl' %}
<!-- Google Analytics -->
<script>
//<![CDATA[
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-17511903-1']);
_gaq.push(['_setDomainName', '.openstack.org']);
_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>
<!-- End Google Analytics -->
</head>
<body>
{% include 'templates/header.tmpl' %}
{% block content %}{% endblock %}
{% include 'templates/footer.tmpl' %}
<!-- Scripts in: {{ scriptdir }}-->
{% include 'templates/script_footer.tmpl' %}
</body>
</html>

21
www/templates/css.tmpl Normal file
View File

@ -0,0 +1,21 @@
<!-- Bootstrap Core CSS -->
<link href="{{ cssdir }}bootstrap.min.css" rel="stylesheet">
<!-- Custom CSS -->
<link href="{{ cssdir }}combined.css" rel="stylesheet">
<link href="{{ cssdir }}styles.css" rel="stylesheet">
<!-- Fonts -->
<!--<link href="{{ cssdir }}font-awesome.min.css" rel="stylesheet">-->
<link href="http://maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css" rel="stylesheet">
<link href='http://fonts.googleapis.com/css?family=Open+Sans:300,400,700' rel='stylesheet' type='text/css'>
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
<!-- Page-specific CSS -->

View File

@ -0,0 +1 @@
{%- extends "base.html" %}

100
www/templates/footer.tmpl Normal file
View File

@ -0,0 +1,100 @@
<!-- Footer -->
<footer>
<div class="container">
<div class="row footer-links">
<div class="col-lg-2 col-sm-2">
<h3>OpenStack</h3>
<ul>
<li><a href="http://www.openstack.org/foundation">About the Foundation</a></li>
<li><a
href="http://www.openstack.org/projects/">Projects</a></li>
<li><a
href="http://www.openstack.org/projects/openstack-security/">OpenStack
Security</a></li>
<li><a
href="http://www.openstack.org/projects/openstack-faq/">Common Questions</a></li>
<li><a href="http://www.openstack.org/blog/">Blog</a></li>
</ul>
</div>
<div class="col-lg-2 col-sm-2">
<h3>Community</h3>
<ul>
<li><a href="http://www.openstack.org/community/">User
Groups</a></li>
<li><a
href="http://www.openstack.org/community/events/">Events</a></li>
<li><a
href="http://www.openstack.org/community/jobs/">Jobs</a></li>
<li><a
href="http://www.openstack.org/foundation/companies/">Companies</a></li>
<li><a
href="https://wiki.openstack.org/wiki/How_To_Contribute">Contribute</a></li>
</ul>
</div>
<div class="col-lg-2 col-sm-2">
<h3>Documentation</h3>
<ul>
<li><a href="http://docs.openstack.org">OpenStack
Manuals</a></li>
<li><a
href="http://www.openstack.org/software/start/">Getting Started</a></li>
<li><a href="http://developer.openstack.org">API
Documentation</a></li>
<li><a href="https://wiki.openstack.org">Wiki</a></li>
</ul>
</div>
<div class="col-lg-2 col-sm-2">
<h3>Branding & Legal</h3>
<ul>
<li><a href="http://www.openstack.org/brand/">Logos &
Guidelines</a></li>
<li><a
href="http://www.openstack.org/brand/openstack-trademark-policy/">Trademark
Policy</a></li>
<li><a href="http://www.openstack.org/privacy/">Privacy
Policy</a></li>
<li><a
href="https://wiki.openstack.org/wiki/How_To_Contribute#Contributors_License_Agreement">OpenStack
CLA</a></li>
</ul>
</div>
<div class="col-lg-4 col-sm-4">
<h3>Stay In Touch</h3>
<a href="https://twitter.com/OpenStack" target="_blank"
class="social-icons footer-twitter"></a>
<a href="https://www.facebook.com/openstack"
target="_blank" class="social-icons footer-facebook"></a>
<a href="https://www.linkedin.com/company/openstack"
target="_blank" class="social-icons footer-linkedin"></a>
<a href="https://www.youtube.com/user/OpenStackFoundation"
target="_blank" class="social-icons footer-youtube"></a>
<!-- <form class="form-inline">
<div class="form-group newsletter-form">
<label>Join Our Newsletter</label>
<input class="newsletter-input" type="input"
placeholder="Email">
<button type="submit"
class="newsletter-btn">Join</button>
</div>
</form> -->
<p class="fine-print">
The OpenStack project is provided under the Apache 2.0
license. Openstack.org is powered by <a href="http://rackspace.com"
target="_blank">Rackspace Cloud Computing</a>.
</p>
</div>
</div>
</div>
</footer>
<div class="footer-bottom">
<div class="container">
<form class="form-inline" id="FeedbackForm_FeedbackForm" action="/home/FeedbackForm" method="post" enctype="application/x-www-form-urlencoded">
<div class="form-group">
<div>
<input class="feedback-input" type="input" placeholder="Give Us Your Feedback On This Page">
<button type="submit" class="feedback-btn">Submit</button>
</div>
</div>
</form>
</div>
</div>

149
www/templates/header.tmpl Normal file
View File

@ -0,0 +1,149 @@
<!-- Header -->
<!-- Header Navigation -->
<nav class="navbar navbar-default inner" role="navigation">
<div class="container">
<!-- Brand and toggle get grouped for better mobile display -->
<div class="navbar-header">
<button type="button" class="navbar-toggle"
data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<div class="brand-wrapper">
<a class="navbar-brand" href="/"></a>
</div>
<div class="search-icon show"><i class="fa fa-search"></i>
Search</div>
</div>
<!-- Collect the nav links, forms, and other content for toggling
-->
<div class="collapse navbar-collapse"
id="bs-example-navbar-collapse-1">
<div class="search-container tiny">
<div id="gcse">
<script type="text/javascript">
(function() {
var cx = '000108871792296872333:noj9nikm74i';
var gcse = document.createElement('script');
gcse.type = 'text/javascript';
gcse.async = true;
gcse.src = (document.location.protocol == 'https:' ? 'https:' :
'http:') +
'//www.google.com/cse/cse.js?cx=' + cx;
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(gcse, s);
})();
</script>
<gcse:search gname="standard"></gcse:search>
</div>
<i class="fa fa-times close-search"></i>
</div>
<ul class="nav navbar-nav navbar-main show">
<li>
<div id="gcse-mobile">
<gcse:search gname="mobile"></gcse:search>
</div>
</li>
<li>
<a href="http://www.openstack.org/software/" class="drop" id="dropdownMenuSoftware">Software <i class="fa fa-caret-down"></i></a><i class="mobile-expand"></i>
<ul class="dropdown-menu dropdown-hover" role="menu" aria-labelledby="dropdownMenuSoftware">
<li role="presentation"><a role="menuitem" tabindex="-1" href="http://www.openstack.org/software/">Overview</a></li>
<li role="presentation"><a role="menuitem" tabindex="-1" href="http://www.openstack.org/software/project-navigator/">Project Navigator</a></li>
<li role="presentation"><a role="menuitem" tabindex="-1" href="http://www.openstack.org/software/sample-configs/">Sample Configs</a></li>
<li role="presentation" class="divider"></li>
<li role="presentation"><a role="menuitem" tabindex="-1" href="http://www.openstack.org/software/start/">Get Started</a></li>
<li role="presentation"><a role="menuitem" tabindex="-1" href="http://www.openstack.org/software/roadmap/">Roadmap</a></li>
<li role="presentation"><a role="menuitem" tabindex="-1" href="http://www.openstack.org/software/latest-release/">Latest Release</a></li>
<li role="presentation"><a role="menuitem" tabindex="-1" href="http://www.openstack.org/software/sourcecode/">Source Code</a></li>
</ul>
</li>
<li>
<a href="http://www.openstack.org/user-stories/" class="drop" id="dropdownMenuUsers">Users <i class="fa fa-caret-down"></i></a><i class="mobile-expand"></i>
<ul class="dropdown-menu dropdown-hover" role="menu" aria-labelledby="dropdownMenuUsers">
<li role="presentation"><a role="menuitem" tabindex="-1" href="http://www.openstack.org/user-stories/">Overview</a></li>
<li role="presentation" class="divider"></li>
<li role="presentation"><a role="menuitem" tabindex="-1" href="http://www.openstack.org/enterprise/">OpenStack in the Enterprise</a></li>
<li role="presentation"><a role="menuitem" tabindex="-1" href="http://www.openstack.org/appdev/">Application Developers</a></li>
<li role="presentation"><a role="menuitem" tabindex="-1" href="//superuser.openstack.org/">Superuser Magazine</a></li>
<li role="presentation"><a role="menuitem" tabindex="-1" href="https://www.openstack.org/surveys/landing">User Survey</a></li>
</ul>
</li>
<li>
<a href="http://www.openstack.org/community/" class="drop" id="dropdownMenuCommunity">Community <i class="fa fa-caret-down"></i></a><i class="mobile-expand"></i>
<ul class="dropdown-menu dropdown-hover" role="menu" aria-labelledby="dropdownMenuCommunity">
<li role="presentation"><a role="menuitem" tabindex="-1" href="http://www.openstack.org/community/">Welcome! Start Here</a></li>
<li role="presentation"><a role="menuitem" tabindex="-1" href="http://www.openstack.org/foundation/">OpenStack Foundation</a></li>
<li role="presentation"><a role="menuitem" tabindex="-1" href="http://wiki.openstack.org">OpenStack Wiki</a></li>
<li role="presentation"><a role="menuitem" tabindex="-1" href="http://groups.openstack.org">User Groups</a></li>
<li role="presentation" class="divider"></li>
<li role="presentation"><a role="menuitem" tabindex="-1" href="http://www.openstack.org/foundation/companies/">Supporting Companies</a></li>
<li role="presentation"><a role="menuitem" tabindex="-1" href="http://www.openstack.org/community/jobs/">Jobs</a></li>
<li role="presentation" class="divider"></li>
<li role="presentation"><a role="menuitem" tabindex="-1" href="https://www.openstack.org/join/">Join The Community</a></li>
</ul>
</li>
<li>
<a href="http://www.openstack.org/marketplace/">Marketplace</a>
</li>
<li>
<a href="http://www.openstack.org/events/" class="drop" id="dropdownMenuEvents">Events <i class="fa fa-caret-down"></i></a><i class="mobile-expand"></i>
<ul class="dropdown-menu dropdown-hover" role="menu" aria-labelledby="dropdownMenuEvents">
<li role="presentation"><a role="menuitem" tabindex="-1" href="http://www.openstack.org/community/events/">Overview</a></li>
<li role="presentation"><a role="menuitem" tabindex="-1" href="http://www.openstack.org/summit/">The OpenStack Summit</a></li>
<li role="presentation"><a role="menuitem" tabindex="-1" href="http://www.openstack.org/community/events/">OpenStack Days</a></li>
</ul>
</li>
<li>
<a href="http://www.openstack.org/learn/" class="drop" id="dropdownMenuLearn">Learn <i class="fa fa-caret-down"></i></a><i class="mobile-expand"></i>
<ul class="dropdown-menu dropdown-hover" role="menu" aria-labelledby="dropdownMenuEvents">
<li role="presentation"><a role="menuitem" tabindex="-1" href="http://www.openstack.org/marketplace/training/">Training</a></li>
<li role="presentation"><a role="menuitem" tabindex="-1" href="//superuser.openstack.org">Superuser Magazine</a></li>
<li role="presentation"><a role="menuitem" tabindex="-1" href="//ask.openstack.org">Ask a Technical Question</a></li>
<li role="presentation"><a role="menuitem" tabindex="-1" href="http://www.openstack.org/news/">News</a></li>
<li role="presentation"><a role="menuitem" tabindex="-1" href="http://www.openstack.org/blog/">Blog</a></li>
<li role="presentation"><a role="menuitem" tabindex="-1" href="https://www.openstack.org/summit/tokyo-2015/videos/">Summit Videos</a></li>
</ul>
</li>
<li>
<a href="http://docs.openstack.org/">Docs</a>
</li>
<li>
</li>
<li>
<li class="join-nav-section">
<a href="#" id="dropdownMenuJoin">Join <i class="fa fa-caret-down"></i></a>
<ul class="dropdown-menu dropdown-hover" role="menu" aria-labelledby="dropdownMenuJoin" style="display: none;">
<li role="presentation"><a role="menuitem" tabindex="-1" href="https://www.openstack.org/join/register/?membership-type=foundation">Sign up for Foundation Membership</a></li>
<li role="presentation"><a role="menuitem" tabindex="-1" href="https://www.openstack.org/join/#sponsor">Sponsor the Foundation</a></li>
<li role="presentation"><a role="menuitem" tabindex="-1" href="https://www.openstack.org/foundation/">More about the Foundation</a></li>
</ul>
</li>
<li>
<a href="https://www.openstack.org/Security/login/" class="sign-in-btn">Log In</a>
</li>
</li>
</ul>
</div>
<!-- /.navbar-collapse -->
</div>
<!-- /.container -->
</nav>

View File

@ -0,0 +1,39 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type"/>
<meta name="google-site-verification" content="Ip5yk0nd8yQHEo8I7SjzVfAiadlHvTvqQHLGwn1GFyU" />
{% block header %}{% endblock %}
<title>OpenStack Docs: {% block pagetitle %}{% endblock %}</title>
<meta charset="utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<!-- CSS in: {{ cssdir }}-->
{% include 'templates/css.tmpl' %}
<!-- Google Analytics -->
<script>
//<![CDATA[
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-17511903-1']);
_gaq.push(['_setDomainName', '.openstack.org']);
_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>
<!-- End Google Analytics -->
</head>
<body>
{% include 'templates/header.tmpl' %}
{% block content %}{% endblock %}
{% include 'templates/footer.tmpl' %}
<!-- Scripts in: {{ scriptdir }}-->
{% include 'templates/script_footer.tmpl' %}
</body>
</html>

View File

@ -0,0 +1,29 @@
<ul id="Menu1">
<li>
<a href="http://www.openstack.org/" title="Go to the OpenStack Home page">Home</a>
</li>
<li>
<a class="link" href="http://www.openstack.org/software/" title="About OpenStack">About</a>
</li>
<li>
<a class="link" href="http://www.openstack.org/user-stories/" title="Read stories about companies that use OpenStack to get work done.">User Stories</a>
</li>
<li>
<a class="link" href="http://www.openstack.org/community/" title="Go to the OpenStack Community page">Community</a>
</li>
<li>
<a class="link" href="http://www.openstack.org/profile/" title="Edit your OpenStack community profile">Profile</a>
</li>
<li>
<a href="http://www.openstack.org/blog/" title="Go to the OpenStack Blog">Blog</a>
</li>
<li>
<a href="http://wiki.openstack.org/" title="Go to the OpenStack Wiki">Wiki</a>
</li>
<li>
<a href="http://docs.openstack.org/glossary/content/glossary.html" title="See definitions of OpenStack terms">Glossary</a>
</li>
<li>
<a class="current" href="http://docs.openstack.org/" title="Go to the OpenStack Documentation">Documentation</a>
</li>
</ul>

View File

@ -0,0 +1,14 @@
<!-- jQuery Version 1.11.0 -->
<script type="text/javascript" src="{{ scriptdir }}jquery-1.11.0.js"></script>
<!-- Bootstrap Core JavaScript -->
<script type="text/javascript" src="{{ scriptdir }}bootstrap.min.js"></script>
<!-- The rest of the JS -->
<script type="text/javascript" src="{{ scriptdir }}navigation.js"></script>
<!-- Docs JS -->
<script type="text/javascript" src="{{ scriptdir }}docs.js"></script>
<!-- Popovers -->
<script type="text/javascript" src="{{ scriptdir }}webui-popover.js"></script>

9
www/www-index.html Normal file
View File

@ -0,0 +1,9 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="en" xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<body>
<ul>
<li><a href="www/index.html">/index.html</a></li>
</ul>
</body>
</html>