include ../../../pillar/src/templates/mixins/components 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, shrink-to-fit=no") 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="{{ request.url }}") 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 og %} script(src="{{ url_for('static_pillar', filename='assets/js/tutti.min.js') }}") script. pillar.utils.initCurrentUser({{ current_user | json | safe }}); script(src="{{ url_for('static_pillar', filename='assets/js/timeline.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/js.cookie-2.0.3.min.js')}}") | {% if current_user.is_authenticated %} script(src="{{ url_for('static_pillar', filename='assets/js/vendor/clipboard.min.js')}}") | {% endif %} 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") | {% block head %}{% endblock %} | {% block css %} | {% if title == 'blog' %} link(href="{{ url_for('static_pillar', filename='assets/css/blog.css') }}", rel="stylesheet") | {% else %} link(href="{{ url_for('static_cloud', filename='assets/css/main.css') }}", rel="stylesheet") | {% endif %} | {% endblock css %} | {% if not title %}{% set title="default" %}{% endif %} body(class="{{ title }} {{'project' if project and project.url != 'blender-cloud'}} {% block bodyclasses %}{% endblock %}" "{% block bodyattrs %}{% endblock %}" ) | {% with messages = get_flashed_messages(with_categories=True) %} | {% if messages or (config.UI_ANNOUNCEMENT_NON_SUBSCRIBERS and not current_user.has_cap('subscriber')) %} | {% if config.UI_ANNOUNCEMENT_NON_SUBSCRIBERS %} .alert.d-flex.justify-content-center( role="alert", class="alert-{{ config.UI_ANNOUNCEMENT_NON_SUBSCRIBERS['category'] }}") i.pr-2(class="{{ config.UI_ANNOUNCEMENT_NON_SUBSCRIBERS['icon'] }}") | {{ config.UI_ANNOUNCEMENT_NON_SUBSCRIBERS['message'] | markdown }} | {% endif %} | {% for (category, message) in messages %} .alert.d-flex.justify-content-center( 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-expand-md.fixed-top.bg-white | {% block navigation_tabs %} +nav-secondary(class="collapse navbar-collapse")#navigationLinks +nav-secondary-link( href="{{ url_for('main.homepage') }}") i.pi-blender-cloud-logo | {% endblock navigation_tabs %} +nav-secondary()(class="m-auto keep-when-overlay") div.nav-item.quick-search.qs-input#qs-input +nav-secondary()(class="ml-auto") | {% if node and node.properties and node.properties.category %} | {% set category = node.properties.category %} | {% else %} | {% set category = title %} | {% endif %} li.nav-item.quick-search.cursor-pointer.px-3.pi-search#qs-toggle | {% block navigation_sections %} | {% endblock navigation_sections %} | {% block navigation_user %} | {% include 'menus/notifications.html' %} | {% include 'menus/user.html' %} | {% endblock navigation_user %} | {% if current_user.is_anonymous %} li a.btn.btn-sm.btn-primary.px-4.mx-1( href="https://store.blender.org/product/membership/", title="Sign up") Sign up | {% endif %} .loading-bar .page-content .quick-search.container-fluid.m-auto.p-5#search-overlay ul.qs-loading.text-center i.h1.pi-spin.spinner h2 Loading | {% block page_overlay %} #page-overlay | {% endblock page_overlay %} .page-body | {% block body %}{% endblock %} | {% block footer_container %} | {% include '_footer.html' %} | {% endblock footer_container %} #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="") | {% if current_user.is_authenticated %} script(src="{{ url_for('static_pillar', filename='assets/js/vendor/jquery.typewatch-3.0.0.min.js') }}") script. // When sending an AJAX request, always add the X-CSRFToken header to it. var csrf_token = "{{ csrf_token() }}"; $.ajaxSetup({ beforeSend: function (xhr, settings) { if (!/^(GET|HEAD|OPTIONS|TRACE)$/i.test(settings.type) && !this.crossDomain) { xhr.setRequestHeader("X-CSRFToken", csrf_token); } } }); | {% endif %} 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 %} }); // Enable all tooltips. if (typeof $().tooltip != 'undefined'){ $('[data-toggle="tooltip"]').tooltip({'delay' : {'show': 0, 'hide': 0}}); } // Enable Quick Search let searches = { {% if project and not project.is_private %} project: { name: 'Project', uiUrl: '{{ url_for("projects.search", project_url=project.url)}}', apiUrl: '/api/newsearch/multisearch', searchParams: [ {name: 'Assets', params: {project: '{{ project._id }}', node_type: 'asset'}}, {name: 'Blog', params: {project: '{{ project._id }}', node_type: 'post'}}, {name: 'Groups', params: {project: '{{ project._id }}', node_type: 'group'}}, ] }, {% endif %} cloud: { name: 'Cloud', uiUrl: '/search', apiUrl: '/api/newsearch/multisearch', searchParams: [ {name: 'Assets', params: {node_type: 'asset'}}, {name: 'Blog', params: {node_type: 'post'}}, {name: 'Groups', params: {node_type: 'group'}}, ] }, } $('#qs-toggle').quickSearch({ resultTarget: '#search-overlay', inputTarget: '#qs-input', searches: searches, }); | {% 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');