305 lines
9.6 KiB
Plaintext
305 lines
9.6 KiB
Plaintext
| {% extends 'layout.html' %}
|
|
| {% from '_macros/_navigation.html' import navigation_home_project %}
|
|
include ../../../../pillar/src/templates/mixins/components
|
|
|
|
| {% set title = 'dashboard' %}
|
|
|
|
| {% block og %}
|
|
meta(property="og:title", content="Dashboard")
|
|
meta(name="twitter:title", content="Blender Cloud")
|
|
|
|
meta(property="og:url", content="https://cloud.blender.org/{{ request.path }}")
|
|
meta(property="og:type", content="website")
|
|
|
|
meta(property="og:image", content="{{ url_for('static', filename='assets/img/backgrounds/cloud_services_oti.jpg')}}")
|
|
meta(name="twitter:image", content="{{ url_for('static', filename='assets/img/backgrounds/cloud_services_oti.jpg')}}")
|
|
| {% endblock %}
|
|
|
|
| {% block page_title %}
|
|
| {{current_user.full_name}}
|
|
| {% endblock %}
|
|
|
|
| {% block css %}
|
|
| {{ super() }}
|
|
style.
|
|
.deleted-projects-toggle {
|
|
z-index: 10;
|
|
position: absolute;
|
|
right: 0;
|
|
font-size: 20px;
|
|
padding: 3px;
|
|
text-shadow: 0 0 2px white;
|
|
}
|
|
.deleted-projects-toggle .show-deleted {
|
|
color: #aaa;
|
|
}
|
|
.deleted-projects-toggle .hide-deleted {
|
|
color: #bbb;
|
|
}
|
|
| {% endblock %}
|
|
|
|
| {% block navigation_tabs %}
|
|
| {{ navigation_home_project(title) }}
|
|
| {% endblock navigation_tabs %}
|
|
|
|
| {% block body %}
|
|
.dashboard-container
|
|
section.dashboard-main
|
|
section#projects.bg-white
|
|
.d-flex
|
|
+nav-secondary()(id='sub-nav-tabs__list')
|
|
+nav-secondary-link(data-tab-toggle='own_projects', class="active")
|
|
span
|
|
| Own Projects
|
|
| {% if projects_user | length != 0 %}
|
|
.d-inline.text-muted.pl-1 ({{ projects_user|length }})
|
|
| {% endif %}
|
|
|
|
+nav-secondary-link(data-tab-toggle='shared')
|
|
span
|
|
| Shared with me
|
|
| {% if projects_shared | length != 0 %}
|
|
.d-inline.text-muted.pl-1 ({{ projects_shared|length }})
|
|
| {% endif %}
|
|
|
|
+nav-secondary()()
|
|
| {% if current_user.has_cap('subscriber') %}
|
|
+nav-secondary-link(
|
|
id="project-create",
|
|
data-url="{{ url_for('projects.create') }}",
|
|
href="{{ url_for('projects.create') }}")
|
|
span.text-success Create New Project...
|
|
|
|
| {% elif current_user.has_cap('can-renew-subscription') %}
|
|
+nav-secondary-link(
|
|
id="project-create",
|
|
data-url="{{ url_for('projects.create') }}",
|
|
href="/renew",
|
|
target="_blank")
|
|
i.pi-heart-filled.text-danger.pr-1
|
|
span Resubscribe to Create a Project
|
|
| {% endif %}
|
|
|
|
nav.nav-tabs__tab.active#own_projects
|
|
.deleted-projects-toggle
|
|
| {% if show_deleted_projects %}
|
|
a.hide-deleted(href="{{ request.base_url }}", title='Hide deleted projects')
|
|
i.pi-trash
|
|
| {% else %}
|
|
a.show-deleted(href="{{ request.base_url }}?deleted=1", title='Show deleted projects')
|
|
i.pi-trash
|
|
| {% endif %}
|
|
|
|
ul.projects__list
|
|
| {% for project in projects_deleted %}
|
|
li.projects__list-item.deleted
|
|
span.projects__list-thumbnail
|
|
| {% if project.picture_square %}
|
|
img(src="{{ project.picture_square.thumbnail('s', api=api) }}")
|
|
| {% else %}
|
|
i.pi-blender-cloud
|
|
| {% endif %}
|
|
.projects__list-details
|
|
span.title {{ project.name }}
|
|
ul.meta
|
|
li.status.deleted Deleted
|
|
li.edit
|
|
a(href="javascript:undelete_project('{{ project._id }}')") Restore project
|
|
| {% else %}
|
|
| {% if show_deleted_projects %}
|
|
li.projects__list-item.deleted You have no recenly deleted projects. Deleted projects can be restored within a month after deletion.
|
|
| {% endif %}
|
|
| {% endfor %}
|
|
|
|
| {% for project in projects_user %}
|
|
li.projects__list-item(
|
|
data-url="{{ url_for('projects.view', project_url=project.url) }}")
|
|
a.projects__list-thumbnail(
|
|
href="{{ url_for('projects.view', project_url=project.url) }}")
|
|
| {% if project.picture_square %}
|
|
img(src="{{ project.picture_square.thumbnail('s', api=api) }}")
|
|
| {% else %}
|
|
i.pi-blender-cloud
|
|
| {% endif %}
|
|
.projects__list-details
|
|
a.title(href="{{ url_for('projects.view', project_url=project.url) }}")
|
|
| {{ project.name }}
|
|
|
|
ul.meta
|
|
li.status(
|
|
class="{{ project.is_private | yesno('private,public,') }}",
|
|
title="{{ project.is_private | yesno('Private Project,Public Project,') }}")
|
|
| {{ project.is_private | yesno('Private,Public,') }}
|
|
li.when(title="{{ project._created }}") {{ project._created | pretty_date }}
|
|
li.edit
|
|
a(href="{{ url_for('projects.edit', project_url=project.url) }}") Edit
|
|
| {% if project.status == 'pending' and current_user.has_cap('view-pending-nodes') %}
|
|
li.pending Not Published
|
|
| {% endif %}
|
|
| {% else %}
|
|
| {% if current_user.has_cap('subscriber') %}
|
|
li.projects__list-item(data-url="{{ url_for('projects.create') }}")
|
|
a.projects__list-thumbnail
|
|
i.pi-plus
|
|
.projects__list-details
|
|
a.title(href="{{ url_for('projects.create') }}")
|
|
| Create a project to get started!
|
|
| {% elif current_user.has_cap('can-renew-subscription') %}
|
|
li.projects__list-item(data-url="https://store.blender.org/renew-my-subscription.php")
|
|
a.projects__list-thumbnail
|
|
i.pi-plus
|
|
.projects__list-details
|
|
a.title(href="https://store.blender.org/renew-my-subscription.php")
|
|
| Renew your Blender Cloud subscription to create your own projects!
|
|
| {% else %}
|
|
li.projects__list-item(data-url="/join")
|
|
a.projects__list-thumbnail
|
|
i.pi-plus
|
|
.projects__list-details
|
|
a.title(href="/join")
|
|
| Join Blender Cloud to create your own projects!
|
|
| {% endif %}
|
|
| {% endfor %}
|
|
|
|
section.nav-tabs__tab#shared(style='display: none')
|
|
ul.projects__list
|
|
| {% if projects_shared %}
|
|
| {% for project in projects_shared %}
|
|
li.projects__list-item(
|
|
data-url="{{ url_for('projects.view', project_url=project.url) }}")
|
|
a.projects__list-thumbnail(
|
|
href="{{ url_for('projects.view', project_url=project.url) }}")
|
|
| {% if project.picture_square %}
|
|
img(src="{{ project.picture_square.thumbnail('s', api=api) }}")
|
|
| {% else %}
|
|
i.pi-blender-cloud
|
|
| {% endif %}
|
|
.projects__list-details
|
|
a.title(href="{{ url_for('projects.view', project_url=project.url) }}")
|
|
| {{ project.name }}
|
|
|
|
ul.meta
|
|
li.status(
|
|
class="{{ project.is_private | yesno('private,public,') }}",
|
|
title="{{ project.is_private | yesno('Private Project,Public Project,') }}")
|
|
| {{ project.is_private | yesno('Private,Public,') }}
|
|
li.when {{ project._created | pretty_date }}
|
|
li.who by {{ project.user.full_name }}
|
|
li.edit
|
|
a(href="{{ url_for('projects.edit', project_url=project.url) }}") Edit
|
|
| {% if project.status == 'pending' and current_user.has_cap('view-pending-nodes') %}
|
|
li.pending Not Published
|
|
| {% endif %}
|
|
|
|
li.leave
|
|
span.user-remove-prompt
|
|
| Leave Project
|
|
|
|
span.user-remove
|
|
| Are you sure?
|
|
span.user-remove-confirm(
|
|
user-id="{{ current_user.objectid }}",
|
|
project-url="{{url_for('projects.sharing', project_url=project.url)}}")
|
|
i.pi-check
|
|
| Yes, leave
|
|
span.user-remove-cancel
|
|
i.pi-cancel
|
|
| No, cancel
|
|
|
|
| {% endfor %}
|
|
| {% else %}
|
|
li.projects__list-item
|
|
a.projects__list-thumbnail
|
|
i.pi-heart-broken
|
|
.projects__list-details
|
|
.title
|
|
| No projects shared with you... yet!
|
|
| {% endif %}
|
|
| {% endblock %}
|
|
|
|
|
|
| {% block footer_scripts %}
|
|
script.
|
|
$(document).ready(function() {
|
|
|
|
$('li.projects__list-item').click(function(e){
|
|
url = $(this).data('url');
|
|
if (typeof url === 'undefined') return;
|
|
|
|
window.location.href = url;
|
|
if (console) console.log(url);
|
|
|
|
$(this).addClass('active');
|
|
$(this).find('.projects__list-thumbnail i')
|
|
.removeAttr('class')
|
|
.addClass('pi-spin spin');
|
|
});
|
|
|
|
// Tabs behavior
|
|
var $nav_tabs_list = $('#sub-nav-tabs__list');
|
|
var $nav_tabs = $nav_tabs_list.find('a.nav-link');
|
|
$nav_tabs.on('click', function(e){
|
|
e.preventDefault();
|
|
|
|
$nav_tabs.removeClass('active');
|
|
$(this).addClass('active');
|
|
|
|
$('.nav-tabs__tab').hide();
|
|
$('#' + $(this).attr('data-tab-toggle')).show();
|
|
});
|
|
|
|
// Leave project
|
|
var $projects_list = $('ul.projects__list');
|
|
$projects_list.find('span.user-remove-prompt').on('click', function(e){
|
|
e.stopPropagation();
|
|
e.preventDefault();
|
|
|
|
$(this).next().show();
|
|
$(this).hide();
|
|
});
|
|
|
|
$projects_list.find('span.user-remove-cancel').on('click', function(e){
|
|
e.stopPropagation();
|
|
e.preventDefault();
|
|
|
|
$(this).parent().prev().show();
|
|
$(this).parent().hide();
|
|
});
|
|
|
|
$projects_list.find('span.user-remove-confirm').on('click', function(e){
|
|
e.stopPropagation();
|
|
e.preventDefault();
|
|
var parent = $(this).closest('.projects__list-item');
|
|
|
|
function removeUser(userId, projectUrl){
|
|
$.post(projectUrl, {user_id: userId, action: 'remove'})
|
|
.done(function (data) {
|
|
parent.remove();
|
|
});
|
|
}
|
|
|
|
removeUser($(this).attr('user-id'), $(this).attr('project-url'));
|
|
});
|
|
|
|
hopToTop(); // Display jump to top button
|
|
});
|
|
|
|
|
|
var patch_url = '{{ url_for('projects.patch.patch_project', project_id='PROJECTID') }}';
|
|
function undelete_project(project_id) {
|
|
console.log('undeleting project', project_id);
|
|
$.ajax({
|
|
url: patch_url.replace('PROJECTID', project_id),
|
|
method: 'PATCH',
|
|
data: JSON.stringify({'op': 'undelete'}),
|
|
contentType: 'application/json'
|
|
})
|
|
.done(function(data, textStatus, jqXHR) {
|
|
location.href = jqXHR.getResponseHeader('Location');
|
|
})
|
|
.fail(function(err) {
|
|
toastr.error(xhrErrorResponseMessage(err), 'Undeletion failed');
|
|
})
|
|
}
|
|
| {% endblock %}
|