Moving Blender Cloud specific pages from Pillar
These pages were originally in the pillar repository, but they actually belong here. We also extended rsync_ui.sh to build and rsync to the Blender Cloud server.
This commit is contained in:
2
.gitignore
vendored
2
.gitignore
vendored
@@ -4,6 +4,8 @@
|
||||
*.pyc
|
||||
__pycache__
|
||||
|
||||
cloud/templates/
|
||||
|
||||
/config_local.py
|
||||
|
||||
/build
|
||||
|
132
cloud/routes.py
132
cloud/routes.py
@@ -1,11 +1,141 @@
|
||||
import itertools
|
||||
import logging
|
||||
|
||||
from flask import Blueprint, render_template
|
||||
from pillarsdk import Node, Project
|
||||
from pillarsdk.exceptions import ResourceNotFound
|
||||
from flask_login import current_user
|
||||
from flask import Blueprint, current_app, render_template, redirect, url_for
|
||||
from pillar.web.utils import system_util, get_file
|
||||
|
||||
blueprint = Blueprint('cloud', __name__)
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@blueprint.route('/')
|
||||
def homepage():
|
||||
|
||||
if current_user.is_anonymous:
|
||||
return redirect(url_for('cloud.welcome'))
|
||||
|
||||
# Get latest blog posts
|
||||
api = system_util.pillar_api()
|
||||
latest_posts = Node.all({
|
||||
'projection': {'name': 1, 'project': 1, 'node_type': 1,
|
||||
'picture': 1, 'properties.status': 1, 'properties.url': 1},
|
||||
'where': {'node_type': 'post', 'properties.status': 'published'},
|
||||
'embedded': {'project': 1},
|
||||
'sort': '-_created',
|
||||
'max_results': '5'
|
||||
}, api=api)
|
||||
|
||||
# Append picture Files to last_posts
|
||||
for post in latest_posts._items:
|
||||
post.picture = get_file(post.picture, api=api)
|
||||
|
||||
# Get latest assets added to any project
|
||||
latest_assets = Node.latest('assets', api=api)
|
||||
|
||||
# Append picture Files to latest_assets
|
||||
for asset in latest_assets._items:
|
||||
asset.picture = get_file(asset.picture, api=api)
|
||||
|
||||
# Get latest comments to any node
|
||||
latest_comments = Node.latest('comments', api=api)
|
||||
|
||||
# Get a list of random featured assets
|
||||
random_featured = get_random_featured_nodes()
|
||||
|
||||
# Parse results for replies
|
||||
to_remove = []
|
||||
for idx, comment in enumerate(latest_comments._items):
|
||||
if comment.properties.is_reply:
|
||||
try:
|
||||
comment.attached_to = Node.find(comment.parent.parent,
|
||||
{'projection': {
|
||||
'_id': 1,
|
||||
'name': 1,
|
||||
}},
|
||||
api=api)
|
||||
except ResourceNotFound:
|
||||
# Remove this comment
|
||||
to_remove.append(idx)
|
||||
else:
|
||||
comment.attached_to = comment.parent
|
||||
|
||||
for idx in reversed(to_remove):
|
||||
del latest_comments._items[idx]
|
||||
|
||||
main_project = Project.find(current_app.config['MAIN_PROJECT_ID'], api=api)
|
||||
main_project.picture_header = get_file(main_project.picture_header, api=api)
|
||||
|
||||
# Merge latest assets and comments into one activity stream.
|
||||
def sort_key(item):
|
||||
return item._created
|
||||
|
||||
activities = itertools.chain(latest_assets._items,
|
||||
latest_comments._items)
|
||||
activity_stream = sorted(activities, key=sort_key, reverse=True)
|
||||
|
||||
return render_template(
|
||||
'homepage.html',
|
||||
main_project=main_project,
|
||||
latest_posts=latest_posts._items,
|
||||
activity_stream=activity_stream,
|
||||
random_featured=random_featured,
|
||||
api=api)
|
||||
|
||||
|
||||
@blueprint.route('/welcome')
|
||||
def welcome():
|
||||
# Workaround to cache rendering of a page if user not logged in
|
||||
@current_app.cache.cached(timeout=3600)
|
||||
def render_page():
|
||||
return render_template('welcome.html')
|
||||
return render_page()
|
||||
|
||||
|
||||
@blueprint.route('/about')
|
||||
def about():
|
||||
return render_template('about.html')
|
||||
|
||||
|
||||
@blueprint.route('/services')
|
||||
def services():
|
||||
return render_template('services.html')
|
||||
|
||||
|
||||
@blueprint.route('/join')
|
||||
def join():
|
||||
"""Join page"""
|
||||
return redirect('https://store.blender.org/product/membership/')
|
||||
|
||||
|
||||
def get_random_featured_nodes():
|
||||
|
||||
import random
|
||||
|
||||
api = system_util.pillar_api()
|
||||
projects = Project.all({
|
||||
'projection': {'nodes_featured': 1},
|
||||
'where': {'is_private': False},
|
||||
'max_results': '15'
|
||||
}, api=api)
|
||||
|
||||
featured_nodes = (p.nodes_featured for p in projects._items if p.nodes_featured)
|
||||
featured_nodes = [item for sublist in featured_nodes for item in sublist]
|
||||
if len(featured_nodes) > 3:
|
||||
featured_nodes = random.sample(featured_nodes, 3)
|
||||
|
||||
featured_node_documents = []
|
||||
|
||||
for node in featured_nodes:
|
||||
node_document = Node.find(node, {
|
||||
'projection': {'name': 1, 'project': 1, 'picture': 1,
|
||||
'properties.content_type': 1, 'properties.url': 1},
|
||||
'embedded': {'project': 1}
|
||||
}, api=api)
|
||||
|
||||
node_document.picture = get_file(node_document.picture, api=api)
|
||||
featured_node_documents.append(node_document)
|
||||
|
||||
return featured_node_documents
|
||||
|
@@ -1,301 +1,157 @@
|
||||
|
||||
{% extends 'layout.html' %}
|
||||
{% block page_title %}Welcome{% endblock %}
|
||||
|
||||
{% block css %}
|
||||
{{ super() }}
|
||||
<style>
|
||||
.page-card-side {
|
||||
padding: 60px 10px !important;
|
||||
}
|
||||
</style>
|
||||
{% endblock css %}
|
||||
{{ super() }}
|
||||
<style>
|
||||
.page-card-side {
|
||||
padding: 60px 10px !important;
|
||||
}
|
||||
</style>{% endblock css %}
|
||||
{% block body %}
|
||||
<div id="page-container">
|
||||
<div id="page-header">
|
||||
<div style="text-align: left" class="page-title">
|
||||
<em>ABOUT</em>
|
||||
<i class="pi-blender-cloud-logo"></i>
|
||||
</div>
|
||||
<div class="page-title-summary">
|
||||
Blender Cloud means inspiration, knowledge, and tools in one place.
|
||||
<br>Started in 2014, it has been pushing the meaning of recurring crowdfunding ever since.<br>
|
||||
By subscribing to Blender Cloud you support the creation of open content,<br>
|
||||
the development of high-end production tools like Blender and access a <br>
|
||||
unique set of learning and creative resources.
|
||||
</div>
|
||||
</div>
|
||||
<div id="page-content">
|
||||
<section class="page-card">
|
||||
<div class="page-card-side">
|
||||
<h2 class="page-card-title">
|
||||
Launch at SXSW <small>March 9th, 2014</small>
|
||||
</h2>
|
||||
<div class="page-card-summary">
|
||||
First happy cloud video and crowdfunding for Cosmos Laundromat Pilot.
|
||||
</div>
|
||||
</div>
|
||||
<div class="page-card-side">
|
||||
<a href="https://gooseberry.blender.org/gooseberry-campaign-launched-we-need-10k-people-to-help/">
|
||||
<img class="img-responsive" src="{{ url_for('static_cloud', filename='img/2014_03_09_sxsw.jpg') }}">
|
||||
</a>
|
||||
</div>
|
||||
</section>
|
||||
<section class="page-card">
|
||||
<div class="page-card-side">
|
||||
<a href="https://gooseberry.blender.org/gooseberry-campaign-launched-we-need-10k-people-to-help/">
|
||||
<img class="img-responsive" src="{{ url_for('static_cloud', filename='img/2014_03_10_cosmos.jpg') }}">
|
||||
</a>
|
||||
</div>
|
||||
<div class="page-card-side">
|
||||
<h2 class="page-card-title">
|
||||
Gooseberry | Cosmos Laundromat <small>March 10th, 2015</small>
|
||||
</h2>
|
||||
<div class="page-card-summary">
|
||||
Weekly folders with updates for subscribers. Initial development of Attract, which will become the new cloud some months later on.
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="page-card">
|
||||
<div class="page-card-side">
|
||||
<h2 class="page-card-title">
|
||||
Glass Half <small>October 30th, 2015</small>
|
||||
</h2>
|
||||
<div class="page-card-summary">
|
||||
Introducing integrated blogs in Blender Cloud projects. Glass Half is the first project fully developed on the new Blender Cloud. It's also the first and only project to have share its <a href="https://cloud.blender.org/p/glass-half/5627bb22f0e7220061109c9f">animation dailies</a>! But the biggest outcome from Glass Half was definitely <a href="https://cloud.blender.org/p/glass-half/569d6044c379cf445461293e">Flexirig</a>.
|
||||
</div>
|
||||
</div>
|
||||
<div class="page-card-side">
|
||||
<a href="https://cloud.blender.org/p/glass-half/blog/glass-half-premiere">
|
||||
<img class="img-responsive" src="{{ url_for('static_cloud', filename='img/2015_10_30_glass.jpg') }}" /></a>
|
||||
</div>
|
||||
</section>
|
||||
<section class="page-card">
|
||||
<div class="page-card-side">
|
||||
<a href="https://cloud.blender.org/blog/new-art-gallery-with-gleb-alexandrov">
|
||||
<img class="img-responsive" src="{{ url_for('static_cloud', filename='img/2015_11_19_art.jpg') }}" /></a>
|
||||
</div>
|
||||
<div class="page-card-side">
|
||||
<h2 class="page-card-title">
|
||||
Art Gallery <small>November 19th, 2015</small>
|
||||
</h2>
|
||||
<div class="page-card-summary">
|
||||
Learn by example. Introducing a place for amazing artwork to be shared, along with its blendfiles and breakdowns.
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="page-card">
|
||||
<div class="page-card-side">
|
||||
<h2 class="page-card-title">
|
||||
Blender Institute Podcast <small>November 24th, 2015</small>
|
||||
</h2>
|
||||
<div class="page-card-summary">
|
||||
With so much going on in the Cloud at at the studio. The Blender Institute Podcast was born! Sharing our daily studio work, Blender community news, and interacting with the awesome Blender Cloud subscribers.
|
||||
</div>
|
||||
</div>
|
||||
<div class="page-card-side">
|
||||
<a href="https://cloud.blender.org/blog/introducing-blender-institute-podcast">
|
||||
<img class="img-responsive" src="{{ url_for('static_cloud', filename='img/2015_11_24_bip.jpg') }}" /></a>
|
||||
</div>
|
||||
</section>
|
||||
<section class="page-card">
|
||||
<div class="page-card-side">
|
||||
<a href="https://cloud.blender.org/p/blenrig/blog/welcome-to-the-blenrig-project">
|
||||
<img class="img-responsive" src="{{ url_for('static_cloud', filename='img/2015_12_01_blenrig.jpg') }}" /></a>
|
||||
</div>
|
||||
<div class="page-card-side">
|
||||
<h2 class="page-card-title">
|
||||
Blenrig <small>December 1st, 2015</small>
|
||||
</h2>
|
||||
<div class="page-card-summary">
|
||||
The most powerful and versatile rigging framework for Blender, used and tested through Cosmos Laundromat and the Caminandes series, is now part of Blender Cloud!
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="page-card">
|
||||
<div class="page-card-side">
|
||||
<h2 class="page-card-title">
|
||||
Texture Library <small>December 23rd, 2015</small>
|
||||
</h2>
|
||||
<div class="page-card-summary">
|
||||
The biggest source for CC0/Public Domain textures on the interwebs goes live. First as beta, as a quick gift right before Xmas 2015!
|
||||
</div>
|
||||
</div>
|
||||
<div class="page-card-side">
|
||||
<a href="https://cloud.blender.org/blog/new-texture-library">
|
||||
<img class="img-responsive" src="{{ url_for('static_cloud', filename='img/2015_12_23_textures.jpg') }}" /></a>
|
||||
</div>
|
||||
</section>
|
||||
<section class="page-card">
|
||||
<div class="page-card-side">
|
||||
<a href="https://cloud.blender.org/blog/nraryew-the-character-lib">
|
||||
<img class="img-responsive" src="{{ url_for('static_cloud', filename='img/2016_01_05_charlib.jpg') }}" /></a>
|
||||
</div>
|
||||
<div class="page-card-side">
|
||||
<h2 class="page-card-title">
|
||||
Character Library <small>January 5th, 2016</small>
|
||||
</h2>
|
||||
<div class="page-card-summary">
|
||||
High-quality, animation-ready characters collection from all the Blender Institute open projects, plus a brand new one: Vincent!
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="page-card">
|
||||
<div class="page-card-side">
|
||||
<h2 class="page-card-title">
|
||||
Caminandes: Llamigos <small>January 30th, 2016</small>
|
||||
</h2>
|
||||
<div class="page-card-summary">
|
||||
The <a href="https://www.youtube.com/watch?v=SkVqJ1SGeL0">third episode</a> of the Caminandes series was completely done -and sponsored! through Blender Cloud. It's also the only project til date to have <a href="https://www.youtube.com/watch?v=kQH897V9bDg&list=PLI2TkLMzCSr_H6ppmzDtU0ut0RwxGvXjv">nicely edited Weekly video reports</a>.
|
||||
</div>
|
||||
</div>
|
||||
<div class="page-card-side">
|
||||
<a href="https://cloud.blender.org/p/caminandes-3/blog/caminandes-llamigos">
|
||||
<img class="img-responsive" src="{{ url_for('static_cloud', filename='img/2016_01_30_llamigos.jpg') }}" /></a>
|
||||
</div>
|
||||
</section>
|
||||
<section class="page-card">
|
||||
<div class="page-card-side">
|
||||
<a href="https://cloud.blender.org/blog/welcome-sybren">
|
||||
<img class="img-responsive" src="{{ url_for('static_cloud', filename='img/2016_03_01_sybren.jpg') }}" /></a>
|
||||
</div>
|
||||
<div class="page-card-side">
|
||||
<h2 class="page-card-title">
|
||||
Sybren <small>March 1st, 2016</small>
|
||||
</h2>
|
||||
<div class="page-card-summary">
|
||||
Dr. Sybren Stüvel starts working at the Blender Institute!
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="page-card">
|
||||
<div class="page-card-side">
|
||||
<h2 class="page-card-title">
|
||||
Private Projects <small>May 3rd, 2016</small>
|
||||
</h2>
|
||||
<div class="page-card-summary">
|
||||
Create your own private projects on Blender Cloud.
|
||||
</div>
|
||||
</div>
|
||||
<div class="page-card-side">
|
||||
<a href="https://cloud.blender.org/blog/welcome-sybren">
|
||||
<img class="img-responsive" src="{{ url_for('static_cloud', filename='img/2016_05_03_projects.jpg') }}" /></a>
|
||||
</div>
|
||||
</section>
|
||||
<section class="page-card">
|
||||
<div class="page-card-side">
|
||||
<a href="https://cloud.blender.org/blog/introducing-project-sharing">
|
||||
<img class="img-responsive" src="{{ url_for('static_cloud', filename='img/2016_05_09_projectsharing.jpg') }}" /></a>
|
||||
</div>
|
||||
<div class="page-card-side">
|
||||
<h2 class="page-card-title">
|
||||
Project Sharing <small>May 9th, 2016</small>
|
||||
</h2>
|
||||
<div class="page-card-summary">
|
||||
Team work! Share your projects with other Blender Cloud subscribers.
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="page-card">
|
||||
<div class="page-card-side">
|
||||
<h2 class="page-card-title">
|
||||
Blender Cloud add-on with Texture Library <small>May 11th, 2016</small>
|
||||
</h2>
|
||||
<div class="page-card-summary">
|
||||
Browse the textures from within Blender!
|
||||
</div>
|
||||
</div>
|
||||
<div class="page-card-side">
|
||||
<a href="https://cloud.blender.org/blog/introducing-project-sharing">
|
||||
<img class="img-responsive" src="{{ url_for('static_cloud', filename='img/2016_05_11_addon.jpg') }}" /></a>
|
||||
</div>
|
||||
</section>
|
||||
<section class="page-card">
|
||||
<div class="page-card-side">
|
||||
<a href="https://cloud.blender.org/blog/introducing-private-texture-libraries">
|
||||
<img class="img-responsive" src="{{ url_for('static_cloud', filename='img/2016_05_23_privtextures.jpg') }}" /></a>
|
||||
</div>
|
||||
<div class="page-card-side">
|
||||
<h2 class="page-card-title">
|
||||
Private Texture Libraries <small>May 23rd, 2016</small>
|
||||
</h2>
|
||||
<div class="page-card-summary">
|
||||
Create your own private textures library and browse it in Blender with our add-on.
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="page-card">
|
||||
<div class="page-card-side">
|
||||
<h2 class="page-card-title">
|
||||
Blender Sync <small>June 30th, 2016</small>
|
||||
</h2>
|
||||
<div class="page-card-summary">
|
||||
Sync your Blender preferences across multiple devices.
|
||||
</div>
|
||||
</div>
|
||||
<div class="page-card-side">
|
||||
<a href="https://cloud.blender.org/blog/introducing-blender-sync">
|
||||
<img class="img-responsive" src="{{ url_for('static_cloud', filename='img/2016_06_30_sync.jpg') }}" /></a>
|
||||
</div>
|
||||
</section>
|
||||
<section class="page-card">
|
||||
<div class="page-card-side">
|
||||
<a href="https://cloud.blender.org/blog/introducing-image-sharing">
|
||||
<img class="img-responsive" src="{{ url_for('static_cloud', filename='img/2016_07_14_image.jpg') }}" /></a>
|
||||
</div>
|
||||
<div class="page-card-side">
|
||||
<h2 class="page-card-title">
|
||||
Image Sharing <small>July 14th, 2016</small>
|
||||
</h2>
|
||||
<div class="page-card-summary">
|
||||
Quickly share renders and Blender screenshots within Blender with our add-on.
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="page-card">
|
||||
<div class="page-card-side">
|
||||
<h2 class="page-card-title">
|
||||
<a href="https://cloud.blender.org/blog/introducing-the-hdri-library">HDRI Library <small>July 27th, 2016</small></a>
|
||||
</h2>
|
||||
<div class="page-card-summary">
|
||||
High-dynamic range images are now available on Blender Cloud! With their own special viewer. Also available via the Blender Cloud add-on.
|
||||
</div>
|
||||
</div>
|
||||
<div class="page-card-side">
|
||||
<a href="https://cloud.blender.org/blog/introducing-the-hdri-library">
|
||||
<img class="img-responsive" src="{{ url_for('static_cloud', filename='img/2016_07_27_hdri.jpg') }}" /></a>
|
||||
</div>
|
||||
</section>
|
||||
<section class="page-card">
|
||||
<div class="page-card-side">
|
||||
<a href="https://cloud.blender.org/blog/introducing-the-hdri-library">
|
||||
<img class="img-responsive" src="{{ url_for('static_cloud', filename='img/2016_12_06_toon.jpg') }}" /></a>
|
||||
</div>
|
||||
<div class="page-card-side">
|
||||
<h2 class="page-card-title">
|
||||
<a href="https://cloud.blender.org/blog/new-training-toon-character-workflow">Toon Character Workflow <small>December 6th, 2016</small></a>
|
||||
</h2>
|
||||
<div class="page-card-summary">
|
||||
YouTube star Dillon Gu joins Blender Cloud for a new tutorial series that will guide you from the basics to a finished toon-shaded character.
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="page-card">
|
||||
<div class="page-card-side">
|
||||
<h2 class="page-card-title">
|
||||
Agent 327 - Barbershop
|
||||
</h2>
|
||||
<div class="page-card-summary">
|
||||
<p>Follow the ongoing progress of the Barbershop fight scene, an animation test for the Agent 327 project. By subscribing to Blender Cloud, you get access
|
||||
to all resources and training produced so far!</p>
|
||||
<a href="https://store.blender.org/product/membership/" class="page-card-cta">Subscribe</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="page-card-side">
|
||||
<a href="https://cloud.blender.org/p/agent-327">
|
||||
<img class="img-responsive" src="{{ url_for('static_cloud', filename='img/2017_03_10_agent.jpg') }}" /></a>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% endblock body%}
|
||||
<div id="page-header">
|
||||
<div class="page-title" style="text-align: left;"><em>ABOUT</em><i class="pi-blender-cloud-logo"></i></div>
|
||||
<div class="page-title-summary">Blender Cloud means inspiration, knowledge, and tools in one place.<br/>Started in 2014, it has been pushing the meaning of recurring crowdfunding ever since.<br/>By subscribing to Blender Cloud you support the creation of open content,<br/>the development of high-end production tools like Blender and access a<br/>unique set of learning and creative resources.</div>
|
||||
</div>
|
||||
<div id="page-content">
|
||||
<section class="page-card">
|
||||
<div class="page-card-side">
|
||||
<h2 class="page-card-title">Launch at SXSW<small>March 9th, 2014</small></h2>
|
||||
<div class="page-card-summary">First happy cloud video and crowdfunding for Cosmos Laundromat Pilot.</div>
|
||||
</div>
|
||||
<div class="page-card-side"><a href="https://gooseberry.blender.org/gooseberry-campaign-launched-we-need-10k-people-to-help/"><img class="img-responsive" src="{{ url_for('static_cloud', filename='img/2014_03_09_sxsw.jpg') }}"/></a></div>
|
||||
</section>
|
||||
<section class="page-card">
|
||||
<div class="page-card-side"><a href="https://gooseberry.blender.org/gooseberry-campaign-launched-we-need-10k-people-to-help/"><img class="img-responsive" src="{{ url_for('static_cloud', filename='img/2014_03_10_cosmos.jpg') }}"/></a></div>
|
||||
<div class="page-card-side">
|
||||
<h2 class="page-card-title">Gooseberry | Cosmos Laundromat<small>March 10th, 2015</small></h2>
|
||||
<div class="page-card-summary">Weekly folders with updates for subscribers. Initial development of Attract, which will become the new cloud some months later on.</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="page-card">
|
||||
<div class="page-card-side">
|
||||
<h2 class="page-card-title">Glass Half<small>October 30th, 2015</small></h2>
|
||||
<div class="page-card-summary">Introducing integrated blogs in Blender Cloud projects. Glass Half is the first project fully developed on the new Blender Cloud. It's also the first and only project to have share its<a href="https://cloud.blender.org/p/glass-half/5627bb22f0e7220061109c9f">animation dailies</a>! But the biggest outcome from Glass Half was definitely<a href="https://cloud.blender.org/p/glass-half/569d6044c379cf445461293e">Flexirig</a>.</div>
|
||||
</div>
|
||||
<div class="page-card-side"><a href="https://cloud.blender.org/p/glass-half/blog/glass-half-premiere"><img class="img-responsive" src="{{ url_for('static_cloud', filename='img/2015_10_30_glass.jpg') }}"/></a></div>
|
||||
</section>
|
||||
<section class="page-card">
|
||||
<div class="page-card-side"><a href="https://cloud.blender.org/blog/new-art-gallery-with-gleb-alexandrov"><img class="img-responsive" src="{{ url_for('static_cloud', filename='img/2015_11_19_art.jpg') }}"/></a></div>
|
||||
<div class="page-card-side">
|
||||
<h2 class="page-card-title">Art Gallery<small>November 19th, 2015</small></h2>
|
||||
<div class="page-card-summary">Learn by example. Introducing a place for amazing artwork to be shared, along with its blendfiles and breakdowns.</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="page-card">
|
||||
<div class="page-card-side">
|
||||
<h2 class="page-card-title">Blender Institute Podcast<small>November 24th, 2015</small></h2>
|
||||
<div class="page-card-summary">With so much going on in the Cloud at at the studio. The Blender Institute Podcast was born! Sharing our daily studio work, Blender community news, and interacting with the awesome Blender Cloud subscribers.</div>
|
||||
</div>
|
||||
<div class="page-card-side"><a href="https://cloud.blender.org/blog/introducing-blender-institute-podcast"><img class="img-responsive" src="{{ url_for('static_cloud', filename='img/2015_11_24_bip.jpg') }}"/></a></div>
|
||||
</section>
|
||||
<section class="page-card">
|
||||
<div class="page-card-side"><a href="https://cloud.blender.org/p/blenrig/blog/welcome-to-the-blenrig-project"><img class="img-responsive" src="{{ url_for('static_cloud', filename='img/2015_12_01_blenrig.jpg') }}"/></a></div>
|
||||
<div class="page-card-side">
|
||||
<h2 class="page-card-title">Blenrig<small>December 1st, 2015</small></h2>
|
||||
<div class="page-card-summary">The most powerful and versatile rigging framework for Blender, used and tested through Cosmos Laundromat and the Caminandes series, is now part of Blender Cloud!</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="page-card">
|
||||
<div class="page-card-side">
|
||||
<h2 class="page-card-title">Texture Library<small>December 23rd, 2015</small></h2>
|
||||
<div class="page-card-summary">The biggest source for CC0/Public Domain textures on the interwebs goes live. First as beta, as a quick gift right before Xmas 2015!</div>
|
||||
</div>
|
||||
<div class="page-card-side"><a href="https://cloud.blender.org/blog/new-texture-library"><img class="img-responsive" src="{{ url_for('static_cloud', filename='img/2015_12_23_textures.jpg') }}"/></a></div>
|
||||
</section>
|
||||
<section class="page-card">
|
||||
<div class="page-card-side"><a href="https://cloud.blender.org/blog/nraryew-the-character-lib"><img class="img-responsive" src="{{ url_for('static_cloud', filename='img/2016_01_05_charlib.jpg') }}"/></a></div>
|
||||
<div class="page-card-side">
|
||||
<h2 class="page-card-title">Character Library<small>January 5th, 2016</small></h2>
|
||||
<div class="page-card-summary">High-quality, animation-ready characters collection from all the Blender Institute open projects, plus a brand new one: Vincent!</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="page-card">
|
||||
<div class="page-card-side">
|
||||
<h2 class="page-card-title">Caminandes: Llamigos<small>January 30th, 2016</small></h2>
|
||||
<div class="page-card-summary">The<a href="https://www.youtube.com/watch?v=SkVqJ1SGeL0">third episode</a> of the Caminandes series was completely done -and sponsored! through Blender Cloud. It's also the only project til date to have<a href="https://www.youtube.com/watch?v=kQH897V9bDg&list=PLI2TkLMzCSr_H6ppmzDtU0ut0RwxGvXjv">nicely edited Weekly video reports</a>.</div>
|
||||
</div>
|
||||
<div class="page-card-side"><a href="https://cloud.blender.org/p/caminandes-3/blog/caminandes-llamigos"><img class="img-responsive" src="{{ url_for('static_cloud', filename='img/2016_01_30_llamigos.jpg') }}"/></a></div>
|
||||
</section>
|
||||
<section class="page-card">
|
||||
<div class="page-card-side"><a href="https://cloud.blender.org/blog/welcome-sybren"><img class="img-responsive" src="{{ url_for('static_cloud', filename='img/2016_03_01_sybren.jpg') }}"/></a></div>
|
||||
<div class="page-card-side">
|
||||
<h2 class="page-card-title">Sybren<small>March 1st, 2016</small></h2>
|
||||
<div class="page-card-summary">Dr. Sybren Stüvel starts working at the Blender Institute!</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="page-card">
|
||||
<div class="page-card-side">
|
||||
<h2 class="page-card-title">Private Projects<small>May 3rd, 2016</small></h2>
|
||||
<div class="page-card-summary">Create your own private projects on Blender Cloud.</div>
|
||||
</div>
|
||||
<div class="page-card-side"><a href="https://cloud.blender.org/blog/welcome-sybren"><img class="img-responsive" src="{{ url_for('static_cloud', filename='img/2016_05_03_projects.jpg') }}"/></a></div>
|
||||
</section>
|
||||
<section class="page-card">
|
||||
<div class="page-card-side"><a href="https://cloud.blender.org/blog/introducing-project-sharing"><img class="img-responsive" src="{{ url_for('static_cloud', filename='img/2016_05_09_projectsharing.jpg') }}"/></a></div>
|
||||
<div class="page-card-side">
|
||||
<h2 class="page-card-title">Project Sharing<small>May 9th, 2016</small></h2>
|
||||
<div class="page-card-summary">Team work! Share your projects with other Blender Cloud subscribers.</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="page-card">
|
||||
<div class="page-card-side">
|
||||
<h2 class="page-card-title">Blender Cloud add-on with Texture Library<small>May 11th, 2016</small></h2>
|
||||
<div class="page-card-summary">Browse the textures from within Blender!</div>
|
||||
</div>
|
||||
<div class="page-card-side"><a href="https://cloud.blender.org/blog/introducing-project-sharing"><img class="img-responsive" src="{{ url_for('static_cloud', filename='img/2016_05_11_addon.jpg') }}"/></a></div>
|
||||
</section>
|
||||
<section class="page-card">
|
||||
<div class="page-card-side"><a href="https://cloud.blender.org/blog/introducing-private-texture-libraries"><img class="img-responsive" src="{{ url_for('static_cloud', filename='img/2016_05_23_privtextures.jpg') }}"/></a></div>
|
||||
<div class="page-card-side">
|
||||
<h2 class="page-card-title">Private Texture Libraries<small>May 23rd, 2016</small></h2>
|
||||
<div class="page-card-summary">Create your own private textures library and browse it in Blender with our add-on.</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="page-card">
|
||||
<div class="page-card-side">
|
||||
<h2 class="page-card-title">Blender Sync<small>June 30th, 2016</small></h2>
|
||||
<div class="page-card-summary">Sync your Blender preferences across multiple devices.</div>
|
||||
</div>
|
||||
<div class="page-card-side"><a href="https://cloud.blender.org/blog/introducing-blender-sync"><img class="img-responsive" src="{{ url_for('static_cloud', filename='img/2016_06_30_sync.jpg') }}"/></a></div>
|
||||
</section>
|
||||
<section class="page-card">
|
||||
<div class="page-card-side"><a href="https://cloud.blender.org/blog/introducing-image-sharing"><img class="img-responsive" src="{{ url_for('static_cloud', filename='img/2016_07_14_image.jpg') }}"/></a></div>
|
||||
<div class="page-card-side">
|
||||
<h2 class="page-card-title">Image Sharing<small>July 14th, 2016</small></h2>
|
||||
<div class="page-card-summary">Quickly share renders and Blender screenshots within Blender with our add-on.</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="page-card">
|
||||
<div class="page-card-side">
|
||||
<h2 class="page-card-title"><a href="https://cloud.blender.org/blog/introducing-the-hdri-library">HDRI Library<small>July 27th, 2016</small></a></h2>
|
||||
<div class="page-card-summary">High-dynamic range images are now available on Blender Cloud! With their own special viewer. Also available via the Blender Cloud add-on.</div>
|
||||
</div>
|
||||
<div class="page-card-side"><a href="https://cloud.blender.org/blog/introducing-the-hdri-library"><img class="img-responsive" src="{{ url_for('static_cloud', filename='img/2016_07_27_hdri.jpg') }}"/></a></div>
|
||||
</section>
|
||||
<section class="page-card">
|
||||
<div class="page-card-side"><a href="https://cloud.blender.org/blog/introducing-the-hdri-library"><img class="img-responsive" src="{{ url_for('static_cloud', filename='img/2016_12_06_toon.jpg') }}"/></a></div>
|
||||
<div class="page-card-side">
|
||||
<h2 class="page-card-title"><a href="https://cloud.blender.org/blog/new-training-toon-character-workflow">Toon Character Workflow<small>December 6th, 2016</small></a></h2>
|
||||
<div class="page-card-summary">YouTube star Dillon Gu joins Blender Cloud for a new tutorial series that will guide you from the basics to a finished toon-shaded character.</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="page-card">
|
||||
<div class="page-card-side">
|
||||
<h2 class="page-card-title">Agent 327 - Barbershop</h2>
|
||||
<div class="page-card-summary">
|
||||
<p>
|
||||
Follow the ongoing progress of the Barbershop fight scene, an animation test for the Agent 327 project. By subscribing to Blender Cloud, you get access
|
||||
to all resources and training produced so far!
|
||||
</p><a class="page-card-cta" href="https://store.blender.org/product/membership/">Subscribe</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="page-card-side"><a href="https://cloud.blender.org/p/agent-327"><img class="img-responsive" src="{{ url_for('static_cloud', filename='img/2017_03_10_agent.jpg') }}"/></a></div>
|
||||
</section>
|
||||
</div>
|
||||
</div>{% endblock body%}
|
41
rsync_ui.sh
41
rsync_ui.sh
@@ -47,3 +47,44 @@ rsync -avh $ASSETS root@${DEPLOYHOST}:/data/git/pillar/pillar/web/static/assets/
|
||||
echo
|
||||
echo "*** SYNCING TEMPLATES ***"
|
||||
rsync -avh $TEMPLATES root@${DEPLOYHOST}:/data/git/pillar/pillar/web/templates/
|
||||
|
||||
# macOS does not support readlink -f, so we use greadlink instead
|
||||
if [[ `uname` == 'Darwin' ]]; then
|
||||
command -v greadlink 2>/dev/null 2>&1 || { echo >&2 "Install greadlink using brew."; exit 1; }
|
||||
readlink='greadlink'
|
||||
else
|
||||
readlink='readlink'
|
||||
fi
|
||||
|
||||
BLENDER_CLOUD_DIR="$(dirname "$($readlink -f "$0")")"
|
||||
if [ ! -d "$BLENDER_CLOUD_DIR" ]; then
|
||||
echo "Unable to find Blender Cloud dir '$BLENDER_CLOUD_DIR'"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
ASSETS="$BLENDER_CLOUD_DIR/cloud/static/assets/"
|
||||
TEMPLATES="$BLENDER_CLOUD_DIR/cloud/templates/flamenco"
|
||||
|
||||
if [ ! -d "$ASSETS" ]; then
|
||||
echo "Unable to find assets dir $ASSETS"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
cd $BLENDER_CLOUD_DIR
|
||||
if [ $(git rev-parse --abbrev-ref HEAD) != "production" ]; then
|
||||
echo "You are NOT on the production branch, refusing to rsync_ui." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo
|
||||
echo "*** GULPA GULPA ***"
|
||||
./gulp --production
|
||||
|
||||
echo
|
||||
echo "*** SYNCING ASSETS ***"
|
||||
# Exclude files managed by Git.
|
||||
rsync -avh $ASSETS --exclude js/vendor/ root@${DEPLOYHOST}:/data/git/blender-cloud/cloud/static/assets/
|
||||
|
||||
echo
|
||||
echo "*** SYNCING TEMPLATES ***"
|
||||
rsync -avh $TEMPLATES root@${DEPLOYHOST}:/data/git/blender-cloud/cloud/templates/
|
||||
|
229
src/templates/about.pug
Normal file
229
src/templates/about.pug
Normal file
@@ -0,0 +1,229 @@
|
||||
| {% extends 'layout.html' %}
|
||||
| {% block page_title %}Welcome{% endblock %}
|
||||
| {% block css %}
|
||||
| {{ super() }}
|
||||
style.
|
||||
.page-card-side {
|
||||
padding: 60px 10px !important;
|
||||
}
|
||||
| {% endblock css %}
|
||||
| {% block body %}
|
||||
#page-container
|
||||
#page-header
|
||||
.page-title(style='text-align: left')
|
||||
em ABOUT
|
||||
i.pi-blender-cloud-logo
|
||||
.page-title-summary
|
||||
| Blender Cloud means inspiration, knowledge, and tools in one place.
|
||||
br
|
||||
| Started in 2014, it has been pushing the meaning of recurring crowdfunding ever since.
|
||||
br
|
||||
| By subscribing to Blender Cloud you support the creation of open content,
|
||||
br
|
||||
| the development of high-end production tools like Blender and access a
|
||||
br
|
||||
| unique set of learning and creative resources.
|
||||
#page-content
|
||||
section.page-card
|
||||
.page-card-side
|
||||
h2.page-card-title
|
||||
| Launch at SXSW
|
||||
small March 9th, 2014
|
||||
.page-card-summary
|
||||
| First happy cloud video and crowdfunding for Cosmos Laundromat Pilot.
|
||||
.page-card-side
|
||||
a(href='https://gooseberry.blender.org/gooseberry-campaign-launched-we-need-10k-people-to-help/')
|
||||
img.img-responsive(src="{{ url_for('static_cloud', filename='img/2014_03_09_sxsw.jpg') }}")
|
||||
section.page-card
|
||||
.page-card-side
|
||||
a(href='https://gooseberry.blender.org/gooseberry-campaign-launched-we-need-10k-people-to-help/')
|
||||
img.img-responsive(src="{{ url_for('static_cloud', filename='img/2014_03_10_cosmos.jpg') }}")
|
||||
.page-card-side
|
||||
h2.page-card-title
|
||||
| Gooseberry | Cosmos Laundromat
|
||||
small March 10th, 2015
|
||||
.page-card-summary
|
||||
| Weekly folders with updates for subscribers. Initial development of Attract, which will become the new cloud some months later on.
|
||||
section.page-card
|
||||
.page-card-side
|
||||
h2.page-card-title
|
||||
| Glass Half
|
||||
small October 30th, 2015
|
||||
.page-card-summary
|
||||
| Introducing integrated blogs in Blender Cloud projects. Glass Half is the first project fully developed on the new Blender Cloud. It's also the first and only project to have share its
|
||||
a(href='https://cloud.blender.org/p/glass-half/5627bb22f0e7220061109c9f') animation dailies
|
||||
| ! But the biggest outcome from Glass Half was definitely
|
||||
a(href='https://cloud.blender.org/p/glass-half/569d6044c379cf445461293e') Flexirig
|
||||
| .
|
||||
.page-card-side
|
||||
a(href='https://cloud.blender.org/p/glass-half/blog/glass-half-premiere')
|
||||
img.img-responsive(src="{{ url_for('static_cloud', filename='img/2015_10_30_glass.jpg') }}")
|
||||
section.page-card
|
||||
.page-card-side
|
||||
a(href='https://cloud.blender.org/blog/new-art-gallery-with-gleb-alexandrov')
|
||||
img.img-responsive(src="{{ url_for('static_cloud', filename='img/2015_11_19_art.jpg') }}")
|
||||
.page-card-side
|
||||
h2.page-card-title
|
||||
| Art Gallery
|
||||
small November 19th, 2015
|
||||
.page-card-summary
|
||||
| Learn by example. Introducing a place for amazing artwork to be shared, along with its blendfiles and breakdowns.
|
||||
section.page-card
|
||||
.page-card-side
|
||||
h2.page-card-title
|
||||
| Blender Institute Podcast
|
||||
small November 24th, 2015
|
||||
.page-card-summary
|
||||
| With so much going on in the Cloud at at the studio. The Blender Institute Podcast was born! Sharing our daily studio work, Blender community news, and interacting with the awesome Blender Cloud subscribers.
|
||||
.page-card-side
|
||||
a(href='https://cloud.blender.org/blog/introducing-blender-institute-podcast')
|
||||
img.img-responsive(src="{{ url_for('static_cloud', filename='img/2015_11_24_bip.jpg') }}")
|
||||
section.page-card
|
||||
.page-card-side
|
||||
a(href='https://cloud.blender.org/p/blenrig/blog/welcome-to-the-blenrig-project')
|
||||
img.img-responsive(src="{{ url_for('static_cloud', filename='img/2015_12_01_blenrig.jpg') }}")
|
||||
.page-card-side
|
||||
h2.page-card-title
|
||||
| Blenrig
|
||||
small December 1st, 2015
|
||||
.page-card-summary
|
||||
| The most powerful and versatile rigging framework for Blender, used and tested through Cosmos Laundromat and the Caminandes series, is now part of Blender Cloud!
|
||||
section.page-card
|
||||
.page-card-side
|
||||
h2.page-card-title
|
||||
| Texture Library
|
||||
small December 23rd, 2015
|
||||
.page-card-summary
|
||||
| The biggest source for CC0/Public Domain textures on the interwebs goes live. First as beta, as a quick gift right before Xmas 2015!
|
||||
.page-card-side
|
||||
a(href='https://cloud.blender.org/blog/new-texture-library')
|
||||
img.img-responsive(src="{{ url_for('static_cloud', filename='img/2015_12_23_textures.jpg') }}")
|
||||
section.page-card
|
||||
.page-card-side
|
||||
a(href='https://cloud.blender.org/blog/nraryew-the-character-lib')
|
||||
img.img-responsive(src="{{ url_for('static_cloud', filename='img/2016_01_05_charlib.jpg') }}")
|
||||
.page-card-side
|
||||
h2.page-card-title
|
||||
| Character Library
|
||||
small January 5th, 2016
|
||||
.page-card-summary
|
||||
| High-quality, animation-ready characters collection from all the Blender Institute open projects, plus a brand new one: Vincent!
|
||||
section.page-card
|
||||
.page-card-side
|
||||
h2.page-card-title
|
||||
| Caminandes: Llamigos
|
||||
small January 30th, 2016
|
||||
.page-card-summary
|
||||
| The
|
||||
a(href='https://www.youtube.com/watch?v=SkVqJ1SGeL0') third episode
|
||||
| of the Caminandes series was completely done -and sponsored! through Blender Cloud. It's also the only project til date to have
|
||||
a(href='https://www.youtube.com/watch?v=kQH897V9bDg&list=PLI2TkLMzCSr_H6ppmzDtU0ut0RwxGvXjv') nicely edited Weekly video reports
|
||||
| .
|
||||
.page-card-side
|
||||
a(href='https://cloud.blender.org/p/caminandes-3/blog/caminandes-llamigos')
|
||||
img.img-responsive(src="{{ url_for('static_cloud', filename='img/2016_01_30_llamigos.jpg') }}")
|
||||
section.page-card
|
||||
.page-card-side
|
||||
a(href='https://cloud.blender.org/blog/welcome-sybren')
|
||||
img.img-responsive(src="{{ url_for('static_cloud', filename='img/2016_03_01_sybren.jpg') }}")
|
||||
.page-card-side
|
||||
h2.page-card-title
|
||||
| Sybren
|
||||
small March 1st, 2016
|
||||
.page-card-summary
|
||||
| Dr. Sybren Stüvel starts working at the Blender Institute!
|
||||
section.page-card
|
||||
.page-card-side
|
||||
h2.page-card-title
|
||||
| Private Projects
|
||||
small May 3rd, 2016
|
||||
.page-card-summary
|
||||
| Create your own private projects on Blender Cloud.
|
||||
.page-card-side
|
||||
a(href='https://cloud.blender.org/blog/welcome-sybren')
|
||||
img.img-responsive(src="{{ url_for('static_cloud', filename='img/2016_05_03_projects.jpg') }}")
|
||||
section.page-card
|
||||
.page-card-side
|
||||
a(href='https://cloud.blender.org/blog/introducing-project-sharing')
|
||||
img.img-responsive(src="{{ url_for('static_cloud', filename='img/2016_05_09_projectsharing.jpg') }}")
|
||||
.page-card-side
|
||||
h2.page-card-title
|
||||
| Project Sharing
|
||||
small May 9th, 2016
|
||||
.page-card-summary
|
||||
| Team work! Share your projects with other Blender Cloud subscribers.
|
||||
section.page-card
|
||||
.page-card-side
|
||||
h2.page-card-title
|
||||
| Blender Cloud add-on with Texture Library
|
||||
small May 11th, 2016
|
||||
.page-card-summary
|
||||
| Browse the textures from within Blender!
|
||||
.page-card-side
|
||||
a(href='https://cloud.blender.org/blog/introducing-project-sharing')
|
||||
img.img-responsive(src="{{ url_for('static_cloud', filename='img/2016_05_11_addon.jpg') }}")
|
||||
section.page-card
|
||||
.page-card-side
|
||||
a(href='https://cloud.blender.org/blog/introducing-private-texture-libraries')
|
||||
img.img-responsive(src="{{ url_for('static_cloud', filename='img/2016_05_23_privtextures.jpg') }}")
|
||||
.page-card-side
|
||||
h2.page-card-title
|
||||
| Private Texture Libraries
|
||||
small May 23rd, 2016
|
||||
.page-card-summary
|
||||
| Create your own private textures library and browse it in Blender with our add-on.
|
||||
section.page-card
|
||||
.page-card-side
|
||||
h2.page-card-title
|
||||
| Blender Sync
|
||||
small June 30th, 2016
|
||||
.page-card-summary
|
||||
| Sync your Blender preferences across multiple devices.
|
||||
.page-card-side
|
||||
a(href='https://cloud.blender.org/blog/introducing-blender-sync')
|
||||
img.img-responsive(src="{{ url_for('static_cloud', filename='img/2016_06_30_sync.jpg') }}")
|
||||
section.page-card
|
||||
.page-card-side
|
||||
a(href='https://cloud.blender.org/blog/introducing-image-sharing')
|
||||
img.img-responsive(src="{{ url_for('static_cloud', filename='img/2016_07_14_image.jpg') }}")
|
||||
.page-card-side
|
||||
h2.page-card-title
|
||||
| Image Sharing
|
||||
small July 14th, 2016
|
||||
.page-card-summary
|
||||
| Quickly share renders and Blender screenshots within Blender with our add-on.
|
||||
section.page-card
|
||||
.page-card-side
|
||||
h2.page-card-title
|
||||
a(href='https://cloud.blender.org/blog/introducing-the-hdri-library')
|
||||
| HDRI Library
|
||||
small July 27th, 2016
|
||||
.page-card-summary
|
||||
| High-dynamic range images are now available on Blender Cloud! With their own special viewer. Also available via the Blender Cloud add-on.
|
||||
.page-card-side
|
||||
a(href='https://cloud.blender.org/blog/introducing-the-hdri-library')
|
||||
img.img-responsive(src="{{ url_for('static_cloud', filename='img/2016_07_27_hdri.jpg') }}")
|
||||
section.page-card
|
||||
.page-card-side
|
||||
a(href='https://cloud.blender.org/blog/introducing-the-hdri-library')
|
||||
img.img-responsive(src="{{ url_for('static_cloud', filename='img/2016_12_06_toon.jpg') }}")
|
||||
.page-card-side
|
||||
h2.page-card-title
|
||||
a(href='https://cloud.blender.org/blog/new-training-toon-character-workflow')
|
||||
| Toon Character Workflow
|
||||
small December 6th, 2016
|
||||
.page-card-summary
|
||||
| YouTube star Dillon Gu joins Blender Cloud for a new tutorial series that will guide you from the basics to a finished toon-shaded character.
|
||||
section.page-card
|
||||
.page-card-side
|
||||
h2.page-card-title
|
||||
| Agent 327 - Barbershop
|
||||
.page-card-summary
|
||||
p
|
||||
| Follow the ongoing progress of the Barbershop fight scene, an animation test for the Agent 327 project. By subscribing to Blender Cloud, you get access
|
||||
| to all resources and training produced so far!
|
||||
a.page-card-cta(href='https://store.blender.org/product/membership/') Subscribe
|
||||
.page-card-side
|
||||
a(href='https://cloud.blender.org/p/agent-327')
|
||||
img.img-responsive(src="{{ url_for('static_cloud', filename='img/2017_03_10_agent.jpg') }}")
|
||||
| {% endblock body%}
|
361
src/templates/homepage.pug
Normal file
361
src/templates/homepage.pug
Normal file
@@ -0,0 +1,361 @@
|
||||
| {% extends 'layout.html' %}
|
||||
| {% from '_macros/_navigation.html' import navigation_tabs %}
|
||||
|
||||
| {% set title = 'homepage' %}
|
||||
|
||||
| {% block og %}
|
||||
meta(property="og:type", content="website")
|
||||
meta(property="og:url", content="https://cloud.blender.org/")
|
||||
|
||||
meta(property="og:title", content="Blender Cloud")
|
||||
meta(name="twitter:title", content="Blender Cloud")
|
||||
|
||||
meta(property="og:description", content="Blender Cloud is a web based service developed by Blender Institute that allows people to access the training videos and all the data from the open projects.")
|
||||
meta(name="twitter:description", content="Blender Cloud is a web based service developed by Blender Institute that allows people to access the training videos and all the data from the open projects.")
|
||||
|
||||
meta(property="og:image", content="{% if main_project.picture_header %}{{ main_project.picture_header.thumbnail('l', api=api) }}{% else %}{{ url_for('static', filename='assets/img/backgrounds/background_caminandes_3_02.jpg')}}{% endif %}")
|
||||
meta(name="twitter:image", content="{% if main_project.picture_header %}{{ main_project.picture_header.thumbnail('l', api=api) }}{% else %}{{ url_for('static', filename='assets/img/backgrounds/background_caminandes_3_02.jpg')}}{% endif %}")
|
||||
| {% endblock %}
|
||||
|
||||
| {% block body %}
|
||||
.dashboard-container
|
||||
section#main
|
||||
| {{ navigation_tabs(title) }}
|
||||
|
||||
section#stream
|
||||
|
||||
h3#activity-stream__title
|
||||
| Activity Stream
|
||||
|
||||
ul#activity-stream__filters
|
||||
li Filter
|
||||
li.filter.active(
|
||||
data-filter='image',
|
||||
title="List images")
|
||||
i.pi-picture
|
||||
li.filter.active(
|
||||
data-filter='video',
|
||||
title="List videos")
|
||||
i.pi-film-thick
|
||||
li.filter.active(
|
||||
data-filter='file',
|
||||
title="List files")
|
||||
i.pi-file-archive
|
||||
li.filter(
|
||||
data-filter='comment',
|
||||
title="List comments")
|
||||
i.pi-comment
|
||||
|
||||
ul#activity-stream__list
|
||||
| {% for n in activity_stream %}
|
||||
li.activity-stream__list-item(
|
||||
class="{{ n.node_type }} {{ n.properties.content_type }} {% if n.picture %}with-picture{% endif %}",
|
||||
data-url="{{ url_for_node(node=n) }}")
|
||||
a.activity-stream__list-thumbnail(
|
||||
class="{{ n.properties.content_type }}",
|
||||
href="{{ url_for_node(node=n) }}")
|
||||
| {% if n.picture %}
|
||||
img(src="{{ n.picture.thumbnail('m', api=api) }}")
|
||||
| {% endif %}
|
||||
|
||||
.activity-stream__list-thumbnail-icon
|
||||
| {% if n.node_type == 'asset' %}
|
||||
| {% if n.properties.content_type == 'video' %}
|
||||
i.pi-play
|
||||
| {% elif n.properties.content_type == 'image' %}
|
||||
i.pi-picture
|
||||
| {% elif n.properties.content_type == 'file' %}
|
||||
i.pi-file-archive
|
||||
| {% else %}
|
||||
i.pi-folder
|
||||
| {% endif %}
|
||||
| {% elif n.node_type == 'comment' %}
|
||||
i.pi-comment
|
||||
| {% endif %}
|
||||
|
||||
|
||||
.activity-stream__list-details
|
||||
a.title(href="{{ url_for_node(node=n) }}")
|
||||
| {% if n.node_type == 'comment' %}
|
||||
| {{ n.properties.content | striptags | truncate(200) }}
|
||||
| {% else %}
|
||||
| {{ n.name }}
|
||||
| {% endif %}
|
||||
| {% if n.permissions.world %}
|
||||
.ribbon
|
||||
span free
|
||||
| {% endif %}
|
||||
ul.meta
|
||||
| {% if n.node_type == 'comment' or not n.picture %}
|
||||
li.when
|
||||
a(href="{{ url_for_node(node=n) }}", title="{{ n._created }}") {{ n._created | pretty_date_time }}
|
||||
li.who {{ n.user.full_name }}
|
||||
| {% endif %}
|
||||
|
||||
| {% if n.attached_to %}
|
||||
li.where-parent
|
||||
a(href="{{ url_for_node(node_id=n.attached_to._id) }}") {{ n.attached_to.name }}
|
||||
| {% endif %}
|
||||
li.where-project
|
||||
a.project(href="{{ url_for('projects.view', project_url=n.project.url) }}") {{ n.project.name }}
|
||||
li.what
|
||||
| {% if n.node_type == 'asset' %}
|
||||
| {{ n.properties.content_type | undertitle }}
|
||||
| {% elif n.node_type != 'comment' %}
|
||||
| {{ n.node_type | undertitle }}
|
||||
| {% endif %}
|
||||
|
||||
| {% if n.picture %}
|
||||
ul.meta.extra
|
||||
li.when
|
||||
a(href="{{ url_for_node(node=n) }}", title="{{ n._created }}") {{ n._created | pretty_date_time }}
|
||||
li.who {{ n.user.full_name }}
|
||||
| {% endif %}
|
||||
| {% endfor %}
|
||||
|
||||
li.activity-stream__list-item.empty#activity-stream__empty
|
||||
| No items to list.
|
||||
|
||||
|
||||
section#side
|
||||
section.announcement.hidden
|
||||
| {% if main_project.picture_header %}
|
||||
a(href="https://cloud.blender.org/p/agent-327/")
|
||||
img.header(
|
||||
src="{{ main_project.picture_header.thumbnail('l', api=api) }}")
|
||||
| {% endif %}
|
||||
.text
|
||||
.title
|
||||
a(href="https://cloud.blender.org/p/agent-327/")
|
||||
span In production:
|
||||
strong Agent 327
|
||||
|
||||
.lead
|
||||
span.
|
||||
Follow the ongoing progress of the Barbershop fight scene, a character study for the Agent 327 project.
|
||||
|
||||
.buttons
|
||||
a.btn.btn-default.btn-outline.orange(
|
||||
href="https://cloud.blender.org/p/agent-327/blog/")
|
||||
| Blog
|
||||
a.btn.btn-default.btn-outline.blue(
|
||||
href="https://cloud.blender.org/p/agent-327/")
|
||||
| Learn More
|
||||
|
||||
section#blog-stream
|
||||
a.feed(
|
||||
href="{{ url_for('main.feeds_blogs') }}",
|
||||
title="Blender Cloud & Projects Blog Feed",
|
||||
data-toggle="tooltip",
|
||||
data-placement="left")
|
||||
i.pi-rss
|
||||
|
||||
h3
|
||||
a(href="{{ url_for('main.main_blog') }}") Blog
|
||||
|
||||
ul#blog-stream__list
|
||||
| {% if latest_posts %}
|
||||
| {% for n in latest_posts %}
|
||||
| {% if n.picture and loop.first %}
|
||||
li.blog-stream__list-item.featured
|
||||
a.blog-stream__thumbnail(
|
||||
href="{{ url_for_node(node=n) }}")
|
||||
img(src="{{ n.picture.thumbnail('l', api=api) }}")
|
||||
a.title(href="{{ url_for_node(node=n) }}")
|
||||
| {{ n.name }}
|
||||
|
||||
ul.meta
|
||||
li.when
|
||||
a(href="{{ url_for_node(node=n) }}",
|
||||
title="Updated {{ n._updated | pretty_date }}")
|
||||
| {{ n._created | pretty_date }}
|
||||
li.where-project
|
||||
a.project(href="{{ url_for('projects.view', project_url=n.project.url) }}") {{ n.project.name }}
|
||||
| {% else %}
|
||||
li.blog-stream__list-item
|
||||
a.blog-stream__list-thumbnail(href="{{ url_for_node(node=n) }}")
|
||||
| {% if n.picture %}
|
||||
img.image(src="{{ n.picture.thumbnail('s', api=api) }}")
|
||||
| {% else %}
|
||||
i.pi-newspaper
|
||||
| {% endif %}
|
||||
.blog-stream__list-details
|
||||
a.title(href="{{ url_for_node(node=n) }}") {{ n.name }}
|
||||
ul.meta
|
||||
li.when
|
||||
a(href="{{ url_for_node(node=n) }}",
|
||||
title="Updated {{ n._updated | pretty_date }}")
|
||||
| {{ n._created | pretty_date }}
|
||||
li.where-project
|
||||
a.project(href="{{ url_for('projects.view', project_url=n.project.url) }}") {{ n.project.name }}
|
||||
| {% endif %}
|
||||
| {% endfor %}
|
||||
| {% else %}
|
||||
li.blog-stream__list-item
|
||||
.blog-stream__list-details
|
||||
ul.meta
|
||||
li.when No updates yet
|
||||
| {% endif %}
|
||||
li.blog-stream__list-item.more
|
||||
a(href="{{ url_for('main.main_blog') }}") See All Blog Posts
|
||||
|
||||
|
||||
section#random-asset
|
||||
h3
|
||||
a(href="/search") Explore the Cloud
|
||||
span.section-lead Random selection of the best assets & tutorials
|
||||
|
||||
ul.random-asset__list
|
||||
| {% for n in random_featured %}
|
||||
| {% if n.picture and loop.first %}
|
||||
li.random-asset__list-item.featured
|
||||
| {% if n.permissions.world %}
|
||||
.ribbon
|
||||
span free
|
||||
| {% endif %}
|
||||
a.random-asset__thumbnail(
|
||||
href="{{ url_for_node(node=n) }}",
|
||||
class="{{ n.properties.content_type }}")
|
||||
| {% if n.picture %}
|
||||
img(src="{{ n.picture.thumbnail('l', api=api) }}")
|
||||
|
||||
| {% if n.properties.content_type == 'video' %}
|
||||
i.pi-play
|
||||
| {% endif %}
|
||||
|
||||
| {% endif %}
|
||||
|
||||
a.title(href="{{ url_for_node(node=n) }}")
|
||||
| {{ n.name }}
|
||||
ul.meta
|
||||
li.what
|
||||
a(href="{{ url_for_node(node=n) }}")
|
||||
| {% if n.properties.content_type %}{{ n.properties.content_type }}{% else %}Folder{% endif %}
|
||||
li.where
|
||||
a(href="{{ url_for('projects.view', project_url=n.project.url) }}")
|
||||
| {{ n.project.name }}
|
||||
| {% else %}
|
||||
|
||||
li.random-asset__list-item
|
||||
| {% if n.permissions.world %}
|
||||
.ribbon
|
||||
span free
|
||||
| {% endif %}
|
||||
a.random-asset__list-thumbnail(
|
||||
href="{{ url_for_node(node=n) }}",
|
||||
class="{{ n.properties.content_type }}")
|
||||
| {% if n.picture %}
|
||||
img.image(src="{{ n.picture.thumbnail('s', api=api) }}")
|
||||
| {% else %}
|
||||
| {% if n.properties.content_type == 'video' %}
|
||||
i.pi-film-thick
|
||||
| {% elif n.properties.content_type == 'image' %}
|
||||
i.pi-picture
|
||||
| {% elif n.properties.content_type == 'file' %}
|
||||
i.pi-file-archive
|
||||
| {% else %}
|
||||
i.pi-folder
|
||||
| {% endif %}
|
||||
| {% endif %}
|
||||
.random-asset__list-details
|
||||
a.title(href="{{ url_for_node(node=n) }}") {{ n.name }}
|
||||
ul.meta
|
||||
li.what
|
||||
a(href="{{ url_for_node(node=n) }}")
|
||||
| {% if n.properties.content_type %}{{ n.properties.content_type }}{% else %}Folder{% endif %}
|
||||
li.where
|
||||
a(href="{{ url_for('projects.view', project_url=n.project.url) }}") {{ n.project.name }}
|
||||
|
||||
| {% endif %}
|
||||
| {% endfor %}
|
||||
|
||||
|
||||
| {% endblock %}
|
||||
|
||||
| {% block footer_scripts %}
|
||||
script.
|
||||
$(function () {
|
||||
|
||||
/* cleanup mentions in comments */
|
||||
$('.activity-stream__list-details a.title').each(function(){
|
||||
$(this).text($(this).text().replace(/\*|\@|\<(.*?)\>/g, ''));
|
||||
});
|
||||
|
||||
function saveFilters(){
|
||||
var filtersEnabled = [];
|
||||
|
||||
$('ul#activity-stream__filters li.filter.active').each(function(){
|
||||
filtersEnabled.push($(this).attr('data-filter'));
|
||||
});
|
||||
|
||||
setJSONCookie('bcloud_ui', 'homepage_activity_filters', filtersEnabled);
|
||||
}
|
||||
|
||||
function loadFilters(){
|
||||
|
||||
var filters = Cookies.getJSON('bcloud_ui');
|
||||
|
||||
if (filters) {
|
||||
if (filters.homepage_activity_filters && filters.homepage_activity_filters.length){
|
||||
/* Clear style on filters/items */
|
||||
$('ul#activity-stream__filters li.filter').removeClass('active');
|
||||
$('ul#activity-stream__list li.activity-stream__list-item').addClass('hidden');
|
||||
|
||||
for (var f in filters.homepage_activity_filters){
|
||||
|
||||
var savedFilter = filters.homepage_activity_filters[f];
|
||||
|
||||
/* Style each filter type */
|
||||
$('ul#activity-stream__filters li.filter').each(function(){
|
||||
if ($(this).attr('data-filter') == savedFilter){
|
||||
$(this).addClass('active');
|
||||
}
|
||||
});
|
||||
|
||||
/* Show items that are on the cookie */
|
||||
$('ul#activity-stream__list li.activity-stream__list-item').each(function(){
|
||||
if ($(this).hasClass(savedFilter)) {
|
||||
$(this).removeClass('hidden');
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Toggle filters */
|
||||
$('ul#activity-stream__filters li.filter').click(function(){
|
||||
|
||||
// Style the filter button
|
||||
$(this).toggleClass('active');
|
||||
|
||||
var filterType = $(this).attr('data-filter');
|
||||
|
||||
saveFilters();
|
||||
|
||||
// Toggle hidden class on list item if it has class matching the filter
|
||||
$('ul#activity-stream__list li.activity-stream__list-item').each(function(){
|
||||
if ($(this).hasClass(filterType)) {
|
||||
$(this).toggleClass('hidden');
|
||||
}
|
||||
});
|
||||
|
||||
var hiddenItems = $('ul#activity-stream__list li.activity-stream__list-item.hidden').length;
|
||||
|
||||
if (hiddenItems == '{{ activity_stream|length }}'){
|
||||
$('#activity-stream__empty').show();
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
loadFilters();
|
||||
|
||||
/* Click on the whole asset/comment row to go */
|
||||
$('li.activity-stream__list-item.asset, li.activity-stream__list-item.comment').click(function(e){
|
||||
window.location.href = $(this).data('url');
|
||||
$(this).addClass('active');
|
||||
});
|
||||
|
||||
hopToTop(); // Display jump to top button
|
||||
});
|
||||
| {% endblock %}
|
332
src/templates/layout.pug
Normal file
332
src/templates/layout.pug
Normal file
@@ -0,0 +1,332 @@
|
||||
doctype
|
||||
html(lang="en")
|
||||
head
|
||||
meta(charset="utf-8")
|
||||
title {% if self.page_title() %}{% block page_title %}{% endblock %} — {% endif %}Blender Cloud
|
||||
meta(name="viewport", content="width=device-width, initial-scale=1.0")
|
||||
meta(name="description", content="Blender Cloud is a web based service developed by Blender Institute that allows people to access the training videos and all the data from the open projects.")
|
||||
meta(name="author", content="Blender Institute")
|
||||
meta(name="theme-color", content="#3e92aa")
|
||||
|
||||
| {% if config['GOOGLE_SITE_VERIFICATION'] %}
|
||||
meta(name="google-site-verification" content="{{ config['GOOGLE_SITE_VERIFICATION'] }}")
|
||||
| {% endif %}
|
||||
|
||||
meta(property="og:site_name", content="Blender Cloud")
|
||||
meta(property="og:locale", content="en_US")
|
||||
meta(name="twitter:card", content="summary_large_image")
|
||||
meta(name="twitter:site", content="@Blender_Cloud")
|
||||
|
||||
| {% block og %}
|
||||
meta(property="og:title", content="Blender Cloud")
|
||||
meta(property="og:url", content="https://cloud.blender.org")
|
||||
meta(property="og:type", content="website")
|
||||
meta(property="og:image", content="{{ url_for('static', filename='assets/img/backgrounds/background_gleb_locomotive.jpg')}}")
|
||||
meta(property="og:description", content="Blender Cloud is a web based service developed by Blender Institute that allows people to access the training videos and all the data from the open projects.")
|
||||
|
||||
meta(name="twitter:title", content="Blender Cloud")
|
||||
meta(name="twitter:description", content="Blender Cloud is a web based service developed by Blender Institute that allows people to access the training videos and all the data from the open projects.")
|
||||
meta(name="twitter:image", content="{{ url_for('static', filename='assets/img/backgrounds/background_gleb_locomotive.jpg')}}")
|
||||
| {% endblock %}
|
||||
|
||||
script(src="{{ url_for('static_pillar', filename='assets/js/vendor/jquery-3.1.0.min.js')}}")
|
||||
script(src="{{ url_for('static_pillar', filename='assets/js/vendor/jquery.typeahead-0.11.1.min.js')}}")
|
||||
script(src="{{ url_for('static_pillar', filename='assets/js/vendor/algoliasearch-3.19.0.min.js')}}")
|
||||
script(src="{{ url_for('static_pillar', filename='assets/js/vendor/js.cookie-2.0.3.min.js')}}")
|
||||
|
||||
script.
|
||||
var algolia = algoliasearch("{{config['ALGOLIA_USER']}}", "{{config['ALGOLIA_PUBLIC_KEY']}}");
|
||||
var algoliaIndex = algolia.initIndex("{{config['ALGOLIA_INDEX_NODES']}}");
|
||||
|
||||
!function(e){"use strict";e.loadCSS=function(t,n,o){var r,i=e.document,l=i.createElement("link");if(n)r=n;else{var d=(i.body||i.getElementsByTagName("head")[0]).childNodes;r=d[d.length-1]}var a=i.styleSheets;l.rel="stylesheet",l.href=t,l.media="only x",r.parentNode.insertBefore(l,n?r:r.nextSibling);var f=function(e){for(var t=l.href,n=a.length;n--;)if(a[n].href===t)return e();setTimeout(function(){f(e)})};return l.onloadcssdefined=f,f(function(){l.media=o||"all"}),l},"undefined"!=typeof module&&(module.exports=e.loadCSS)}(this);
|
||||
|
||||
loadCSS( "//fonts.googleapis.com/css?family=Roboto:300,400" );
|
||||
|
||||
script(src="{{ url_for('static_pillar', filename='assets/js/markdown.min.js', v=17320171) }}")
|
||||
script(src="{{ url_for('static_pillar', filename='assets/js/tutti.min.js', v=17320171) }}")
|
||||
|
||||
link(href="{{ url_for('static', filename='assets/img/favicon.png') }}", rel="shortcut icon")
|
||||
link(href="{{ url_for('static', filename='assets/img/apple-touch-icon-precomposed.png') }}", rel="icon apple-touch-icon-precomposed", sizes="192x192")
|
||||
|
||||
link(href="{{ url_for('static_pillar', filename='assets/css/vendor/bootstrap.min.css') }}", rel="stylesheet")
|
||||
|
||||
| {% block head %}{% endblock %}
|
||||
|
||||
| {% block css %}
|
||||
link(href="{{ url_for('static_pillar', filename='assets/css/font-pillar.css', v=17320171) }}", rel="stylesheet")
|
||||
link(href="{{ url_for('static_pillar', filename='assets/css/base.css', v=17320171) }}", rel="stylesheet")
|
||||
| {% if title == 'blog' %}
|
||||
link(href="{{ url_for('static_pillar', filename='assets/css/blog.css', v=17320171) }}", rel="stylesheet")
|
||||
| {% else %}
|
||||
link(href="{{ url_for('static_pillar', filename='assets/css/main.css', v=17320171) }}", rel="stylesheet")
|
||||
| {% endif %}
|
||||
| {% endblock %}
|
||||
|
||||
|
||||
| {% if not title %}{% set title="default" %}{% endif %}
|
||||
|
||||
body(class="{{ title }}")
|
||||
.container-page
|
||||
header.navbar-backdrop-container
|
||||
| {% block header_backdrop %}
|
||||
img(src="{{ url_for('static', filename='assets/img/backgrounds/pattern_02_blur.jpg')}}")
|
||||
| {% endblock %}
|
||||
|
||||
| {% with messages = get_flashed_messages(with_categories=True) %}
|
||||
| {% if messages %}
|
||||
|
||||
| {% for (category, message) in messages %}
|
||||
.alert(role="alert", class="alert-{{ category }}")
|
||||
i.alert-icon(class="{{ category }}")
|
||||
span {{ message }}
|
||||
button.close(type="button", data-dismiss="alert")
|
||||
i.pi-cancel
|
||||
| {% endfor %}
|
||||
|
||||
| {% endif %}
|
||||
| {% endwith %}
|
||||
|
||||
nav.navbar.navbar-transparent.navbar-fixed-top
|
||||
.navbar-overlay
|
||||
|
||||
.navbar-container
|
||||
header.navbar-header
|
||||
button.navbar-toggle(data-target=".navbar-collapse", data-toggle="collapse", type="button")
|
||||
span.sr-only Toggle navigation
|
||||
i.pi-menu
|
||||
a.navbar-brand(
|
||||
href="{{ url_for('main.homepage') }}",
|
||||
title="Blender Cloud")
|
||||
span.app-logo
|
||||
i.pi-blender-cloud
|
||||
|
||||
| {% block navigation_search %}
|
||||
.search-input
|
||||
input#cloud-search(
|
||||
type="text",
|
||||
placeholder="Search assets, tutorials...")
|
||||
i.search-icon.pi-search
|
||||
| {% endblock %}
|
||||
|
||||
nav.collapse.navbar-collapse
|
||||
ul.nav.navbar-nav.navbar-right
|
||||
| {% if node and node.properties and node.properties.category %}
|
||||
| {% set category = node.properties.category %}
|
||||
| {% else %}
|
||||
| {% set category = title %}
|
||||
| {% endif %}
|
||||
|
||||
| {% block navigation_sections %}
|
||||
li
|
||||
a.navbar-item(
|
||||
href="{{ url_for('main.main_blog') }}",
|
||||
title="Blender Cloud Blog",
|
||||
data-toggle="tooltip",
|
||||
data-placement="bottom",
|
||||
class="{% if category == 'blog' %}active{% endif %}")
|
||||
span Blog
|
||||
|
||||
li(class="dropdown libraries")
|
||||
a.navbar-item.dropdown-toggle(
|
||||
href="",
|
||||
data-toggle="dropdown",
|
||||
title="Libraries")
|
||||
span Libraries
|
||||
i.pi-angle-down
|
||||
|
||||
ul.dropdown-menu
|
||||
li
|
||||
a.navbar-item(
|
||||
href="{{ url_for('projects.view', project_url='hdri') }}",
|
||||
title="HDRI Library",
|
||||
data-toggle="tooltip",
|
||||
data-placement="left")
|
||||
i.pi-globe
|
||||
| HDRI
|
||||
li
|
||||
a.navbar-item(
|
||||
href="{{ url_for('projects.view', project_url='textures') }}",
|
||||
title="Textures Library",
|
||||
data-toggle="tooltip",
|
||||
data-placement="left")
|
||||
i.pi-folder-texture
|
||||
| Textures
|
||||
li
|
||||
a.navbar-item(
|
||||
href="{{ url_for('projects.view', project_url='characters') }}",
|
||||
title="Character Library",
|
||||
data-toggle="tooltip",
|
||||
data-placement="left")
|
||||
i.pi-character
|
||||
| Characters
|
||||
li
|
||||
a.navbar-item(
|
||||
href="{{ url_for('projects.view', project_url='gallery') }}",
|
||||
title="Curated artwork collection",
|
||||
data-toggle="tooltip",
|
||||
data-placement="left")
|
||||
i.pi-image
|
||||
| Art Gallery
|
||||
|
||||
li
|
||||
a.navbar-item(
|
||||
href="{{ url_for('main.training') }}",
|
||||
title="Training & Tutorials",
|
||||
data-toggle="tooltip",
|
||||
data-placement="bottom",
|
||||
class="{% if category == 'training' %}active{% endif %}")
|
||||
span Training
|
||||
li
|
||||
a.navbar-item(
|
||||
href="{{ url_for('main.open_projects') }}",
|
||||
title="Browse all the Open Projects",
|
||||
data-toggle="tooltip",
|
||||
data-placement="bottom",
|
||||
class="{% if category in ['open-projects', 'film'] %}active{% endif %}")
|
||||
span Open Projects
|
||||
li
|
||||
a.navbar-item(
|
||||
href="{{ url_for('cloud.services') }}",
|
||||
title="Blender Cloud Services",
|
||||
data-toggle="tooltip",
|
||||
data-placement="bottom",
|
||||
class="{% if category == 'services' %}active{% endif %}")
|
||||
span Services
|
||||
| {% endblock %}
|
||||
|
||||
| {% if current_user.is_anonymous %}
|
||||
li
|
||||
a.navbar-item(
|
||||
href="https://store.blender.org/product/membership/",
|
||||
title="Sign up") Sign up
|
||||
| {% endif %}
|
||||
|
||||
| {% from '_macros/_menu.html' import navigation_menu_notifications, navigation_menu_user %}
|
||||
| {{ navigation_menu_notifications(current_user) }}
|
||||
| {{ navigation_menu_user(current_user) }}
|
||||
|
||||
|
||||
.page-content
|
||||
#search-overlay
|
||||
| {% block page_overlay %}
|
||||
#page-overlay
|
||||
| {% endblock %}
|
||||
.page-body
|
||||
| {% block body %}{% endblock %}
|
||||
|
||||
| {% block footer_container %}
|
||||
#footer-container
|
||||
| {% block footer_navigation %}
|
||||
#footer-navigation
|
||||
.container
|
||||
.row
|
||||
.col-md-4.col-xs-6
|
||||
.footer-support
|
||||
h4 Support & Feedback
|
||||
p.
|
||||
Let us know what you think or if you have any issues
|
||||
just write to cloudsupport at blender dot org
|
||||
|
||||
.col-md-2.col-xs-6
|
||||
ul.footer-social
|
||||
li
|
||||
a(href="https://www.facebook.com/BlenderCloudOfficial/",
|
||||
title="Follow us on Facebook")
|
||||
i.pi-social-facebook
|
||||
li
|
||||
a(href="https://twitter.com/Blender_Cloud",
|
||||
title="Follow us on Twitter")
|
||||
i.pi-social-twitter
|
||||
|
||||
.col-md-2.col-xs-6
|
||||
h4
|
||||
a(href="{{ url_for('main.homepage') }}")
|
||||
| Blender Cloud
|
||||
ul.footer-links
|
||||
li
|
||||
a(href="{{ url_for('main.main_blog') }}",
|
||||
title="Blender Cloud Blog")
|
||||
| Blog
|
||||
|
||||
li
|
||||
a(href="{{ url_for('cloud.services') }}",
|
||||
title="Blender Cloud Services")
|
||||
| Services
|
||||
|
||||
li
|
||||
a(href="https://cloud.blender.org/blog/blender-cloud-v3",
|
||||
title="About Blender Cloud")
|
||||
| About
|
||||
|
||||
.col-md-2.col-xs-6
|
||||
h4
|
||||
a(href="https://www.blender.org",
|
||||
title="Blender official Website")
|
||||
| Blender
|
||||
ul.footer-links
|
||||
li
|
||||
a(href="https://www.blender.org",
|
||||
title="Blender official Website")
|
||||
| Blender.org
|
||||
li
|
||||
a(href="https://store.blender.org/",
|
||||
title="The official Blender Store")
|
||||
| Blender Store
|
||||
|
||||
.col-md-2.col-xs-6.special
|
||||
| With the support of the <br/> MEDIA Programme of the European Union<br/><br/>
|
||||
img(alt="MEDIA Programme of the European Union",
|
||||
src="https://gooseberry.blender.org/wp-content/uploads/2014/01/media_programme.png")
|
||||
| {% endblock %}
|
||||
|
||||
| {% block footer %}
|
||||
footer.container
|
||||
#hop(title="Be awesome in space")
|
||||
i.pi-angle-up
|
||||
| {% endblock %}
|
||||
| {% endblock %}
|
||||
|
||||
#notification-pop(data-url="", data-read-toggle="")
|
||||
.nc-progress
|
||||
a#pop-close(href="#", title="Dismiss")
|
||||
i.pi-cancel
|
||||
.nc-item
|
||||
.nc-avatar
|
||||
.nc-text
|
||||
span.nc-date
|
||||
a(href="")
|
||||
|
||||
noscript
|
||||
link(href='//fonts.googleapis.com/css?family=Roboto:300,400', rel='stylesheet', type='text/css')
|
||||
|
||||
script(src="{{ url_for('static_pillar', filename='assets/js/vendor/jquery.bootstrap-3.3.7.min.js', v=17320171) }}")
|
||||
|
||||
script.
|
||||
$(document).ready(function() {
|
||||
{% if current_user.is_authenticated %}
|
||||
getNotificationsLoop(); // Check for new notifications in the background
|
||||
|
||||
// Resize #notifications and change overflow for scrollbars
|
||||
$(window).on("resize", function() { notificationsResize(); });
|
||||
{% endif %}
|
||||
});
|
||||
|
||||
if (typeof $().tooltip != 'undefined'){
|
||||
$('[data-toggle="tooltip"]').tooltip({'delay' : {'show': 0, 'hide': 0}});
|
||||
}
|
||||
if(typeof($.fn.popover) != 'undefined'){
|
||||
$('[data-toggle="popover"]').popover();
|
||||
}
|
||||
|
||||
| {% block footer_scripts_pre %}{% endblock %}
|
||||
| {% block footer_scripts %}{% endblock %}
|
||||
|
||||
|
||||
|
||||
script.
|
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
||||
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
|
||||
ga('create', '{{ config.GOOGLE_ANALYTICS_TRACKING_ID }} ', 'auto', {'allowAnchor': true});
|
||||
ga('send', 'pageview');
|
247
src/templates/services.pug
Normal file
247
src/templates/services.pug
Normal file
@@ -0,0 +1,247 @@
|
||||
| {% extends 'layout.html' %}
|
||||
| {% block page_title %}Services{% endblock %}
|
||||
|
||||
| {% set title = 'services' %}
|
||||
|
||||
| {% block og %}
|
||||
meta(property="og:type", content="website")
|
||||
meta(property="og:url", content="{{ url_for('cloud.services') }}")
|
||||
|
||||
meta(property="og:title", content="Services - Blender Cloud")
|
||||
meta(name="twitter:title", content="Services - Blender Cloud")
|
||||
meta(property="og:description", content="Personal Projects · Blender Integration · Texture Browsing · Production Management")
|
||||
meta(name="twitter:description", content="Personal Projects · Blender Integration · Texture Browsing · Production Management")
|
||||
meta(property="og:image", content="{{ url_for('static', filename='assets/img/backgrounds/background_services.jpg')}}")
|
||||
meta(name="twitter:image", content="{{ url_for('static', filename='assets/img/backgrounds/background_services.jpg')}}")
|
||||
| {% endblock %}
|
||||
|
||||
| {% block header_backdrop %}
|
||||
.navbar-backdrop(
|
||||
style="background-image: url({{ url_for('static', filename='assets/img/backgrounds/services_projects.jpg')}})")
|
||||
.navbar-backdrop-overlay
|
||||
| {% endblock %}
|
||||
|
||||
| {% block page_overlay %}
|
||||
#page-overlay.video
|
||||
.video-embed
|
||||
| {% endblock %}
|
||||
|
||||
| {% block body %}
|
||||
#page-container
|
||||
.container
|
||||
#page-header
|
||||
.page-title
|
||||
| Blender Cloud Services
|
||||
.page-title-summary
|
||||
span.text-background
|
||||
p.
|
||||
Blender Cloud is the creative hub for your projects, powered by Free and Open Source software.
|
||||
|
||||
p.
|
||||
On Blender Cloud you can create and share personal projects, access our texture and HDRI
|
||||
library (or create your own), keep track of your production, manage your renders and much more!
|
||||
|
||||
|
||||
- var addon_text = 'Available through the <a href="{{ url_for(\'cloud.services\') }}#blender-cloud-add-on">Blender Cloud add-on</a>'
|
||||
|
||||
#page-content
|
||||
|
||||
section#blender-cloud-add-on.page-card
|
||||
.page-card-side
|
||||
h2.page-card-title
|
||||
| Blender Cloud add-on
|
||||
.page-card-summary
|
||||
p.
|
||||
The Blender Cloud add-on provides access to most of our services directly within Blender.
|
||||
p.
|
||||
Use the add-on to share images online, submit renders to Flamenco or browse textures and HDRI libraries!
|
||||
|
||||
hr
|
||||
|
||||
small Blender Cloud add-on requires Blender 2.78 or newer
|
||||
|
||||
a.page-card-cta.download(
|
||||
href="https://cloud.blender.org/r/downloads/blender_cloud-latest-addon.zip")
|
||||
i.pi-download
|
||||
| Download add-on <small>v</small> {{ config.BLENDER_CLOUD_ADDON_VERSION }}
|
||||
|
||||
.page-card-side
|
||||
img(
|
||||
src="{{ url_for('static', filename='assets/img/features/blender_cloud_addon_thumbnail.png')}}")
|
||||
|
||||
section#blender-sync.page-card.right
|
||||
.page-card-side
|
||||
h2.page-card-title Blender Sync
|
||||
.page-card-summary
|
||||
| Save your settings once. Use them anywhere.
|
||||
| Carry your Blender configuration with you,
|
||||
| use our add-on to sync your keymaps and preferences.
|
||||
hr
|
||||
small Blender Sync is <strong>free</strong> for everyone! No subscription required.
|
||||
small This add-on requires Blender 2.78 or newer.
|
||||
|
||||
.tip !{addon_text}
|
||||
|
||||
|
||||
a.page-card-cta(
|
||||
href="https://cloud.blender.org/blog/introducing-blender-sync")
|
||||
| Learn More
|
||||
|
||||
.page-card-side
|
||||
img(
|
||||
src="{{ url_for('static', filename='assets/img/features/sync_thumbnail.jpg')}}")
|
||||
|
||||
|
||||
section#texture-browser.page-card.right
|
||||
.page-card-side
|
||||
h2.page-card-title Texture & HDRI Browser
|
||||
.page-card-summary
|
||||
p.
|
||||
Access the <a href="https://cloud.blender.org/p/textures/">Blender Cloud Textures</a>
|
||||
library from within Blender using our exclusive add-on.
|
||||
Create, manage and share <em>your own</em> texture libraries!
|
||||
|
||||
.tip !{addon_text}
|
||||
|
||||
a.page-card-cta.js-watch-video.download(
|
||||
href="https://www.youtube.com/watch?v=-srXYv2Osjw",
|
||||
data-youtube-id="-srXYv2Osjw")
|
||||
i.pi-play
|
||||
| Watch Video
|
||||
|
||||
.page-card-side
|
||||
img(
|
||||
src="{{ url_for('static', filename='assets/img/features/tex_library_thumbnail.jpg')}}")
|
||||
|
||||
|
||||
section#image-sharing.page-card.right
|
||||
.page-card-side
|
||||
h2.page-card-title Image Sharing
|
||||
.page-card-summary
|
||||
| Got a nice render, a Blender oddity, a cool screenshot?
|
||||
| Share it instantly from within Blender to the Cloud, to the world!
|
||||
|
||||
.tip !{addon_text}
|
||||
|
||||
a.page-card-cta.download.js-watch-video(
|
||||
href="https://www.youtube.com/watch?v=yvtqeMBOAyk",
|
||||
data-youtube-id="yvtqeMBOAyk")
|
||||
i.pi-play
|
||||
| Watch Video
|
||||
|
||||
a.page-card-cta.outline(
|
||||
href="https://cloud.blender.org/blog/introducing-image-sharing")
|
||||
| Learn More
|
||||
|
||||
.page-card-side
|
||||
img(
|
||||
src="{{ url_for('static', filename='assets/img/features/image_sharing_thumbnail.jpg')}}")
|
||||
|
||||
|
||||
section#projects.page-card.right
|
||||
.page-card-side
|
||||
h2.page-card-title Private Projects
|
||||
.page-card-summary.
|
||||
Create and manage your own personal projects.
|
||||
Upload assets and collaborate with other Blender Cloud members.
|
||||
|
||||
a.page-card-cta(
|
||||
href="https://cloud.blender.org/blog/introducing-private-projects")
|
||||
| Learn More
|
||||
|
||||
.page-card-side
|
||||
img(
|
||||
src="{{ url_for('static', filename='assets/img/features/projects_thumbnail.jpg')}}")
|
||||
|
||||
|
||||
section#attract.page-card.right
|
||||
.page-card-side
|
||||
h2.page-card-title
|
||||
| Attract
|
||||
.page-card-summary.
|
||||
Production-management software for your film, game, or commercial projects.
|
||||
|
||||
a.page-card-cta.download.js-watch-video(
|
||||
href="https://www.youtube.com/watch?v=b9x1rlyyt_o",
|
||||
data-youtube-id="b9x1rlyyt_o")
|
||||
i.pi-play
|
||||
| Watch Video
|
||||
|
||||
a.page-card-cta(
|
||||
href="https://cloud.blender.org/blog/attract-and-flamenco-public-beta",
|
||||
title="Learn more about Attract")
|
||||
| Learn More
|
||||
|
||||
.page-card-side
|
||||
img(
|
||||
src="{{ url_for('static', filename='assets/img/features/attract_thumbnail.jpg')}}")
|
||||
|
||||
|
||||
section#flamenco.page-card.right
|
||||
.page-card-side
|
||||
h2.page-card-title
|
||||
| Flamenco
|
||||
.page-card-summary.
|
||||
Take control of your computing infrastructure and get things done.
|
||||
|
||||
a.page-card-cta.download.js-watch-video(
|
||||
href="https://www.youtube.com/watch?v=7cnFKhsM67Q",
|
||||
data-youtube-id="7cnFKhsM67Q")
|
||||
i.pi-play
|
||||
| Watch Video
|
||||
|
||||
a.page-card-cta(
|
||||
href="https://flamenco.io",
|
||||
title="Learn more about Flamenco")
|
||||
| Learn More
|
||||
|
||||
.page-card-side
|
||||
img(
|
||||
src="{{ url_for('static', filename='assets/img/features/flamenco_thumbnail.jpg')}}")
|
||||
|
||||
|
||||
| {% if not current_user.has_role('subscriber') %}
|
||||
section.page-card.subscribe(
|
||||
style="background-image: url({{ url_for('static', filename='assets/img/backgrounds/pattern_01.jpg')}})")
|
||||
.page-card-side
|
||||
h2.page-card-title
|
||||
| All of this, plus hours of training and production assets.
|
||||
.page-card-summary
|
||||
| Join us for only $9.90/month!
|
||||
a.page-card-cta(
|
||||
href="https://store.blender.org/product/membership/")
|
||||
| Subscribe Now
|
||||
| {% endif %}
|
||||
|
||||
|
||||
| {% endblock %}
|
||||
|
||||
| {% block footer_scripts %}
|
||||
script.
|
||||
// Click anywhere in the page to hide the overlay
|
||||
function hideOverlay() {
|
||||
$('#page-overlay.video').removeClass('active');
|
||||
$('#page-overlay.video .video-embed').html('');
|
||||
}
|
||||
|
||||
$(document).click(function() {
|
||||
hideOverlay();
|
||||
});
|
||||
|
||||
$(document).keyup(function(e) {
|
||||
if (e.keyCode == 27) {
|
||||
hideOverlay();
|
||||
}
|
||||
});
|
||||
|
||||
$('a.js-watch-video').click(function(e){
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
|
||||
$('#page-overlay.video').addClass('active');
|
||||
|
||||
var videoId = $(this).attr('data-youtube-id');
|
||||
$('#page-overlay .video-embed').html('<iframe src="https://www.youtube.com/embed/' + videoId +'?rel=0&showinfo=0;autoplay=1" frameborder="0" allowfullscreen></iframe>')
|
||||
});
|
||||
|
||||
| {% endblock %}
|
674
src/templates/welcome.pug
Normal file
674
src/templates/welcome.pug
Normal file
@@ -0,0 +1,674 @@
|
||||
| {% extends 'layout.html' %}
|
||||
| {% block page_title %}Welcome{% endblock %}
|
||||
|
||||
| {% set title = 'join' %}
|
||||
|
||||
| {% block og %}
|
||||
meta(property="og:title", content="Join the Blender Cloud")
|
||||
meta(property="og:url", content="https://cloud.blender.org/")
|
||||
meta(property="og:image", content="{{ url_for('static', filename='assets/img/backgrounds/background_andy_hdribot_01.jpg')}}")
|
||||
| {% endblock %}
|
||||
|
||||
| {% block header_backdrop %}
|
||||
.navbar-backdrop.join(
|
||||
style="background-image: url({{ url_for('static', filename='assets/img/backgrounds/background_agent327_04.jpg')}})")
|
||||
| {% endblock %}
|
||||
|
||||
| {% block page_overlay %}
|
||||
#page-overlay.video
|
||||
.video-embed
|
||||
| {% endblock %}
|
||||
|
||||
| {% block body %}
|
||||
#page-container.join
|
||||
#page-header
|
||||
.container
|
||||
.page-title
|
||||
span.text-background Welcome to the Blender Cloud.
|
||||
|
||||
.page-title-summary
|
||||
p
|
||||
span.text-background Join us as we make the Agent 327 "Barbershop" scene
|
||||
ul
|
||||
li
|
||||
span.text-background Exclusive production insight & walk-throughs
|
||||
li
|
||||
span.text-background High-quality assets ready to use
|
||||
li
|
||||
span.text-background All the open movies files & tutorials
|
||||
li
|
||||
span.text-background 100+ hours of training
|
||||
|
||||
.page-header-cta-container
|
||||
a.page-header-cta(href="https://store.blender.org/product/membership/")
|
||||
| Join Now
|
||||
|
||||
a.page-header-cta-extra(href="https://cloud.blender.org/p/agent-327")
|
||||
| Learn More
|
||||
i.pi-angle-right
|
||||
|
||||
|
||||
#page-content
|
||||
section.page-card-header
|
||||
h2
|
||||
a(href="{{ url_for('main.training') }}") Training & Tutorials
|
||||
|
||||
.page-triplet-container.homepage
|
||||
.row
|
||||
.col-md-4
|
||||
.triplet-card(data-url="https://cloud.blender.org/p/motion-graphics/")
|
||||
.triplet-card-thumbnail
|
||||
img(
|
||||
alt="HDRI",
|
||||
src="{{ url_for('static', filename='assets/img/features/training_motion_graphics.jpg')}}")
|
||||
.triplet-card-info
|
||||
h3 Motion Graphics
|
||||
p.
|
||||
A comprehensive guide to motion graphics techniques using Blender.
|
||||
a.triplet-cta(href="https://cloud.blender.org/p/motion-graphics/")
|
||||
| LEARN MORE
|
||||
|
||||
.col-md-4
|
||||
.triplet-card(data-url="https://cloud.blender.org/p/toon-character-workflow/")
|
||||
.triplet-card-thumbnail
|
||||
img(
|
||||
alt="Textures",
|
||||
src="{{ url_for('static', filename='assets/img/features/training_toon_character.jpg')}}")
|
||||
.triplet-card-info
|
||||
h3 Toon Character Workflow
|
||||
p.
|
||||
Perfect for beginners, learn how to build a cartoon character from concept to finish.
|
||||
a.triplet-cta(href="https://cloud.blender.org/p/toon-character-workflow/")
|
||||
| LEARN MORE
|
||||
|
||||
.col-md-4
|
||||
.triplet-card(data-url="https://cloud.blender.org/p/gallery")
|
||||
.triplet-card-thumbnail
|
||||
img(
|
||||
alt="Characters",
|
||||
src="{{ url_for('static', filename='assets/img/features/training_bob_forest.jpg')}}")
|
||||
.triplet-card-info
|
||||
h3 Art Walk-throughs
|
||||
p.
|
||||
Follow artists through the creative process and techniques behind their work.
|
||||
a.triplet-cta(href="https://cloud.blender.org/p/gallery")
|
||||
| LEARN MORE
|
||||
|
||||
.row
|
||||
.col-md-8.col-md-offset-2
|
||||
p.extra.
|
||||
Other trainings:
|
||||
<a href="https://cloud.blender.org/p/3d-printing/">Blender for 3D Printing</a>,
|
||||
<a href="https://cloud.blender.org/p/game-asset-creation/">Game Asset Creation</a>,
|
||||
<a href="https://cloud.blender.org/p/blenderella/">Character Modeling</a>,
|
||||
<a href="https://cloud.blender.org/p/character-animation/">Character Animation</a>,
|
||||
<a href="https://cloud.blender.org/p/humane-rigging/">Introduction</a>
|
||||
and
|
||||
<a href="https://cloud.blender.org/p/blenrig/">Advanced Rigging</a>,
|
||||
<a href="https://cloud.blender.org/p/track-match-2/">VFX Workflow</a>,
|
||||
<a href="https://cloud.blender.org/p/creature-factory-2/">Creature</a>
|
||||
and
|
||||
<a href="https://cloud.blender.org/p/venoms-lab-2/">Cartoon Character creation</a>,
|
||||
<a href="https://cloud.blender.org/p/chaos-evolution/">Advanced</a>
|
||||
<a href="https://cloud.blender.org/p/blend-and-paint/">Digital Painting</a>
|
||||
and
|
||||
<a href="{{ url_for('main.training') }}">much more</a>!
|
||||
|
||||
|
||||
.page-triplet-container-fluid.dark(
|
||||
style="background-image: url({{ url_for('static', filename='assets/img/backgrounds/pattern_01.jpg')}})")
|
||||
section.page-card-header
|
||||
h2
|
||||
a(href="{{ url_for('main.open_projects') }}") Browse all the Open Movies
|
||||
|
||||
.page-triplet-container.homepage
|
||||
.row
|
||||
.col-md-4
|
||||
.triplet-card(data-url="https://cloud.blender.org/p/cosmos-laundromat/")
|
||||
.triplet-card-thumbnail
|
||||
img(
|
||||
alt="HDRI",
|
||||
src="{{ url_for('static', filename='assets/img/features/open_movies_cosmos.jpg')}}")
|
||||
.triplet-card-info
|
||||
h3 Cosmos Laundromat
|
||||
a.triplet-cta(href="https://cloud.blender.org/p/cosmos-laundromat/")
|
||||
| LEARN MORE
|
||||
|
||||
.col-md-4
|
||||
.triplet-card(data-url="https://cloud.blender.org/p/agent-327/")
|
||||
.triplet-card-thumbnail
|
||||
img(
|
||||
alt="Textures",
|
||||
src="{{ url_for('static', filename='assets/img/features/open_movies_agent_barbershop.jpg')}}")
|
||||
.triplet-card-info
|
||||
h3 Agent 327
|
||||
a.triplet-cta(href="https://cloud.blender.org/p/agent-327/")
|
||||
| LEARN MORE
|
||||
|
||||
.col-md-4
|
||||
.triplet-card(data-url="https://cloud.blender.org/p/caminandes-3/")
|
||||
.triplet-card-thumbnail
|
||||
img(
|
||||
alt="Characters",
|
||||
src="{{ url_for('static', filename='assets/img/features/open_movies_caminandes_llamigos.jpg')}}")
|
||||
.triplet-card-info
|
||||
h3 Caminandes
|
||||
a.triplet-cta(href="https://cloud.blender.org/p/caminandes-3/")
|
||||
| LEARN MORE
|
||||
|
||||
.row
|
||||
.col-md-8.col-md-offset-2
|
||||
p.extra.
|
||||
Other open movies:
|
||||
<a href="https://cloud.blender.org/p/elephants-dream/">Elephants Dream</a>,
|
||||
<a href="https://cloud.blender.org/p/sintel/">Sintel</a>,
|
||||
<a href="https://cloud.blender.org/p/big-buck-bunny/">Big Buck Bunny</a>,
|
||||
<a href="https://cloud.blender.org/p/tears-of-steel/">Tears of Steel</a>,
|
||||
<a href="https://cloud.blender.org/p/glass-half/">Glass Half</a>,
|
||||
and
|
||||
<a href="{{ url_for('main.open_projects') }}">more</a>.
|
||||
|
||||
|
||||
section.page-card-header
|
||||
h2 Download 1000s of files and assets
|
||||
|
||||
.page-triplet-container.homepage
|
||||
.row
|
||||
.col-md-4
|
||||
.triplet-card(data-url="{{ url_for('projects.view', project_url='textures') }}")
|
||||
.triplet-card-thumbnail
|
||||
img(
|
||||
alt="Textures",
|
||||
src="{{ url_for('static', filename='assets/img/features/textures_01.jpg')}}")
|
||||
.triplet-card-info
|
||||
h3 Textures
|
||||
p.
|
||||
More than 1500 texture maps.
|
||||
Browse online or from Blender with our awesome add-on.
|
||||
a.triplet-cta(href="{{ url_for('projects.view', project_url='textures') }}")
|
||||
| LEARN MORE
|
||||
|
||||
.col-md-4
|
||||
.triplet-card(data-url="{{ url_for('projects.view', project_url='hdri') }}")
|
||||
.triplet-card-thumbnail
|
||||
img(
|
||||
alt="HDRI",
|
||||
src="{{ url_for('static', filename='assets/img/features/hdri_01.jpg')}}")
|
||||
.triplet-card-info
|
||||
h3 HDRI
|
||||
p.
|
||||
Up to 16K and 24 EVs (extremely high) HDR images to light your renders.
|
||||
a.triplet-cta(href="{{ url_for('projects.view', project_url='hdri') }}")
|
||||
| LEARN MORE
|
||||
|
||||
.col-md-4
|
||||
.triplet-card(data-url="{{ url_for('projects.view', project_url='characters') }}")
|
||||
.triplet-card-thumbnail
|
||||
img(
|
||||
alt="Characters",
|
||||
src="{{ url_for('static', filename='assets/img/features/characters_01.jpg')}}")
|
||||
.triplet-card-info
|
||||
h3 Characters
|
||||
p.
|
||||
Production quality, fully rigged and shaded characters ready to animate.
|
||||
a.triplet-cta(href="{{ url_for('projects.view', project_url='characters') }}")
|
||||
| LEARN MORE
|
||||
|
||||
|
||||
section.page-card-header
|
||||
h2 Learn by Example
|
||||
|
||||
|
||||
section.page-card.services-projects
|
||||
|
||||
.page-card-side
|
||||
h2.page-card-title Exclusive Production Insights
|
||||
.page-card-summary
|
||||
p.
|
||||
Watch the original authors of shots breaking them down and share their
|
||||
insight in the production process. Watch animation reviews,
|
||||
narrated timelapses, shot walk-throughs and more.
|
||||
|
||||
.page-card-side
|
||||
.page-card-image
|
||||
video(autoplay, loop)
|
||||
source(src="{{ url_for('static', filename='assets/img/features/animation_review_01.mp4')}}")
|
||||
|
||||
|
||||
section.page-card.right.services-projects
|
||||
|
||||
.page-card-side
|
||||
h2.page-card-title Production Quality Files
|
||||
.page-card-summary
|
||||
p.
|
||||
From fully rigged characters ready to animate to an Art Gallery
|
||||
curated by the best Blender artists, access top quality blendfiles to learn
|
||||
new techniques and improve your art.
|
||||
|
||||
.page-card-side
|
||||
.page-card-image
|
||||
img(
|
||||
alt="High Quality Assets",
|
||||
src="{{ url_for('static', filename='assets/img/features/locomotive_01.jpg')}}")
|
||||
|
||||
|
||||
#blender-addon.page-section-container(
|
||||
style="background-image: url({{ url_for('static', filename='assets/img/backgrounds/pattern_bw_01.jpg')}})")
|
||||
section.page-card-header.dark Blender Cloud Add-on
|
||||
span.page-card-header_lead.dark Connect Blender with the Cloud
|
||||
|
||||
a.page-card-cta.download(
|
||||
href="https://cloud.blender.org/r/downloads/blender_cloud-latest-bundle.zip")
|
||||
i.pi-download
|
||||
| Download <small>v</small>{{ config.BLENDER_CLOUD_ADDON_VERSION }}
|
||||
|
||||
section.page-card.dark.right
|
||||
|
||||
.page-card-side
|
||||
h2.page-card-title Blender Sync
|
||||
.page-card-summary.
|
||||
Save your settings once. Use them anywhere.
|
||||
Carry your Blender configuration with you,
|
||||
use our free add-on to sync your keymaps and preferences.
|
||||
<hr/>
|
||||
<small>Syncing settings is free for everyone! No subscription required.</small>
|
||||
|
||||
a.page-card-cta(
|
||||
href="https://cloud.blender.org/blog/introducing-blender-sync")
|
||||
| Learn More
|
||||
|
||||
.page-card-side
|
||||
.page-card-icon
|
||||
svg(xmlns="http://www.w3.org/2000/svg",
|
||||
width="64", height="54", viewBox="0 0 64 54")
|
||||
g(fill="none", stroke="#aaa", stroke-width="2", stroke-miterlimit="10")
|
||||
path(d="M29 47H5l-4-4v-2h24l2 2h2M29 3H10C8.344 3 7 4.343 7 6v32M35 51h24l4-4v-2H39l-2 2h-2M35 7h19c1.656 0 3 1.343 3 3v32M32 34v20M32 20v8M32 0v14")
|
||||
g
|
||||
path(d="M32 31c-3.866 0-7-3.134-7-7M32 17c3.866 0 7 3.134 7 7M32 31h8M24 17h8M36 35l4-4-4-4M28 21l-4-4 4-4")
|
||||
path(d="M29 37H11V7h18M35 11h18v30H35")
|
||||
|
||||
|
||||
section.page-card.dark
|
||||
|
||||
.page-card-side
|
||||
h2.page-card-title Texture Browser
|
||||
.page-card-summary
|
||||
p.
|
||||
Access the <a href="https://cloud.blender.org/p/textures/">Blender Cloud Textures and HDRI</a>
|
||||
libraries from within Blender.
|
||||
Create, manage and share <em>your own</em> texture libraries!
|
||||
|
||||
a.page-card-cta.watch-video(
|
||||
href="https://www.youtube.com/watch?v=-srXYv2Osjw",
|
||||
data-youtube-id="-srXYv2Osjw")
|
||||
i.pi-play
|
||||
| Watch Video
|
||||
|
||||
.page-card-side
|
||||
.page-card-icon
|
||||
svg(xmlns="http://www.w3.org/2000/svg",
|
||||
width="64", height="60",
|
||||
viewBox="0 0 64 60")
|
||||
g(fill="#aaa")
|
||||
path(d="M32 60c-.188 0-.377-.053-.542-.16l-31-20C.173 39.656 0 39.34 0 39s.173-.656.458-.84l31-20c.33-.213.754-.213 1.084 0l31 20c.285.184.458.5.458.84s-.173.656-.458.84l-31 20c-.165.107-.354.16-.542.16zM2.845 39L32 57.81 61.155 39 32 20.19 2.845 39z")
|
||||
path(d="M32 51c-.188 0-.377-.053-.542-.16l-31-20C.173 30.656 0 30.34 0 30s.173-.656.458-.84l31-20c.33-.213.754-.213 1.084 0l31 20c.285.184.458.5.458.84s-.173.656-.458.84l-31 20c-.165.107-.354.16-.542.16zM2.845 30L32 48.81 61.155 30 32 11.19 2.845 30z")
|
||||
path(d="M32 42c-.188 0-.377-.053-.542-.16l-31-20C.173 21.656 0 21.34 0 21s.173-.656.458-.84l31-20c.33-.213.754-.213 1.084 0l31 20c.285.184.458.5.458.84s-.173.656-.458.84l-31 20c-.165.107-.354.16-.542.16zM2.845 21L32 39.81 61.155 21 32 2.19 2.845 21z")
|
||||
path(d="M31 27h2v2h-2zm0-4h2v2h-2zm0 8h2v2h-2zm4-4h2v2h-2zm4 2h2v2h-2zm-16 0h2v2h-2zm12 2h2v2h-2zm-8-4h2v2h-2zm0 4h2v2h-2zm4 4h2v2h-2zm31 15h2v2h-2zm0-4h2v2h-2zm0 8h2v2h-2zm0 4h2v2h-2zm0-54h2v2h-2zm0-4h2v2h-2zm0 8h2v2h-2zm0 4h2v2h-2zM0 50h2v2H0zm0-4h2v2H0zm0 8h2v2H0zm0 4h2v2H0zM0 4h2v2H0zm0-4h2v2H0zm4 0h2v2H4zm4 0h2v2H8zm4 0h2v2h-2zm4 0h2v2h-2zm4 0h2v2h-2zm22 0h2v2h-2zm4 0h2v2h-2zm4 0h2v2h-2zm4 0h2v2h-2zm4 0h2v2h-2zM4 58h2v2H4zm4 0h2v2H8zm4 0h2v2h-2zm4 0h2v2h-2zm4 0h2v2h-2zm22 0h2v2h-2zm4 0h2v2h-2zm4 0h2v2h-2zm4 0h2v2h-2zm4 0h2v2h-2zM0 8h2v2H0zm0 4h2v2H0z")
|
||||
|
||||
|
||||
section.page-card.dark.right
|
||||
|
||||
.page-card-side
|
||||
h2.page-card-title
|
||||
| Image Sharing
|
||||
.page-card-summary
|
||||
p.
|
||||
Got a nice render, a Blender oddity, a cool screenshot?
|
||||
Share it instantly from within Blender to the Cloud, to the world!
|
||||
|
||||
a.page-card-cta(
|
||||
href="https://cloud.blender.org/blog/introducing-image-sharing")
|
||||
| Learn More
|
||||
|
||||
.page-card-side
|
||||
.page-card-icon
|
||||
svg(xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 64 64")
|
||||
g(fill="none",
|
||||
stroke="#aaa",
|
||||
stroke-width="2",
|
||||
stroke-linejoin="round",
|
||||
stroke-miterlimit="10")
|
||||
path(d="M1 1h62v62H1zM4 59h2M8 59h2M12 59h2M60 49H48M46 49H27M60 53H40")
|
||||
path(d="M5 5h54v40H5z")
|
||||
path(d="M9 45v-3c0-1.656 1.344-3 3-3h6c1.656 0 3 1.344 3 3v3M29 45v-3c0-1.656 1.344-3 3-3h6c1.656 0 3 1.344 3 3v3M13 45v-3M17 45v-3M33 45v-3M37 45v-3M22 31h-5c-2.762 0-5 2.238-5 5v3M38 39v-3c0-2.762-2.238-5-5-5h-5M31 20c0 3.313-1 9-6 9s-6-5.687-6-9c0-1 0-5 6-5s6 4 6 5z")
|
||||
path(d="M29 27l-2 8h-4l-2-8M18 31c-4-3-5-9-5-9l6-3M32 31c4-3 5-9 5-9l-6-3M59 24L44 9l-8 8M44 9l8 36")
|
||||
circle(cx="12", cy="12", r="3")
|
||||
|
||||
|
||||
section.page-card
|
||||
|
||||
.page-card-side
|
||||
h2.page-card-title Private Projects
|
||||
.page-card-summary.
|
||||
Create and manage your own personal projects.
|
||||
Upload assets and collaborate with other Blender Cloud members.
|
||||
|
||||
a.page-card-cta(
|
||||
href="https://cloud.blender.org/blog/introducing-private-projects")
|
||||
| Learn More
|
||||
|
||||
.page-card-side
|
||||
.page-card-icon
|
||||
svg(xmlns='http://www.w3.org/2000/svg', width='56', height='64', viewbox='0 0 56 64')
|
||||
g(fill='#555')
|
||||
path(d='M42 38H14V26h28v12zm-26-2h24v-8H16v8zm-4-5H8c-1.654 0-3-1.346-3-3V15h2v13c0 .55.45 1 1 1h4v2z')
|
||||
path(d='M9.293 19.707L6 16.414l-3.293 3.293-1.414-1.414 4-4c.39-.39 1.023-.39 1.414 0l4 4-1.414 1.414zM48 31h-4v-2h4c.55 0 1-.45 1-1V15h2v13c0 1.654-1.346 3-3 3z')
|
||||
path(d='M53.293 19.707L50 16.414l-3.293 3.293-1.414-1.414L50 13.586l4.707 4.707M27 15h2v9h-2z')
|
||||
path(d='M31.293 19.707L28 16.414l-3.293 3.293-1.414-1.414L28 13.586l4.707 4.707M7 49H5V36c0-1.654 1.346-3 3-3h4v2H8c-.55 0-1 .45-1 1v13z')
|
||||
path(d='M6 50c-.256 0-.512-.098-.707-.293l-4-4 1.414-1.414L6 47.586l3.293-3.293 1.414 1.414-4 4c-.195.195-.45.293-.707.293zm45-1h-2V36c0-.55-.45-1-1-1h-4v-2h4c1.654 0 3 1.346 3 3v13z')
|
||||
path(d='M50 50.414l-4.707-4.707 1.414-1.414L50 47.586l3.293-3.293 1.414 1.414M27 40h2v9h-2z')
|
||||
path(d='M28 50.414l-4.707-4.707 1.414-1.414L28 47.586l3.293-3.293 1.414 1.414M6 12c-3.31 0-6-2.692-6-6s2.69-6 6-6 6 2.692 6 6-2.69 6-6 6zM6 2C3.794 2 2 3.794 2 6s1.794 4 4 4 4-1.794 4-4-1.794-4-4-4zm22 10c-3.31 0-6-2.692-6-6s2.69-6 6-6 6 2.692 6 6-2.69 6-6 6zm0-10c-2.206 0-4 1.794-4 4s1.794 4 4 4 4-1.794 4-4-1.794-4-4-4zm22 10c-3.31 0-6-2.692-6-6s2.69-6 6-6 6 2.692 6 6-2.69 6-6 6zm0-10c-2.206 0-4 1.794-4 4s1.794 4 4 4 4-1.794 4-4-1.794-4-4-4zM6 64c-3.31 0-6-2.692-6-6s2.69-6 6-6 6 2.692 6 6-2.69 6-6 6zm0-10c-2.206 0-4 1.794-4 4s1.794 4 4 4 4-1.794 4-4-1.794-4-4-4zm22 10c-3.31 0-6-2.692-6-6s2.69-6 6-6 6 2.692 6 6-2.69 6-6 6zm0-10c-2.206 0-4 1.794-4 4s1.794 4 4 4 4-1.794 4-4-1.794-4-4-4zm22 10c-3.31 0-6-2.692-6-6s2.69-6 6-6 6 2.692 6 6-2.69 6-6 6zm0-10c-2.206 0-4 1.794-4 4s1.794 4 4 4 4-1.794 4-4-1.794-4-4-4zM27 31h2v2h-2zm-4 0h2v2h-2zm8 0h2v2h-2z')
|
||||
|
||||
|
||||
section.pricing
|
||||
.container
|
||||
.row
|
||||
.col-md-12
|
||||
h2 Simple Pricing. Any payment method.
|
||||
.row
|
||||
.col-md-4.col-sm-4
|
||||
.box.monthly
|
||||
h3 Monthly
|
||||
.pricing-display
|
||||
span.currency-sign $
|
||||
span.digit-int 9
|
||||
span.digit-dec .90 / month*
|
||||
|
||||
.pricing-caption
|
||||
p * with a 3-months minimum period
|
||||
|
||||
ul
|
||||
li 100+ hours of high-quality training
|
||||
li All the open movies files and tutorials
|
||||
li Exclusive production insight & walk-throughs
|
||||
li <strong>Sync</strong> your Blender settings across devices
|
||||
li <strong>Share</strong> images & screenshots from within Blender
|
||||
li <strong>Download</strong> 1500+ textures & HDRIs from Blender
|
||||
|
||||
a.sign-up-now(href="https://store.blender.org/product/membership/")
|
||||
| Subscribe Now
|
||||
|
||||
.col-md-4.col-sm-4
|
||||
.box.yearly
|
||||
h3 Yearly
|
||||
.pricing-display
|
||||
span.currency-sign $
|
||||
span.digit-int 109
|
||||
span.digit-dec .00 / year
|
||||
.pricing-caption
|
||||
ul
|
||||
li 100+ hours of high-quality training
|
||||
li All the open movies files and tutorials
|
||||
li Exclusive production insight & walk-throughs
|
||||
li <strong>Sync</strong> your Blender settings across devices
|
||||
li <strong>Share</strong> images & screenshots from within Blender
|
||||
li <strong>Download</strong> 1500+ textures & HDRIs from Blender
|
||||
li.special 1 month free!
|
||||
|
||||
a.sign-up-now(href="https://store.blender.org/product/membership/")
|
||||
| Subscribe Now
|
||||
|
||||
.col-md-4.col-sm-4
|
||||
.box.education
|
||||
h3 Education
|
||||
|
||||
.pricing-caption
|
||||
p.
|
||||
We also provide flexible options for group subscription
|
||||
ideal for schools or teams.
|
||||
p.
|
||||
Get in touch to discuss direct support, custom solutions,
|
||||
team management tools and Single Sign-on.
|
||||
|
||||
a.sign-up-now(href="mailto:cloudsupport@blender.org")
|
||||
i.pi-email
|
||||
| Get in Touch
|
||||
|
||||
section.team(
|
||||
style="background-image: url({{ url_for('static', filename='assets/img/backgrounds/pattern_01.jpg')}})")
|
||||
.container
|
||||
.row
|
||||
.col-md-12
|
||||
h2.
|
||||
A restless team of artists and developers <br/>
|
||||
wants to share their work with you.
|
||||
|
||||
.people-container
|
||||
.people-intro
|
||||
h3 Blender Institute
|
||||
span Amsterdam, The Netherlands
|
||||
|
||||
.people-faces
|
||||
a.face(
|
||||
href="https://twitter.com/tonroosendaal",
|
||||
data-blenderhead='ton')
|
||||
img(alt="Ton", src="{{ url_for('static', filename='assets/img/people/ton.jpg')}}")
|
||||
a.face(
|
||||
href="https://twitter.com/fsiddi",
|
||||
data-blenderhead='francesco')
|
||||
img(alt="Francesco", src="{{ url_for('static', filename='assets/img/people/francesco.jpg')}}")
|
||||
a.face(
|
||||
href="https://twitter.com/hjalti",
|
||||
data-blenderhead='hjalti')
|
||||
img(alt="Hjalti", src="{{ url_for('static', filename='assets/img/people/hjalti.jpg')}}")
|
||||
a.face(
|
||||
href="https://twitter.com/colinlevy",
|
||||
data-blenderhead='colin')
|
||||
img(alt="Colin", src="{{ url_for('static', filename='assets/img/people/colin.jpg')}}")
|
||||
a.face(
|
||||
href="https://twitter.com/PabloVazquez_",
|
||||
data-blenderhead='pablo')
|
||||
img(alt="Pablo", src="{{ url_for('static', filename='assets/img/people/pablo.jpg')}}")
|
||||
a.face(
|
||||
href="https://twitter.com/artificial3d",
|
||||
data-blenderhead='andy')
|
||||
img(alt="Andy", src="{{ url_for('static', filename='assets/img/people/andy.jpg')}}")
|
||||
a.face(
|
||||
href="https://developer.blender.org/p/sergey/",
|
||||
data-blenderhead='sergey')
|
||||
img(alt="Sergey", src="{{ url_for('static', filename='assets/img/people/sergey.jpg')}}")
|
||||
a.face(
|
||||
href="https://twitter.com/sastuvel",
|
||||
data-blenderhead='sybren')
|
||||
img(alt="Sybren", src="{{ url_for('static', filename='assets/img/people/sybren.jpg')}}")
|
||||
a.face(
|
||||
href="https://twitter.com/dfelinto",
|
||||
data-blenderhead='dalai')
|
||||
img(alt="dalai", src="{{ url_for('static', filename='assets/img/people/dalai.jpg')}}")
|
||||
a.face(
|
||||
href="https://twitter.com/dfelinto",
|
||||
data-blenderhead='luca')
|
||||
img(alt="luca", src="{{ url_for('static', filename='assets/img/people/luca.jpg')}}")
|
||||
|
||||
.people-bio
|
||||
.bio#ton
|
||||
h3 Ton Roosendaal
|
||||
small CEO Blender Foundation. Producer Blender Institute
|
||||
span The Netherlands
|
||||
|
||||
.bio#francesco
|
||||
h3 Francesco Siddi
|
||||
small Pipeline Tools & Back-end Web Development
|
||||
span Italy
|
||||
|
||||
.bio#pablo
|
||||
h3 Pablo Vázquez
|
||||
small Lighting, Rendering. Front-end Web Development
|
||||
span Argentina
|
||||
|
||||
.bio#andy
|
||||
h3 Andy Goralczyk
|
||||
small Shading, Lighting, Rendering, FX
|
||||
span Germany
|
||||
|
||||
.bio#colin
|
||||
h3 Colin Levy
|
||||
small Director. Layout.
|
||||
span United States
|
||||
|
||||
.bio#hjalti
|
||||
h3 Hjalti Hjálmarsson
|
||||
small Director. Animation. Layout.
|
||||
span Iceland
|
||||
|
||||
.bio#sergey
|
||||
h3 Sergey Sharybin
|
||||
small Blender & Cycles Core Developer
|
||||
span Russia
|
||||
|
||||
.bio#sybren
|
||||
h3 Sybren Stüvel
|
||||
small Blender Cloud Developer
|
||||
span The Netherlands
|
||||
|
||||
.bio#dalai
|
||||
h3 Dalai Felinto
|
||||
small Blender Developer
|
||||
span Brazil
|
||||
|
||||
.bio#luca
|
||||
h3 Luca Rood
|
||||
small Blender Developer
|
||||
span The Netherlands
|
||||
|
||||
.people-container.online
|
||||
.people-intro
|
||||
h3 Online Collaborators
|
||||
span Contributing to Blender Cloud from all over the globe.
|
||||
|
||||
.people-faces
|
||||
a.face(
|
||||
href="https://twitter.com/davidrevoy",
|
||||
data-blenderhead='david')
|
||||
img(alt="David", src="{{ url_for('static', filename='assets/img/people/david.jpg')}}")
|
||||
a.face(
|
||||
href="https://twitter.com/s_koenig",
|
||||
data-blenderhead='sebastian')
|
||||
img(alt="Sebastian", src="{{ url_for('static', filename='assets/img/people/sebastian.jpg')}}")
|
||||
a.face(
|
||||
href="https://twitter.com/gleb_alexandrov",
|
||||
data-blenderhead='gleb')
|
||||
img(alt="Gleb", src="{{ url_for('static', filename='assets/img/people/gleb.jpg')}}")
|
||||
a.face(
|
||||
href="https://twitter.com/the_mantissa",
|
||||
data-blenderhead='midge')
|
||||
img(alt="Midge", src="{{ url_for('static', filename='assets/img/people/midge.jpg')}}")
|
||||
a.face(
|
||||
href="https://twitter.com/jpbouza",
|
||||
data-blenderhead='jpbouza')
|
||||
img(alt="Juan Pablo", src="{{ url_for('static', filename='assets/img/people/jpbouza.jpg')}}")
|
||||
|
||||
.people-bio
|
||||
.bio#gleb
|
||||
h3 Gleb Alexandrov
|
||||
small Lighting & Shading
|
||||
span Belarus
|
||||
|
||||
.bio#david
|
||||
h3 David Revoy
|
||||
small Illustrator & Concept Artist
|
||||
span France
|
||||
|
||||
.bio#midge
|
||||
h3 Midge Sinnaeve
|
||||
small Motion Graphics
|
||||
span Belgium
|
||||
|
||||
.bio#sebastian
|
||||
h3 Sebastian König
|
||||
small VFX
|
||||
span Germany
|
||||
|
||||
.bio#jpbouza
|
||||
h3 Juan Pablo Bouza
|
||||
small Rigging
|
||||
span Argentina
|
||||
|
||||
|
||||
section.page-card.oneofus.
|
||||
Join <strong>2021</strong> awesome people, <a href="">subscribe to Blender Cloud</a> now.
|
||||
|
||||
section.supported-by
|
||||
h2 Our projects were supported by
|
||||
img.logos(alt="Supported by", src="{{ url_for('static', filename='assets/img/support_logos.png') }}")
|
||||
|
||||
section.page-card.subscribe(
|
||||
style="background-image: url({{ url_for('static', filename='assets/img/backgrounds/pattern_bw_01.jpg')}})")
|
||||
.page-card-side
|
||||
h2.page-card-title
|
||||
| Support Blender, get inspiration, knowledge and tools in one place.
|
||||
a.page-card-cta(
|
||||
href="https://store.blender.org/product/membership/")
|
||||
i.pi-heart-filled
|
||||
| Subscribe Now
|
||||
|
||||
|
||||
| {% endblock %}
|
||||
|
||||
| {% block footer_scripts %}
|
||||
script.
|
||||
|
||||
$('.triplet-card').click(function(){
|
||||
window.location.href = $(this).attr('data-url');
|
||||
});
|
||||
|
||||
function getSubscribers(){
|
||||
$.get('https://store.blender.org/product-counter/?prod=cloud', function(data) {
|
||||
}).done(function(data){
|
||||
if (data.total_sold > 0) {
|
||||
$('.page-card.oneofus').addClass('active');
|
||||
$('.page-card.oneofus strong').html(data.total_sold);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
getSubscribers();
|
||||
|
||||
$('.people-faces .face').hover(
|
||||
function(){
|
||||
var who = $(this).data('blenderhead');
|
||||
$('#' + who).addClass('active');
|
||||
$(this).parent().prev().addClass('active');
|
||||
},
|
||||
function(){
|
||||
$('.bio, .people-intro').removeClass('active');
|
||||
}
|
||||
);
|
||||
|
||||
// Click anywhere in the page to hide the overlay
|
||||
function hideOverlay() {
|
||||
$('#page-overlay.video').removeClass('active');
|
||||
$('#page-overlay.video .video-embed').html('');
|
||||
}
|
||||
|
||||
$(document).click(function() {
|
||||
hideOverlay();
|
||||
});
|
||||
|
||||
$(document).keyup(function(e) {
|
||||
if (e.keyCode == 27) {
|
||||
hideOverlay();
|
||||
}
|
||||
});
|
||||
|
||||
$('a.watch-video').click(function(e){
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
|
||||
$('#page-overlay.video').addClass('active');
|
||||
|
||||
var videoId = $(this).attr('data-youtube-id');
|
||||
$('#page-overlay .video-embed').html('<iframe src="https://www.youtube.com/embed/' + videoId +'?rel=0&showinfo=0;autoplay=1" frameborder="0" allowfullscreen></iframe>')
|
||||
});
|
||||
|
||||
| {% endblock %}
|
Reference in New Issue
Block a user