From ecb7aa2a2b92aded44d6989e6afa46a7fcdad90a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Xavier=20Juli=C3=A1n?= Date: Fri, 26 Feb 2016 10:35:53 +0100 Subject: [PATCH] Add badge to project owner --- app/coffee/modules/admin/memberships.coffee | 1 + app/coffee/modules/team/main.coffee | 19 ++++++++------- app/locales/taiga/locale-en.json | 1 + .../projects/listing/projects-listing.jade | 13 +++++------ .../projects/listing/styles/project-list.scss | 9 +++++++- app/modules/projects/project/project.jade | 3 +++ .../admin/memberships-row-avatar.jade | 5 ++++ .../includes/modules/team/team-table.jade | 13 ++++++++++- .../team/team-member-current-user.jade | 8 +++++-- app/partials/team/team-members.jade | 23 +++++++++++++------ app/styles/modules/home-project.scss | 6 +++++ app/styles/modules/team/team-table.scss | 4 ++++ app/svg/sprite.svg | 6 ++--- 13 files changed, 82 insertions(+), 29 deletions(-) diff --git a/app/coffee/modules/admin/memberships.coffee b/app/coffee/modules/admin/memberships.coffee index 17d157ee..bd3dc25e 100644 --- a/app/coffee/modules/admin/memberships.coffee +++ b/app/coffee/modules/admin/memberships.coffee @@ -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) diff --git a/app/coffee/modules/team/main.coffee b/app/coffee/modules/team/main.coffee index 3de5ade8..b74006f4 100644 --- a/app/coffee/modules/team/main.coffee +++ b/app/coffee/modules/team/main.coffee @@ -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" } } diff --git a/app/locales/taiga/locale-en.json b/app/locales/taiga/locale-en.json index 28c7e652..11a0ec7a 100644 --- a/app/locales/taiga/locale-en.json +++ b/app/locales/taiga/locale-en.json @@ -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.", diff --git a/app/modules/projects/listing/projects-listing.jade b/app/modules/projects/listing/projects-listing.jade index 69a6dfe0..237e1061 100644 --- a/app/modules/projects/listing/projects-listing.jade +++ b/app/modules/projects/listing/projects-listing.jade @@ -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") diff --git a/app/modules/projects/listing/styles/project-list.scss b/app/modules/projects/listing/styles/project-list.scss index 522358f2..f2599a51 100644 --- a/app/modules/projects/listing/styles/project-list.scss +++ b/app/modules/projects/listing/styles/project-list.scss @@ -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 { diff --git a/app/modules/projects/project/project.jade b/app/modules/projects/project/project.jade index d7d2dbb6..89a52c87 100644 --- a/app/modules/projects/project/project.jade +++ b/app/modules/projects/project/project.jade @@ -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") diff --git a/app/partials/admin/memberships-row-avatar.jade b/app/partials/admin/memberships-row-avatar.jade index 838f44cc..294a0143 100644 --- a/app/partials/admin/memberships-row-avatar.jade +++ b/app/partials/admin/memberships-row-avatar.jade @@ -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 %> diff --git a/app/partials/includes/modules/team/team-table.jade b/app/partials/includes/modules/team/team-table.jade index 27dc7e42..0f9ac475 100644 --- a/app/partials/includes/modules/team/team-table.jade +++ b/app/partials/includes/modules/team/team-table.jade @@ -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" +) diff --git a/app/partials/team/team-member-current-user.jade b/app/partials/team/team-member-current-user.jade index f8fa273e..623c936c 100644 --- a/app/partials/team/team-member-current-user.jade +++ b/app/partials/team/team-member-current-user.jade @@ -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}}") diff --git a/app/partials/team/team-members.jade b/app/partials/team/team-members.jade index 342d0bf6..1c88dfde 100644 --- a/app/partials/team/team-members.jade +++ b/app/partials/team/team-members.jade @@ -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" + ) diff --git a/app/styles/modules/home-project.scss b/app/styles/modules/home-project.scss index a58aab65..70c5d1eb 100644 --- a/app/styles/modules/home-project.scss +++ b/app/styles/modules/home-project.scss @@ -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%; + } } } diff --git a/app/styles/modules/team/team-table.scss b/app/styles/modules/team/team-table.scss index a84e4660..1e2edc11 100644 --- a/app/styles/modules/team/team-table.scss +++ b/app/styles/modules/team/team-table.scss @@ -100,4 +100,8 @@ .popover { @include popover(100%, '', 0, 30px, '', 15px, '', 50%, -5px); } + .icon-badge { + position: relative; + top: .15rem; + } } diff --git a/app/svg/sprite.svg b/app/svg/sprite.svg index cd74aed7..a0283ab7 100644 --- a/app/svg/sprite.svg +++ b/app/svg/sprite.svg @@ -361,9 +361,9 @@ Looking for people - - Activity - + + Owner Badge +