Organizations list styling

This commit is contained in:
2017-08-31 16:35:10 +02:00
parent 30b3d6abaf
commit 6a4f571b05
11 changed files with 235 additions and 162 deletions

View File

@@ -126,11 +126,8 @@
size: 1.2em size: 1.2em
weight: 400 weight: 400
display: inline-block display: inline-block
padding: 15px 20px 10px 20px padding: 10px 10px
border-bottom: 3px solid transparent
&:hover
border-color: $color-success
a a
color: $color-success color: $color-success
text-decoration: none text-decoration: none

View File

@@ -0,0 +1,35 @@
body.organizations
ul#sub-nav-tabs__list
align-items: center
display: flex
li.result
padding: 10px 20px
li.create
margin-left: auto
#side
.box
+container-box
padding: 10px 20px
margin: 20px 10px
#item-details
.organization
label
display: block
margin-top: 10px
.input-group,
textarea,
input
width: 100%
input
font-size: 1.1em
.org-admin
#admin-name
padding: 10px 0

View File

@@ -8,28 +8,18 @@
section#sub-nav-tabs.home, section#sub-nav-tabs.home,
section#sub-nav-tabs.projects section#sub-nav-tabs.projects
background-color: $color-background-light background-color: white
border-bottom: thin solid $color-background-dark border-bottom: thin solid $color-background-dark
li.nav-tabs__list-tab li.nav-tabs__list-tab
padding: 15px 20px 10px 20px padding: 15px 20px 10px 20px
&:hover
border-color: rgba($color-primary, .4)
&.active
border-color: $color-primary
color: $color-primary-dark
a, i
color: $color-primary-dark
span
color: $color-text-dark-secondary
section#home section#home
background-color: $color-background-dark background-color: $color-background-dark
section.nav-tabs__tab section.nav-tabs__tab
display: none display: none
background-color: $color-background-light
&.active &.active
display: block display: block

View File

@@ -1212,6 +1212,9 @@ section.node-preview.group
.node-details-meta-list .node-details-meta-list
display: inline-block display: inline-block
> li
padding: 0 5px
.node-details-meta-actions .node-details-meta-actions
display: inline-block display: inline-block

View File

@@ -1090,8 +1090,8 @@ button, .btn
#cloud-search, .tt-hint #cloud-search, .tt-hint
+text-overflow-ellipsis
background-color: transparent background-color: transparent
width: 100%
outline: none outline: none
border: thin solid transparent border: thin solid transparent
border-bottom: 3px solid transparent border-bottom: 3px solid transparent
@@ -1103,7 +1103,6 @@ button, .btn
padding: 0 20px 0 40px padding: 0 20px 0 40px
min-height: 32px min-height: 32px
color: white color: white
+text-overflow-ellipsis
transition: border 100ms ease-in-out transition: border 100ms ease-in-out
&:focus &:focus

View File

@@ -14,6 +14,7 @@
@import _services @import _services
@import _stats @import _stats
@import _search @import _search
@import _organizations
/* services, about, etc */ /* services, about, etc */
@import _pages @import _pages

View File

@@ -62,6 +62,7 @@ li(class="dropdown")
title="My Projects") title="My Projects")
i.pi-star i.pi-star
| My Projects | My Projects
| {% if current_user.has_organizations() %} | {% if current_user.has_organizations() %}
li li
a.navbar-item( a.navbar-item(
@@ -70,20 +71,24 @@ li(class="dropdown")
i.pi-users i.pi-users
| My Organizations | My Organizations
| {% endif %} | {% endif %}
li li
a.navbar-item( a.navbar-item(
href="{{ url_for('settings.profile') }}" href="{{ url_for('settings.profile') }}"
title="Settings") title="Settings")
i.pi-cog i.pi-cog
| Settings | Settings
li li
a.navbar-item( a.navbar-item(
href="{{ url_for('settings.billing') }}" href="{{ url_for('settings.billing') }}"
title="Billing") title="Billing")
i.pi-credit-card i.pi-credit-card
| Subscription | Subscription
li.divider(role="separator") li.divider(role="separator")
| {% endif %} | {% endif %}
li li
a.navbar-item( a.navbar-item(
href="{{ url_for('users.logout') }}") href="{{ url_for('users.logout') }}")

View File

@@ -5,11 +5,23 @@ section#nav-tabs
li.nav-tabs__list-tab( li.nav-tabs__list-tab(
class="{% if title == 'homepage' %}active{% endif %}") class="{% if title == 'homepage' %}active{% endif %}")
a(href="{{ url_for('main.homepage') }}") Activity a(href="{{ url_for('main.homepage') }}") Activity
li.nav-tabs__list-tab(
class="{% if title == 'dashboard' %}active{% endif %}")
a(href="{{ url_for('projects.index') }}") My Projects
li.nav-tabs__list-tab( li.nav-tabs__list-tab(
class="{% if title == 'home' %}active{% endif %}") class="{% if title == 'home' %}active{% endif %}")
a(href="{{ url_for('projects.home_project') }}") Home a(href="{{ url_for('projects.home_project') }}") Home
li.nav-tabs__list-tab(
class="{% if title == 'dashboard' %}active{% endif %}")
a(href="{{ url_for('projects.index') }}") My Projects
| {% if current_user.has_organizations() %}
li.nav-tabs__list-tab(
class="{% if title == 'organizations' %}active{% endif %}")
a(
href="{{ url_for('pillar.web.organizations.index') }}",
title="My Organizations")
| My Organizations
| {% endif %}
| {% endmacro %} | {% endmacro %}

View File

@@ -1,59 +1,74 @@
| {% extends 'layout.html' %} | {% extends 'layout.html' %}
| {% block bodyattrs %}{{ super() }} data-context='organizations'{% endblock %} | {% from '_macros/_navigation.html' import navigation_tabs %}
| {% set title = 'organizations' %}
| {% block page_title %}Organizations{% endblock %} | {% block page_title %}Organizations{% endblock %}
| {% 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 body %} | {% block body %}
#app-main .dashboard-container
#col_main.organization-index section#main
#col_main-content | {{ navigation_tabs(title) }}
.col_header.item-list-header
i.pi-cloud
| Your organizations
.item-list.col-scrollable section#projects
.table
.table-head
.table-row
.table-cell.item-name
span.collapser(title="Collapse name column") Name
.table-cell.item-priority
span.collapser(title="Collapse priority column") Members
.table-cell.item-priority
span.collapser(title="Collapse priority column") Pending Members
.table-body
| {% for organization in organizations['_items'] %}
| {% set link_url = url_for('pillar.web.organizations.view_embed', organization_id=organization._id) %}
.table-row(id="organization-{{ organization._id }}")
.table-cell.item-name
a(data-organization-id="{{ organization._id }}",
href="{{ link_url }}",
class="organization-link")
span(class="organization-name-{{ organization._id }}") {{ organization.name }}
.table-cell.item-members
a(data-organization-id="{{ organization._id }}",
href="{{ link_url }}",
class="organization-link")
span(class="organization-projects-{{ organization._id }}") {{ organization.members|hide_none|count }}
.table-cell.item-pending-members
a(data-organization-id="{{ organization._id }}",
href="{{ link_url }}",
class="organization-link")
span(class="organization-projects-{{ organization._id }}") {{ organization.unknown_members|hide_none|count }}
| {% endfor %}
#item-action-panel
| {% if can_create_organization %} | {% if can_create_organization %}
button.btn(onclick='createNewOrganization(this)') Create new organization section#sub-nav-tabs.projects
#create_organization_result_panel ul#sub-nav-tabs__list
li.result#create_organization_result_panel
li.create
button.btn.btn-success(onclick='createNewOrganization(this)')
i.pi-plus
| Create Organization
| {% endif %} | {% endif %}
#col_right section.nav-tabs__tab.active#own_projects
.col_header ul.projects__list
span.header_text | {% if organizations %}
#item-details.col-scrollable | {% for organization in organizations['_items'] %}
.item-details-empty | {% set link_url = url_for('pillar.web.organizations.view_embed', organization_id=organization._id) %}
| Select an organization li.projects__list-item(
data-url="{{ link_url }}",
id="organization-{{ organization._id }}")
a.projects__list-thumbnail(
href="{{ link_url }}")
i.pi-users
.projects__list-details
a.title(href="{{ link_url }}")
| {{ organization.name }}
ul.meta
li(title="Members")
| {{ organization.members|hide_none|count }} Member{{ organization.members|hide_none|count|pluralize }}
| {% if (organization.unknown_members|count) != 0 %}
| ({{ organization.unknown_members|hide_none|count }} pending)
| {% endif %}
li(title="Seats")
| {{ organization.seat_count }} Seat{{ organization.seat_count|pluralize }}
| {% endfor %}
| {% else %}
li.projects__list-item
a.projects__list-thumbnail
i.pi-blender-cloud
.projects__list-details
span Create an Organization to get started!
| {% endif %}
section#side
section.box
#item-details
| {% endblock %} | {% endblock %}
@@ -102,7 +117,6 @@ script.
$.get(item_url, function(item_data) { $.get(item_url, function(item_data) {
statusBarClear(); statusBarClear();
$('#item-details').html(item_data); $('#item-details').html(item_data);
$('#col_right .col_header span.header_text').text('Organization details');
current_item current_item
.removeClass(clean_classes) .removeClass(clean_classes)
@@ -143,6 +157,7 @@ script.
{% if open_organization_id %} {% if open_organization_id %}
$(function() { item_open('{{ open_organization_id }}', false); }); $(function() { item_open('{{ open_organization_id }}', false); });
{% endif %} {% endif %}
{% if can_create_organization %} {% if can_create_organization %}
function createNewOrganization(button) { function createNewOrganization(button) {
$(button) $(button)

View File

@@ -29,15 +29,16 @@
type="text", type="text",
placeholder="Organization's location", placeholder="Organization's location",
value="{{ organization.location | hide_none }}") value="{{ organization.location | hide_none }}")
| {% if can_super_edit %} | {% if can_super_edit %}
.input-group.text-danger .input-group
label(for='org-seat-count-field') Seat count label(for='org-seat-count-field') Seat count
input.item-location.input-transparent#org-seat-count-field( input.item-location.input-transparent#org-seat-count-field(
name="seat_count", name="seat_count",
type="text", type="text",
placeholder="Seat count", placeholder="Seat count",
value="{{ organization.seat_count | hide_none }}") value="{{ organization.seat_count | hide_none }}")
.input-group.text-danger .input-group
label(for='org-roles-field') Roles label(for='org-roles-field') Roles
input.item-location.input-transparent#org-roles-field( input.item-location.input-transparent#org-roles-field(
name="org_roles", name="org_roles",
@@ -45,8 +46,9 @@
placeholder="Organization roles", placeholder="Organization roles",
value="{{ organization.org_roles | hide_none | sort | join(' ') }}") value="{{ organization.org_roles | hide_none | sort | join(' ') }}")
| {% endif %} | {% endif %}
.input-group
label.item-admin-user Org admin .input-group.org-admin
label.item-admin-user Organization Administrator
p#admin-name p#admin-name
a(href='javascript:showAdminPicker()', title='Click to choose another administrator') {{ admin_user.full_name }} a(href='javascript:showAdminPicker()', title='Click to choose another administrator') {{ admin_user.full_name }}
p#admin-picker p#admin-picker
@@ -55,12 +57,13 @@
type='text', type='text',
placeholder='Search for a new administrator') placeholder='Search for a new administrator')
a(href='javascript:hideAdminPicker()') a(href='javascript:hideAdminPicker()')
i.pi-cancel.text-danger span.text-danger Cancel
script $('#admin-picker').hide(); script $('#admin-picker').hide();
.input-group .input-group
button#item-save.btn.btn-default.btn-block(type='submit') button#item-save.btn.btn-success.btn-block(type='submit')
i.pi-check i.pi-check
| Save Organization | Save Changes
| {% else %} | {% else %}
p.item-name {{ organization.name | hide_none }} p.item-name {{ organization.name | hide_none }}
| {% if organization.description %} | {% if organization.description %}
@@ -76,8 +79,10 @@
p.item-admin-user Organization administrator: {{ admin_user.full_name }} p.item-admin-user Organization administrator: {{ admin_user.full_name }}
| {% endif %} | {% endif %}
h4 Properties hr
.table.item-properties
h4 Properties
.table.item-properties
.table-body .table-body
.table-row.properties-last-updated .table-row.properties-last-updated
.table-cell Last Updated .table-cell Last Updated
@@ -92,8 +97,11 @@
.table-cell(title='Unable to edit, determined by subscription') .table-cell(title='Unable to edit, determined by subscription')
| {{ organization.org_roles | hide_none | sort | join(', ') }} | {{ organization.org_roles | hide_none | sort | join(', ') }}
hr
h4 Organization members
.members .members
h4 Organization members
| {% if can_edit %} | {% if can_edit %}
.sharing-users-search .sharing-users-search
.form-group .form-group
@@ -102,6 +110,7 @@
type='text', type='text',
placeholder='Add member by name') placeholder='Add member by name')
| {% endif %} | {% endif %}
ul.sharing-users-list ul.sharing-users-list
| {% for member in members %} | {% for member in members %}
li.sharing-users-item( li.sharing-users-item(
@@ -131,10 +140,13 @@
| {% endif %} | {% endif %}
| {% else %} | {% else %}
li li
p.small No members yet p.text-warning No members yet
| {% endfor %} | {% endfor %}
| {% if organization.unknown_members %} | {% if organization.unknown_members %}
h5 Pending members (i.e. without Blender Cloud account) hr
p Pending Members (i.e. without Blender Cloud account)
ul.sharing-users-list.unknown-members ul.sharing-users-list.unknown-members
| {% for email in organization.unknown_members %} | {% for email in organization.unknown_members %}
li.sharing-users-item.unknown-member(data-user-email='{{ email }}') li.sharing-users-item.unknown-member(data-user-email='{{ email }}')
@@ -149,25 +161,29 @@
| {% endif %} | {% endif %}
| {% endfor %} | {% endfor %}
| {% endif %} | {% endif %}
| {% if can_edit %} | {% if can_edit %}
h5 Batch-add members by email address br
p Batch-add members by email address:
form#batch_add_form(onsubmit="return batchAddUsers()") form#batch_add_form(onsubmit="return batchAddUsers()")
.input-group .input-group
textarea.item-description.input-transparent( textarea.item-description(
name="emails", name="emails",
type="text", type="text",
rows=1, rows=1,
placeholder="Email addresses, separated by space/enter") placeholder="Enter the email addresses separated by space or a new line")
.input-group .input-group
button.btn.btn-default.btn-block(type='submit') button.btn.btn-info.btn-block(type='submit')
i.pi-check i.pi-plus
| Add members | Add Members
| {% endif %} | {% endif %}
.action-result-panel .action-result-panel
| {% if config.DEBUG %}
#item-view-feed #item-view-feed
| {% if config.DEBUG %}
.debug-info .debug-info
a.debug-info-toggle(role='button', a.debug-info-toggle(role='button',
data-toggle='collapse', data-toggle='collapse',
@@ -179,7 +195,7 @@
#debug-content-organization.collapse #debug-content-organization.collapse
pre. pre.
{{ organization.to_dict() | pprint }} {{ organization.to_dict() | pprint }}
| {% endif %} | {% endif %}
| {% block footer_scripts %} | {% block footer_scripts %}

View File

@@ -42,7 +42,7 @@ meta(name="twitter:image", content="{{ url_for('static', filename='assets/img/ba
| {% if current_user.has_cap('subscriber') %} | {% if current_user.has_cap('subscriber') %}
li.create( li.create(
data-url="{{ url_for('projects.create') }}") data-url="{{ url_for('projects.create') }}")
a#project-create( a.btn.btn-success#project-create(
href="{{ url_for('projects.create') }}") href="{{ url_for('projects.create') }}")
i.pi-plus i.pi-plus
| Create Project | Create Project