Add badge to project owner

stable
Xavier Julián 2016-02-26 10:35:53 +01:00 committed by David Barragán Merino
parent 7e0d0ad04b
commit ecb7aa2a2b
13 changed files with 82 additions and 29 deletions

View File

@ -224,6 +224,7 @@ MembershipsRowAvatarDirective = ($log, $template, $translate) ->
email: if member.user_email then member.user_email else member.email
imgurl: if member.photo then member.photo else "/" + window._version + "/images/unnamed.png"
pending: if !member.is_user_active then pending else ""
isOwner: member.is_owner
}
html = template(ctx)

View File

@ -95,6 +95,7 @@ class TeamController extends mixOf(taiga.Controller, taiga.PageMixin)
@scope.issuesEnabled = project.is_issues_activated
@scope.tasksEnabled = project.is_kanban_activated or project.is_backlog_activated
@scope.wikiEnabled = project.is_wiki_activated
@scope.owner = project.owner.id
return project
@ -185,10 +186,11 @@ TeamMemberCurrentUserDirective = () ->
scope: {
projectId: "=projectid",
currentUser: "=currentuser",
stats: "="
issuesEnabled: "=issuesenabled"
tasksEnabled: "=tasksenabled"
wikiEnabled: "=wikienabled"
stats: "=",
issuesEnabled: "=issuesenabled",
tasksEnabled: "=tasksenabled",
wikiEnabled: "=wikienabled",
owner: "=owner"
}
}
@ -208,10 +210,11 @@ TeamMembersDirective = () ->
memberships: "=",
filtersQ: "=filtersq",
filtersRole: "=filtersrole",
stats: "="
issuesEnabled: "=issuesenabled"
tasksEnabled: "=tasksenabled"
wikiEnabled: "=wikienabled"
stats: "=",
issuesEnabled: "=issuesenabled",
tasksEnabled: "=tasksenabled",
wikiEnabled: "=wikienabled",
owner: "=owner"
}
}

View File

@ -41,6 +41,7 @@
"IOCAINE_TEXT": "Feeling a bit overwhelmed by a task? Make sure others know about it by clicking on Iocaine when editing a task. It's possible to become immune to this (fictional) deadly poison by consuming small amounts over time just as it's possible to get better at what you do by occasionally taking on extra challenges!",
"CLIENT_REQUIREMENT": "Client requirement is new requirement that was not previously expected and it is required to be part of the project",
"TEAM_REQUIREMENT": "Team requirement is a requirement that must exist in the project but should have no cost for the client",
"OWNER": "Project Owner",
"CAPSLOCK_WARNING": "Be careful! You are writing with capital letters and this input is case sensitive.",
"FORM_ERRORS": {
"DEFAULT_MESSAGE": "This value seems to be invalid.",

View File

@ -49,16 +49,15 @@
)
svg.icon.icon-lock
use(xlink:href="#icon-lock")
svg.icon.icon-badge(ng-if="project.get('i_am_owner')")
use(xlink:href="#icon-badge")
title(translate="COMMON.OWNER")
p {{ ::project.get('description') | limitTo:300 }}
span(ng-if="::project.get('description').length > 300") ...
.list-itemtype-project-tags.tag-container(ng-if="::project.get('tags').size")
span.tag(
style='border-left: 5px solid {{::tag.get("color")}};'
tg-repeat="tag in ::project.get('colorized_tags')"
)
span.tag-name {{::tag.get('name')}}
svg.drag.icon.icon-drag
use(xlink:href="#icon-drag")

View File

@ -13,6 +13,13 @@
margin: 0;
}
}
.icon-lock,
.icon-badge {
@include svg-size();
}
.icon-badge {
margin-left: .5rem;
}
.create-project-btn {
margin-right: .25rem;
padding: .6rem 2.5rem;
@ -48,7 +55,7 @@
.list-itemtype-project {
background: rgba($white, .6);
&:hover {
background: lighten($primary, 63%);
background: rgba($primary-light, .1);
cursor: move;
transition: background .3s;
.drag {

View File

@ -72,3 +72,6 @@ div.wrapper
title="{{::member.get('full_name')}}"
)
img(ng-src="{{::member.get('photo')}}", alt="{{::member.get('full_name')}}")
svg.icon.icon-badge(ng-if="member.get('id') == vm.project.getIn(['owner', 'id'])")
use(xlink:href="#icon-badge")
title(translate="COMMON.OWNER")

View File

@ -2,6 +2,11 @@ figure.avatar
img(src!="<%- imgurl %>", alt!="<%- full_name %>")
figcaption
span.name <%- full_name %>
<% if (isOwner) { %>
svg.icon.icon-badge
use(xlink:href="#icon-badge")
title(translate="COMMON.OWNER")
<% } %>
div
span.pending <%- pending %>
span.email <%- email %>

View File

@ -35,6 +35,7 @@ section.table-team.basic-table
issuesEnabled="issuesEnabled"
tasksenabled="tasksEnabled"
wikienabled="wikiEnabled"
owner="owner"
ng-if="::currentUser"
)
@ -42,4 +43,14 @@ h2(ng-show="memberships.length")
span(translate="TEAM.SECTION_TITLE_TEAM")
span {{filtersRole.name || ("TEAM.SECTION_FILTER_ALL" | translate)}}
section.table-team.basic-table(tg-team-members, memberships="memberships", stats="stats", filtersq="filtersQ", filtersrole="filtersRole", issuesEnabled="issuesEnabled", tasksenabled="tasksEnabled", wikienabled="wikiEnabled")
section.table-team.basic-table(
tg-team-members
memberships="memberships"
stats="stats"
filtersq="filtersQ"
filtersrole="filtersRole"
issuesEnabled="issuesEnabled"
tasksenabled="tasksEnabled"
wikienabled="wikiEnabled"
owner="owner"
)

View File

@ -4,9 +4,13 @@
img(tg-bo-src="currentUser.photo", tg-bo-alt="currentUser.full_name_display")
.avatar-data
span.name(tg-bo-bind="currentUser.full_name_display")
.name
span(tg-bo-bind="currentUser.full_name_display")
svg.icon.icon-badge(ng-if="currentUser.id == owner")
use(xlink:href="#icon-badge")
title(translate="COMMON.OWNER")
span.position(tg-bo-bind="currentUser.role_name")
.position(tg-bo-bind="currentUser.role_name")
div(tg-leave-project="", projectid="{{projectId}}")

View File

@ -4,12 +4,21 @@
img(tg-bo-src="user.photo", tg-bo-alt="user.full_name_display")
.avatar-data
a.name(tg-nav="user-profile:username=user.username",
title="{{::user.full_name_display}}") {{::user.full_name_display}}
a.name(
tg-nav="user-profile:username=user.username",
title="{{::user.full_name_display}}"
) {{::user.full_name_display}}
svg.icon.icon-badge(ng-if="user.id == owner")
use(xlink:href="#icon-badge")
title(translate="COMMON.OWNER")
span.position {{::user.role_name}}
.member-stats(tg-team-member-stats, stats="stats",
user="user.user",
issuesEnabled="issuesEnabled",
tasksenabled="tasksEnabled",
wikienabled="wikiEnabled")
.member-stats(
tg-team-member-stats
stats="stats"
user="user.user"
issuesEnabled="issuesEnabled"
tasksenabled="tasksEnabled"
wikienabled="wikiEnabled"
)

View File

@ -96,6 +96,7 @@
li {
flex-basis: 24%;
margin-right: .14rem;
position: relative;
&:nth-child(4n) {
margin-right: 0;
}
@ -107,5 +108,10 @@
border-radius: .2rem;
width: 100%;
}
.icon-badge {
bottom: 15%;
position: absolute;
right: 15%;
}
}
}

View File

@ -100,4 +100,8 @@
.popover {
@include popover(100%, '', 0, 30px, '', 15px, '', 50%, -5px);
}
.icon-badge {
position: relative;
top: .15rem;
}
}

View File

@ -361,9 +361,9 @@
<title>Looking for people</title>
<path d="M510.5 3l-159 141.7-207 14.2-19.3 203L0 513.4l125.2 151.2 19.3 208 207 19 159 132.3 159-132.4 207-19 14.5-203L1021 518 896 362.2 876.6 159l-207-19-159-137zm0 250.5c72.3 0 135 56.7 135 132.3 0 75.7-62.7 132.4-135 132.4-72.2 0-134.8-56.7-134.8-127.6 0-71 62.6-127.7 134.8-127.7zm0 331c96.4 0 269.8 47 269.8 127.5v66.2H240.8V712c0-85 178.2-132.4 269.7-132.4z"/>
</symbol>
<symbol id="icon-activity" viewBox="0 0 1024 1024">
<title>Activity</title>
<path d="M715.5 206.7l117 117-249.3 246.8L379.7 367 3.2 748.6l71.2 68.7L379.7 512l203.5 203.5L903.8 395l117 117V206.7z"/>
<symbol id="icon-badge" viewBox="0 0 1024 1024">
<title>Owner Badge</title>
<path fill="#9dce0a" d="M512.053 24.761l-130.433 173.609-213.936-30.392 30.427 214.125-173.349 130.201 173.349 130.2-30.427 214.123 214.747-30.506 130.064 173.118 129.997-173.027 214.355 30.451-30.588-215.258 172.981-129.922-172.497-129.561 30.458-214.345-214.912 30.53-130.235-173.346z"></path>
</symbol>
</defs>
</svg>

Before

Width:  |  Height:  |  Size: 64 KiB

After

Width:  |  Height:  |  Size: 64 KiB