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
44
tools/build-index.sh
Executable 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
@ -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())
|
4
tox.ini
@ -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
|
||||
|
639
www/index.html
@ -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 >> 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&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">
|
||||
|
5
www/static/common/css/bootstrap.min.css
vendored
Normal file
4584
www/static/common/css/combined.css
Normal file
4
www/static/common/css/font-awesome.min.css
vendored
Normal file
1333
www/static/common/css/styles.css
Normal file
BIN
www/static/common/fonts/fontawesome-webfont.woff
Normal file
BIN
www/static/common/images/footer-facebook-hover.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
www/static/common/images/footer-facebook.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
www/static/common/images/footer-linkedin-hover.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
www/static/common/images/footer-linkedin.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
www/static/common/images/footer-twitter-hover.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
www/static/common/images/footer-twitter.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
www/static/common/images/footer-youtube-hover.png
Normal file
After Width: | Height: | Size: 1.0 KiB |
BIN
www/static/common/images/footer-youtube.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
www/static/common/images/loading.gif
Normal file
After Width: | Height: | Size: 729 B |
BIN
www/static/common/images/openstack-logo-full.png
Normal file
After Width: | Height: | Size: 3.1 KiB |
285
www/static/common/images/openstack-logo-full.svg
Normal 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 |
BIN
www/static/common/images/openstack-logo-vert.png
Normal file
After Width: | Height: | Size: 2.5 KiB |
286
www/static/common/images/openstack-logo-vert.svg
Normal 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 |
BIN
www/static/common/images/search-icon.png
Normal file
After Width: | Height: | Size: 278 B |
6
www/static/common/js/bootstrap.min.js
vendored
Normal file
20
www/static/common/js/doc-characters.json
Normal 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"
|
||||
}
|
||||
]
|
||||
}
|
89
www/static/common/js/docs.js
Normal 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
65
www/static/common/js/navigation.js
Normal 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 );
|
434
www/static/common/js/webui-popover.js
Normal 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> </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 auto,caculate 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
After Width: | Height: | Size: 1.1 KiB |
38
www/templates/base.tmpl
Normal 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
@ -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 -->
|
1
www/templates/default.tmpl
Normal file
@ -0,0 +1 @@
|
||||
{%- extends "base.html" %}
|
100
www/templates/footer.tmpl
Normal 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
@ -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>
|
||||
|
39
www/templates/indexbase.tmpl
Normal 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>
|
29
www/templates/navigation.tmpl
Normal 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>
|
14
www/templates/script_footer.tmpl
Normal 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
@ -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>
|