| {% extends 'layout.html' %} | {% from '_macros/_add_new_menu.html' import add_new_menu %} include ../mixins/components | {% block page_title %}{{ project.name }}{% endblock%} | {% set title = 'project' %} | {% block og %} meta(property="og:type", content="website") | {% if og_picture %} meta(property="og:image", content="{{ og_picture.thumbnail('l', api=api) }}") meta(name="twitter:image", content="{{ og_picture.thumbnail('l', api=api) }}") | {% elif node and node.picture %} meta(property="og:image", content="{{ node.picture.thumbnail('l', api=api) }}") meta(name="twitter:image", content="{{ node.picture.thumbnail('l', api=api) }}") | {% elif project.picture_header %} meta(property="og:image", content="{{ project.picture_header.thumbnail('l', api=api) }}") meta(name="twitter:image", content="{{ project.picture_header.thumbnail('l', api=api) }}") | {% endif %} | {% if show_project %} meta(property="og:title", content="{{ project.name }} - Blender Cloud") meta(name="twitter:title", content="{{ project.name }} - Blender Cloud") meta(property="og:description", content="{{ project.summary }}") meta(name="twitter:description", content="{{ project.summary }}") meta(property="og:url", content="{{ url_for('projects.view', project_url=project.url, _external=True) }}") | {% else %} | {% if node %} meta(property="og:title", content="{{ node.name }} - Blender Cloud") meta(name="twitter:title", content="{{ node.name }} on Blender Cloud") | {% if node.node_type == 'post' %} | {% if node.properties.content %} meta(property="og:description", content="{{ node.properties.content | truncate(180) }}") meta(name="twitter:description", content="{{ node.properties.content | truncate(180) }}") | {% else %} meta(property="og:description", content="Blender Cloud, your source for open content and training") meta(name="twitter:description", content="Blender Cloud, your source for open content and training") | {% endif %} | {% else %} | {% if node.description %} meta(property="og:description", content="{{ node.description | truncate(180) }}") meta(name="twitter:description", content="{{ node.description | truncate(180) }}") | {% else %} meta(property="og:description", content="Blender Cloud, your source for open content and training") meta(name="twitter:description", content="Blender Cloud, your source for open content and training") | {% endif %} | {% endif %} meta(property="og:url", content="{{url_for('projects.view_node', project_url=project.url, node_id=node._id)}}") | {% else %} meta(property="og:title", content="{{ project.name }} Blog on Blender Cloud") meta(name="twitter:title", content="{{ project.name }} Blog on Blender Cloud") meta(property="og:description", content="{{ project.summary }}") meta(name="twitter:description", content="{{ project.summary }}") meta(property="og:url", content="{{url_for('projects.view', project_url=project.url, _external=True)}}") | {% endif %} | {% endif %} | {% endblock %} | {% block head %} link(href="{{ url_for('static_pillar', filename='assets/jstree/themes/default/style.min.css') }}", rel="stylesheet") | {% if node %} link(rel="amphtml", href="{{ url_for('nodes.view', node_id=node._id, _external=True, format='amp') }}") | {% endif %} script(src="{{ url_for('static_pillar', filename='assets/js/vendor/videojs-6.2.8.min.js') }}") script(src="{{ url_for('static_pillar', filename='assets/js/vendor/videojs-ga-0.4.2.min.js') }}") script(src="{{ url_for('static_pillar', filename='assets/js/vendor/videojs-hotkeys-0.2.20.min.js') }}") script(src="{{ url_for('static_pillar', filename='assets/js/video_plugins.min.js') }}") | {% endblock %} | {% block css %} link(href="{{ url_for('static_pillar', filename='assets/css/font-pillar.css') }}", rel="stylesheet") link(href="{{ url_for('static_pillar', filename='assets/css/project-main.css') }}", rel="stylesheet") | {% endblock %} | {% block navigation_tabs %} +nav-secondary()(class="bg-white") | {% if project.category == 'course' %} li.text-capitalize a.nav-link.text-muted.px-0(href="{{ url_for('cloud.courses') }}") | Courses | {% elif project.category == 'workshop' %} li.text-capitalize a.nav-link.text-muted.px-0(href="{{ url_for('cloud.workshops') }}") | Workshops li.px-1 i.pi-angle-right | {% endif %} +nav-secondary-link( class="px-0", href="{{url_for('projects.view', project_url=project.url, _external=True)}}") | {{ project.name }} | {% if project.category == "open_project" %} +nav-secondary-link( class="active", href="{{url_for('projects.view', project_url=project.url, _external=True)}}") | Explore +nav-secondary-link( href="{{url_for('projects.view', project_url=project.url, _external=True)}}") | Blog +nav-secondary-link( href="{{url_for('projects.view', project_url=project.url, _external=True)}}") | About +nav-secondary-link( href="{{url_for('projects.view', project_url=project.url, _external=True)}}") | Team +nav-secondary-link( href="{{url_for('projects.view', project_url=project.url, _external=True)}}") | Awards | {% endif %} | {% endblock navigation_tabs %} | {% block body %} #project-container #project-side-container #project_sidebar.bg-white ul.project-tabs.p-0 //- li.tabs-thumbnail(class="{% if project.picture_square %}image{% endif %}") //- a(href="{{url_for('projects.view', project_url=project.url)}}") //- #project-loading //- i.pi-spin //- | {% if project.picture_square %} //- img(src="{{ project.picture_square.thumbnail('b', api=api) }}") //- | {% else %} //- i.pi-home //- | {% endif %} li.tabs-browse( title="Browse", data-toggle="tooltip", data-placement="right", class="active") a(href="{{url_for('projects.view', project_url=project.url, _external=True)}}") i.pi-folder | {% if not project.is_private %} | {% if current_user_is_subscriber %} li.tabs-search( title="Search", data-toggle="tooltip", data-placement="right") a(href="{{ url_for('projects.search', project_url=project.url, _external=True)}} ") i.pi-search | {% else %} li.tabs-search( title="Search (subscribers only)", data-toggle="tooltip", data-placement="right") a(href="{{ url_for('cloud.join') }}") i.pi-search | {% endif %} | {% endif %} | {{ extension_sidebar_links }} | {% if project.has_method('PUT') %} li( title="Edit Project", data-toggle="tooltip", data-placement="right") a(href="{{ url_for('projects.edit', project_url=project.url) }}") i.pi-cog | {% endif %} #project_nav(class="{{ title }}") #project_nav-container | {% if title != 'about' %} //- +nav-secondary(class="bg-white") //- +nav-secondary-link( //- class="active", //- href="{{url_for('projects.view', project_url=project.url, _external=True)}}") //- | {{ project.name }} //- #project_nav-header.bg-white //- a.project-title.p-2.font-weight-bold.text-dark( //- href="{{url_for('projects.view', project_url=project.url, _external=True)}}") //- | {{ project.name }} | {% block project_tree %} #project_tree.bg-white | {% endblock project_tree %} | {% endif %} #project_context-container.border-left | {% if project.has_method('PUT') %} #project_context-header.bg-white span#status-bar ul.project-edit-tools.disabled li.dropdown button#item_add.project-mode-view.btn.btn-sm.btn-outline-secondary.dropdown-toggle( type="button", data-toggle="dropdown", aria-haspopup="true", aria-expanded="false") i.button-add-icon.pi-collection-plus | New... ul.dropdown-menu.add_new-menu | {{ add_new_menu(project.node_types) }} li.button-edit a#item_edit.project-mode-view.btn.btn-sm.btn-outline-secondary.ml-2( href="javascript:void(0);", title="Edit", data-project_id="{{project._id}}") i.button-edit-icon.pi-edit | Edit Project li.dropdown button.dropdown-toggle.project-mode-view.btn.btn-sm.btn-outline-secondary.mx-2( type="button", data-toggle="dropdown", aria-haspopup="true", aria-expanded="false") i.pi-more-vertical.p-0 ul.dropdown-menu | {% if current_user.has_cap('admin') %} li.dropdown-item a#item_featured( href="javascript:void(0);", title="Feature on project's homepage", data-toggle="tooltip", data-placement="left") i.pi-star | Toggle Featured li.dropdown-item a#item_toggle_public( href="javascript:void(0);", title="Make it accessible to anyone", data-toggle="tooltip", data-placement="left") i.pi-lock-open | Toggle Public | {% endif %} li.dropdown-item a#item_toggle_projheader( href="javascript:void(0);", title="Feature as project's header", data-toggle="tooltip", data-placement="left") i.pi-star | Toggle Project Header video li.dropdown-item.button-move a#item_move( href="javascript:void(0);", title="Move into a folder...", data-toggle="tooltip", data-placement="left") i.button-move-icon.pi-move | Move li.dropdown-item.button-delete a#item_delete( href="javascript:void(0);", title="Can be undone within a month", data-toggle="tooltip", data-placement="left") i.pi-trash | Delete Project // Edit Mode li.button-cancel a#item_cancel.project-mode-edit.btn.btn-outline-secondary( href="javascript:void(0);", title="Cancel changes") i.button-cancel-icon.pi-cancel | Cancel li.button-save a#item_save.project-mode-edit.btn.btn-outline-success.mx-2( href="javascript:void(0);", title="Save changes") i.button-save-icon.pi-check | Save Changes | {% endif %} | {% set utm_source = request.args.get('utm_source') %} | {% if config.UTM_LINKS and utm_source in config.UTM_LINKS %} #utm_container a(href="{{config.UTM_LINKS[utm_source]['link']}}") img(src="{{config.UTM_LINKS[utm_source]['image']}}", alt="gift", class="img-responsive") | {% endif %} #project_context | {% block project_context %} | {% if show_project %} | {% include "projects/view_embed.html" %} | {% endif %} | {% endblock project_context %} #overlay-mode-move-container .overlay-container .title i.pi-angle-left | Select the folder where you want to move it .buttons button#item_move_accept.move.disabled | Select a Folder button#item_move_cancel.cancel i.pi-cancel | Cancel | {% endblock %} | {% block footer_container %}{% endblock %} | {% block footer_scripts_pre %} | {% if project.has_method('PUT') %} | {# JS containing the Edit, Add, Featured, and Move functions #} script(type="text/javascript", src="{{ url_for('static_pillar', filename='assets/js/project-edit.min.js') }}") | {% endif %} script. function updateToggleProjHeaderMenuItem() { var $toggle_projheader = $('#item_toggle_projheader'); if (ProjectUtils.isProject()) { $toggle_projheader.hide(); return; } if (ProjectUtils.nodeType() == 'asset') { $toggle_projheader.show(); } else { $toggle_projheader.hide(); } } $(updateToggleProjHeaderMenuItem); // Function to update the interface on loadNodeContent, and edit/saving assets function updateUi(nodeId, mode) { if (mode === 'view') { $('.project-mode-view').displayAs('inline-block'); $('.project-mode-edit').hide(); $("#node-edit-form").unbind("submit"); $("#item_save").unbind("click"); $("#item_cancel").unbind("click"); } else if (mode === 'edit') { $('.project-mode-view').hide(); $('.project-mode-edit').displayAs('inline-block'); } else { if (console) console.log('Invalid mode:', mode); } // Prevent flicker by scrolling to top. $("#project_context-container").scrollTop(0); // Enable specific items under the Add New dropdown if (ProjectUtils.nodeType() === 'group') { addMenuEnable(['asset', 'group']); } else if (ProjectUtils.nodeType() === 'group_texture') { addMenuEnable(['group_texture', 'texture']); } else if (ProjectUtils.nodeType() === 'group_hdri') { addMenuEnable(['group_hdri', 'hdri']); } else if (!ProjectUtils.isProject()) { addMenuEnable(false); } updateToggleProjHeaderMenuItem(); // Set the page title on the document var page_title = $('#node-title').text() + " - {{ project.name }} — Blender Cloud"; DocumentTitleAPI.set_page_title(page_title); // TODO: Maybe remove this, now it's also in loadNodeContent(), but double-check // it's done like that in all users of updateUi(). $('#project-loading').removeAttr('class'); } | {% endblock %} | {% block footer_scripts %} script(src="{{ url_for('static_pillar', filename='assets/jstree/jstree.min.js') }}") script. {% if show_project %} ProjectUtils.setProjectAttributes({projectId: "{{project._id}}", isProject: true, nodeId: ''}); {% else %} {% if node %} ProjectUtils.setProjectAttributes({projectId: "{{project._id}}", isProject: false, nodeId: '{{node._id}}'}); {% endif %} {% endif %} var projectTree = document.getElementById('project_tree'); var urlNodeMove = "{{url_for('projects.move_node')}}"; var urlNodeFeature = "{{url_for('projects.add_featured_node')}}"; var urlNodeDelete = "{{url_for('projects.delete_node')}}"; var urlNodeTogglePublic = "{{url_for('projects.toggle_node_public')}}"; var urlNodeToggleProjHeader = "{{url_for('projects.toggle_node_project_header')}}"; var urlProjectDelete = "{{url_for('projects.delete')}}"; var urlProjectEdit = "{{url_for('projects.edit', project_url=project.url)}}"; function loadNodeContent(url, nodeId) { $('#project-loading').addClass('active'); $.get(url, function(dataHtml) { // Update the DOM injecting the generate HTML into the page $('#project_context').html(dataHtml); }) .done(function(){ updateUi(nodeId, 'view'); }) .fail(function(dataResponse) { $('#project_context').html($('