| {% extends 'layout.html' %} | {% from '_macros/_add_new_menu.html' import add_new_menu %} | {% block page_title %}{{ project.name }}{% endblock%} | {% 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="//cdnjs.cloudflare.com/ajax/libs/jstree/3.3.1/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-5.8.8.min.js', v=6220171) }}") script(src="{{ url_for('static_pillar', filename='assets/js/vendor/videojs-ga-0.4.2.min.js', v=6220171) }}") | {% endblock %} | {% block css %} link(href="{{ url_for('static_pillar', filename='assets/css/font-pillar.css', v=6220171) }}", rel="stylesheet") link(href="{{ url_for('static_pillar', filename='assets/css/base.css', v=6220171) }}", rel="stylesheet") link(href="{{ url_for('static_pillar', filename='assets/css/project-main.css', v=6220171) }}", rel="stylesheet") | {% endblock %} | {% block body %} #project-container #project-side-container #project_sidebar ul.project-tabs 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 subscription in ['demo', 'subscriber', 'admin'] %} 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('main.join') }}") i.pi-search | {% endif %} | {% endif %} | {{ extension_sidebar_links }} .project_nav-toggle-btn( title="Toggle navigation [T]", data-toggle="tooltip", data-placement="right") i.pi-angle-double-left #project_nav(class="{{ title }}") #project_nav-container | {% if title != 'about' %} #project_nav-header .project-title a(href="{{url_for('projects.view', project_url=project.url, _external=True)}}") | {{ project.name }} | {% block project_tree %} #project_tree | {% endblock project_tree %} | {% endif %} .project_split(title="Toggle Navigation [T]") #project_context-container | {% if project.has_method('PUT') %} #project_context-header span#status-bar ul.project-edit-tools.disabled li.button-dropdown a#item_add.dropdown-toggle.project-mode-view( 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( href="javascript:void(0);", title="Edit", data-project_id="{{project._id}}") i.button-edit-icon.pi-edit | Edit Project li.button-dropdown a.dropdown-toggle.project-mode-view( type="button", data-toggle="dropdown", aria-haspopup="true", aria-expanded="false") i.pi-more-vertical ul.dropdown-menu | {% if current_user.has_role('admin') %} li.button-featured a#item_featured( href="javascript:void(0);", title="Feature on project's homepage", data-toggle="tooltip", data-placement="left") i.button-featured-icon.pi-star | Toggle Featured li.button-toggle-public 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.button-toggle-projheader a#item_toggle_projheader( href="javascript:void(0);", title="Feature as project's header", data-toggle="tooltip", data-placement="left") i.button-featured-icon.pi-star | Toggle Project Header video li.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.button-delete a#item_delete( href="javascript:void(0);", title="Delete (Warning: no undo)", data-toggle="tooltip", data-placement="left") i.pi-trash | Delete Project // Edit Mode li.button-cancel a#item_cancel.project-mode-edit( href="javascript:void(0);", title="Cancel changes") i.button-cancel-icon.pi-cancel | Cancel li.button-save a#item_save.project-mode-edit( href="javascript:void(0);", title="Save changes") i.button-save-icon.pi-check | Save Changes | {% 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_navigation %}{% endblock %} | {% block footer %}{% 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', v=6220171) }}") | {% 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').show(); $('.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').show(); } 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(); var nodeTitle = document.getElementById('node-title'); var nodeTitleText = $(nodeTitle).text() + " - {{ project.name }} - Blender Cloud"; document.title = nodeTitleText; // 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="//cdnjs.cloudflare.com/ajax/libs/jstree/3.3.1/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($('