refactor svg icons
parent
384383ed98
commit
0ed5a1428a
|
@ -240,7 +240,7 @@ module.directive("tgMemberships", ["$tgTemplate", "$compile", MembershipsDirecti
|
|||
## Member Avatar Directive
|
||||
#############################################################################
|
||||
|
||||
MembershipsRowAvatarDirective = ($log, $template, $translate) ->
|
||||
MembershipsRowAvatarDirective = ($log, $template, $translate, $compile) ->
|
||||
template = $template.get("admin/memberships-row-avatar.html", true)
|
||||
|
||||
link = ($scope, $el, $attrs) ->
|
||||
|
@ -255,6 +255,8 @@ MembershipsRowAvatarDirective = ($log, $template, $translate) ->
|
|||
}
|
||||
|
||||
html = template(ctx)
|
||||
html = $compile(html)($scope)
|
||||
|
||||
$el.html(html)
|
||||
|
||||
if not $attrs.tgMembershipsRowAvatar?
|
||||
|
@ -269,7 +271,7 @@ MembershipsRowAvatarDirective = ($log, $template, $translate) ->
|
|||
return {link: link}
|
||||
|
||||
|
||||
module.directive("tgMembershipsRowAvatar", ["$log", "$tgTemplate", '$translate', MembershipsRowAvatarDirective])
|
||||
module.directive("tgMembershipsRowAvatar", ["$log", "$tgTemplate", '$translate', "$compile", MembershipsRowAvatarDirective])
|
||||
|
||||
|
||||
#############################################################################
|
||||
|
@ -393,9 +395,7 @@ MembershipsRowActionsDirective = ($log, $repo, $rs, $confirm, $compile, $transla
|
|||
</div>
|
||||
<a class="delete" href=""
|
||||
title="{{ 'ADMIN.MEMBERSHIP.DELETE_MEMBER' | translate }}">
|
||||
<svg class="icon icon-trash">
|
||||
<use xlink:href="#icon-trash">
|
||||
</svg>
|
||||
<tg-svg svg-icon="icon-trash"></tg-svg>
|
||||
</a>
|
||||
"""
|
||||
|
||||
|
@ -406,9 +406,7 @@ MembershipsRowActionsDirective = ($log, $repo, $rs, $confirm, $compile, $transla
|
|||
</a>
|
||||
<a class="delete" href=""
|
||||
title="{{ 'ADMIN.MEMBERSHIP.DELETE_MEMBER' | translate }}">
|
||||
<svg class="icon icon-trash">
|
||||
<use xlink:href="#icon-trash">
|
||||
</svg>
|
||||
<tg-svg svg-icon="icon-trash"></tg-svg>
|
||||
</a>
|
||||
"""
|
||||
|
||||
|
|
|
@ -228,7 +228,7 @@ ProjectModulesDirective = ($repo, $confirm, $loading, projectService) ->
|
|||
event.preventDefault()
|
||||
submit()
|
||||
|
||||
$el.on "click", ".icon-save", (event) ->
|
||||
$el.on "click", ".save", (event) ->
|
||||
event.preventDefault()
|
||||
submit()
|
||||
|
||||
|
|
|
@ -292,9 +292,7 @@ RolePermissionsDirective = ($rootscope, $repo, $confirm, $compile) ->
|
|||
title="{{ '<%- permission.name %>' | translate }}"></div>
|
||||
<% }) %>
|
||||
</div>
|
||||
<svg class="icon icon-arrow-right">
|
||||
<use xlink:href="#icon-arrow-right">
|
||||
</svg>
|
||||
<tg-svg svg-icon="icon-arrow-right"></tg-svg>
|
||||
""")
|
||||
|
||||
categoryTemplate = _.template("""
|
||||
|
|
|
@ -275,6 +275,13 @@ LoginDirective = ($auth, $confirm, $location, $config, $routeParams, $navUrls, $
|
|||
onError = (response) ->
|
||||
$confirm.notify("light-error", $translate.instant("LOGIN_FORM.ERROR_AUTH_INCORRECT"))
|
||||
|
||||
$scope.onKeyUp = (event) ->
|
||||
target = angular.element(event.currentTarget)
|
||||
value = target.val()
|
||||
$scope.iscapsLockActivated = false
|
||||
if value != value.toLowerCase()
|
||||
$scope.iscapsLockActivated = true
|
||||
|
||||
submit = debounce 2000, (event) =>
|
||||
event.preventDefault()
|
||||
|
||||
|
|
|
@ -38,9 +38,9 @@ module = angular.module("taigaBacklog")
|
|||
## Issues Filters Directive
|
||||
#############################################################################
|
||||
|
||||
BacklogFiltersDirective = ($q, $log, $location, $templates) ->
|
||||
template = $templates.get("backlog/filters.html", true)
|
||||
templateSelected = $templates.get("backlog/filter-selected.html", true)
|
||||
BacklogFiltersDirective = ($q, $log, $location, $template, $compile) ->
|
||||
template = $template.get("backlog/filters.html", true)
|
||||
templateSelected = $template.get("backlog/filter-selected.html", true)
|
||||
|
||||
link = ($scope, $el, $attrs) ->
|
||||
currentFiltersType = ''
|
||||
|
@ -78,6 +78,8 @@ BacklogFiltersDirective = ($q, $log, $location, $templates) ->
|
|||
f.style = "border-left: 3px solid #{f.color}"
|
||||
|
||||
html = templateSelected({filters: selectedFilters})
|
||||
html = $compile(html)($scope)
|
||||
|
||||
$el.find(".filters-applied").html(html)
|
||||
|
||||
renderFilters = (filters) ->
|
||||
|
@ -86,6 +88,7 @@ BacklogFiltersDirective = ($q, $log, $location, $templates) ->
|
|||
f.style = "border-left: 3px solid #{f.color}"
|
||||
|
||||
html = template({filters:filters})
|
||||
html = $compile(html)($scope)
|
||||
$el.find(".filter-list").html(html)
|
||||
|
||||
getFiltersType = () ->
|
||||
|
@ -158,9 +161,9 @@ BacklogFiltersDirective = ($q, $log, $location, $templates) ->
|
|||
event.preventDefault()
|
||||
showCategories()
|
||||
|
||||
$el.on "click", ".filters-applied a", (event) ->
|
||||
$el.on "click", ".remove-filter", (event) ->
|
||||
event.preventDefault()
|
||||
target = angular.element(event.currentTarget)
|
||||
target = angular.element(event.currentTarget).parent()
|
||||
id = target.data("id")
|
||||
type = target.data("type")
|
||||
toggleFilterSelection(type, id)
|
||||
|
@ -179,4 +182,4 @@ BacklogFiltersDirective = ($q, $log, $location, $templates) ->
|
|||
|
||||
return {link:link}
|
||||
|
||||
module.directive("tgBacklogFilters", ["$q", "$log", "$tgLocation", "$tgTemplate", BacklogFiltersDirective])
|
||||
module.directive("tgBacklogFilters", ["$q", "$log", "$tgLocation", "$tgTemplate", "$compile", BacklogFiltersDirective])
|
||||
|
|
|
@ -62,7 +62,7 @@ BacklogSprintDirective = ($repo, $rootscope) ->
|
|||
|
||||
$el.find(".sprint-table").slideToggle(slideOptions)
|
||||
|
||||
$el.on "click", ".sprint-name > .icon-edit", (event) ->
|
||||
$el.on "click", ".edit-sprint", (event) ->
|
||||
event.preventDefault()
|
||||
|
||||
sprint = $scope.$eval($attrs.tgBacklogSprint)
|
||||
|
|
|
@ -284,39 +284,52 @@ module.factory("$tgTemplate", ["$templateCache", Template])
|
|||
## Permission directive, hide elements when necessary
|
||||
#############################################################################
|
||||
|
||||
Capslock = ($translate) ->
|
||||
link = ($scope, $el, $attrs) ->
|
||||
open = false
|
||||
Capslock = () ->
|
||||
template = """
|
||||
<tg-svg class="capslock" ng-if="capslockIcon && iscapsLockActivated" svg-icon='icon-capslock' svg-title='COMMON.CAPSLOCK_WARNING'></tg-svg>
|
||||
"""
|
||||
|
||||
return {
|
||||
template: template
|
||||
}
|
||||
|
||||
warningIcon = "<svg class='icon icon-capslock' title='" + $translate.instant('COMMON.CAPSLOCK_WARNING') + "'><use xlink:href='#icon-capslock'></svg>";
|
||||
module.directive("tgCapslock", [Capslock])
|
||||
|
||||
hideIcon = () ->
|
||||
$('.icon-capslock').fadeOut () ->
|
||||
open = false
|
||||
LightboxClose = () ->
|
||||
template = """
|
||||
<a class="close" href="" title="{{'COMMON.CLOSE' | translate}}">
|
||||
<tg-svg svg-icon="icon-close"></tg-svg>
|
||||
</a>
|
||||
"""
|
||||
|
||||
$(this).remove()
|
||||
return {
|
||||
template: template
|
||||
}
|
||||
|
||||
showIcon = (e) ->
|
||||
return if open
|
||||
element = e.currentTarget
|
||||
$(element).parent().append(warningIcon)
|
||||
$('.icon-capslock').fadeIn()
|
||||
module.directive("tgLightboxClose", [LightboxClose])
|
||||
|
||||
open = true
|
||||
Svg = () ->
|
||||
template = """
|
||||
<svg class="{{ 'icon ' + svgIcon }}">
|
||||
<use xlink:href="" ng-attr-xlink:href="{{ '#' + svgIcon }}">
|
||||
<title ng-if="svgTitle">{{svgTitle}}</title>
|
||||
<title
|
||||
ng-if="svgTitleTranslate"
|
||||
translate="{{svgTitleTranslate}}"
|
||||
translate-values="{{svgTitleTranslateValues}}"
|
||||
></title>
|
||||
</use>
|
||||
</svg>
|
||||
"""
|
||||
|
||||
$el.on 'blur', (e) ->
|
||||
hideIcon()
|
||||
return {
|
||||
scope: {
|
||||
svgIcon: "@",
|
||||
svgTitle: "@",
|
||||
svgTitleTranslate: "@",
|
||||
svgTitleTranslateValues: "="
|
||||
},
|
||||
template: template
|
||||
}
|
||||
|
||||
$el.on 'keyup.capslock, focus', (e) ->
|
||||
if $el.val() == $el.val().toLowerCase()
|
||||
hideIcon(e)
|
||||
else
|
||||
showIcon(e)
|
||||
|
||||
$scope.$on "$destroy", ->
|
||||
$el.off('.capslock')
|
||||
|
||||
return {link:link}
|
||||
|
||||
module.directive("tgCapslock", ["$translate", Capslock])
|
||||
module.directive("tgSvg", [Svg])
|
||||
|
|
|
@ -177,9 +177,9 @@ class ConfirmService extends taiga.Service
|
|||
useSVG.setAttributeNS('http://www.w3.org/1999/xlink','href', '#' + icon.name)
|
||||
|
||||
detailImage = document.createElementNS("http://www.w3.org/2000/svg", "svg")
|
||||
detailImage.classList.add("icon")
|
||||
detailImage.classList.add("lb-icon")
|
||||
detailImage.classList.add(icon.name)
|
||||
taiga.addClass(detailImage, "icon")
|
||||
taiga.addClass(detailImage, "lb-icon")
|
||||
taiga.addClass(detailImage, icon.name)
|
||||
detailImage.appendChild(useSVG)
|
||||
|
||||
if detailImage
|
||||
|
|
|
@ -117,7 +117,7 @@ CustomAttributesValuesDirective = ($templates, $storage) ->
|
|||
$ctrl.initialize($attrs.type, value.id)
|
||||
$ctrl.loadCustomAttributesValues()
|
||||
|
||||
$el.on "click", ".custom-fields-header .icon", ->
|
||||
$el.on "click", ".custom-fields-header .collapse", ->
|
||||
hash = collapsedHash($attrs.type)
|
||||
collapsed = not($storage.get(hash) or false)
|
||||
$storage.set(hash, collapsed)
|
||||
|
|
|
@ -584,20 +584,20 @@ IssuesFiltersDirective = ($q, $log, $location, $rs, $confirm, $loading, $templat
|
|||
unwatchIssues()
|
||||
|
||||
# Dom Event Handlers
|
||||
$el.on "click", ".filters-cats > ul > li > a", (event) ->
|
||||
$el.on "click", ".filters-cat-single", (event) ->
|
||||
event.preventDefault()
|
||||
target = angular.element(event.currentTarget)
|
||||
tags = $scope.filters[target.data("type")]
|
||||
renderFilters(_.reject(tags, "selected"))
|
||||
showFilters(target.attr("title"), target.data("type"))
|
||||
|
||||
$el.on "click", ".filters-inner > .filters-step-cat > .breadcrumb > .back", (event) ->
|
||||
$el.on "click", ".back", (event) ->
|
||||
event.preventDefault()
|
||||
showCategories($el)
|
||||
|
||||
$el.on "click", ".filters-applied a", (event) ->
|
||||
$el.on "click", ".filters-applied .remove-filter", (event) ->
|
||||
event.preventDefault()
|
||||
target = angular.element(event.currentTarget)
|
||||
target = angular.element(event.currentTarget).parent()
|
||||
|
||||
id = target.data("id") or null
|
||||
type = target.data("type")
|
||||
|
@ -617,7 +617,7 @@ IssuesFiltersDirective = ($q, $log, $location, $rs, $confirm, $loading, $templat
|
|||
|
||||
toggleFilterSelection(type, id)
|
||||
|
||||
$el.on "click", ".filter-list .single-filter .remove-filter", (event) ->
|
||||
$el.on "click", ".filter-list .remove-filter", (event) ->
|
||||
event.preventDefault()
|
||||
event.stopPropagation()
|
||||
|
||||
|
|
|
@ -426,7 +426,7 @@ KanbanUserstoryDirective = ($rootscope, $loading, $rs, $rs2) ->
|
|||
else if not us.is_blocked and $el.hasClass("blocked")
|
||||
$el.removeClass("blocked")
|
||||
|
||||
$el.on 'click', '.icon-edit', (event) ->
|
||||
$el.on 'click', '.edit-us', (event) ->
|
||||
if $el.find(".icon-edit").hasClass("noclick")
|
||||
return
|
||||
|
||||
|
|
|
@ -151,6 +151,7 @@ RelatedTaskCreateFormDirective = ($repo, $compile, $confirm, $tgmodel, $loading,
|
|||
return promise
|
||||
|
||||
close = () ->
|
||||
$el.removeClass('active')
|
||||
$el.off()
|
||||
$el.html("")
|
||||
|
||||
|
@ -173,7 +174,7 @@ RelatedTaskCreateFormDirective = ($repo, $compile, $confirm, $tgmodel, $loading,
|
|||
$el.on "click", ".icon-close", (event)->
|
||||
$scope.$apply () -> close()
|
||||
|
||||
$el.on "click", ".icon-save", (event)->
|
||||
$el.on "click", ".save-task", (event)->
|
||||
createTask(newTask).then ->
|
||||
close()
|
||||
|
||||
|
|
|
@ -317,16 +317,16 @@ TaskboardTaskDirective = ($rootscope, $loading, $rs, $rs2) ->
|
|||
else if not task.is_blocked and $el.hasClass("blocked")
|
||||
$el.removeClass("blocked")
|
||||
|
||||
$el.find(".icon-edit").on "click", (event) ->
|
||||
if $el.find('.icon-edit').hasClass('noclick')
|
||||
$el.find(".edit-task").on "click", (event) ->
|
||||
if $el.find('.edit-task').hasClass('noclick')
|
||||
return
|
||||
|
||||
$scope.$apply ->
|
||||
target = $(event.target)
|
||||
|
||||
currentLoading = $loading()
|
||||
.target(target)
|
||||
.timeout(200)
|
||||
.removeClasses("icon-edit")
|
||||
.start()
|
||||
|
||||
task = $scope.task
|
||||
|
|
|
@ -22,6 +22,12 @@
|
|||
# File: utils.coffee
|
||||
###
|
||||
|
||||
addClass = (el, className) ->
|
||||
if (el.classList)
|
||||
el.classList.add(className)
|
||||
else
|
||||
el.className += ' ' + className
|
||||
|
||||
nl2br = (str) =>
|
||||
breakTag = '<br />'
|
||||
return (str + '').replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, '$1' + breakTag + '$2')
|
||||
|
@ -222,6 +228,7 @@ patch = (oldImmutable, newImmutable) ->
|
|||
return pathObj
|
||||
|
||||
taiga = @.taiga
|
||||
taiga.addClass = addClass
|
||||
taiga.nl2br = nl2br
|
||||
taiga.bindMethods = bindMethods
|
||||
taiga.bindOnce = bindOnce
|
||||
|
|
|
@ -1413,6 +1413,7 @@
|
|||
"PLACEHOLDER_PAGE": "Write your wiki page",
|
||||
"REMOVE": "Remove this wiki page",
|
||||
"DELETE_LIGHTBOX_TITLE": "Delete Wiki Page",
|
||||
"DELETE_LINK_TITLE": "Delete Wiki link",
|
||||
"NAVIGATION": {
|
||||
"SECTION_NAME": "Links",
|
||||
"ACTION_ADD_LINK": "Add link"
|
||||
|
|
|
@ -51,10 +51,12 @@
|
|||
opacity: 0;
|
||||
}
|
||||
.editable-settings {
|
||||
display: block;
|
||||
opacity: 1;
|
||||
}
|
||||
svg {
|
||||
fill: $gray-light;
|
||||
pointer-events: none;
|
||||
}
|
||||
.icon-edit,
|
||||
.icon-save {
|
||||
|
|
|
@ -34,5 +34,4 @@
|
|||
title="{{'COMMON.DELETE' | translate}}"
|
||||
ng-click="vm.delete()"
|
||||
)
|
||||
svg.icon.icon-trash
|
||||
use(xlink:href="#icon-trash")
|
||||
tg-svg(svg-icon="icon-trash")
|
||||
|
|
|
@ -12,8 +12,7 @@ form.single-attachment(
|
|||
target="_blank"
|
||||
download="{{::vm.attachment.getIn(['file', 'name'])}}"
|
||||
)
|
||||
svg.icon.icon-attachment
|
||||
use(xlink:href="#icon-attachment")
|
||||
tg-svg(svg-icon="icon-attachment")
|
||||
span {{::vm.attachment.getIn(['file', 'name'])}}
|
||||
|
||||
.attachment-comments(ng-if="!vm.attachment.get('editable') && vm.attachment.getIn(['file', 'description'])")
|
||||
|
@ -52,8 +51,7 @@ form.single-attachment(
|
|||
title="{{'COMMON.SAVE' | translate}}"
|
||||
ng-click="vm.save()"
|
||||
)
|
||||
svg.drag.icon.icon-save
|
||||
use(xlink:href="#icon-save")
|
||||
tg-svg(svg-icon="icon-save")
|
||||
|
||||
div
|
||||
a.editable-settings(
|
||||
|
@ -61,8 +59,7 @@ form.single-attachment(
|
|||
title="{{'COMMON.CANCEL' | translate}}"
|
||||
ng-click="vm.editMode(false)"
|
||||
)
|
||||
svg.drag.icon.icon-close
|
||||
use(xlink:href="#icon-close")
|
||||
tg-svg(svg-icon="icon-close")
|
||||
|
||||
.attachment-settings(
|
||||
ng-if="!vm.attachment.get('editable')"
|
||||
|
@ -73,18 +70,15 @@ form.single-attachment(
|
|||
title="{{'COMMON.EDIT' | translate}}"
|
||||
ng-click="vm.editMode(true)"
|
||||
)
|
||||
svg.drag.icon.icon-edit
|
||||
use(xlink:href="#icon-edit")
|
||||
tg-svg.drag(svg-icon="icon-edit")
|
||||
a.settings(
|
||||
href=""
|
||||
title="{{'COMMON.DELETE' | translate}}"
|
||||
ng-click="vm.delete()"
|
||||
)
|
||||
svg.drag.icon.icon-trash
|
||||
use(xlink:href="#icon-trash")
|
||||
tg-svg.drag(svg-icon="icon-trash")
|
||||
a.settings(
|
||||
href=""
|
||||
title="{{'COMMON.DRAG' | translate}}"
|
||||
)
|
||||
svg.drag.icon.icon-drag
|
||||
use(xlink:href="#icon-drag")
|
||||
tg-svg.drag(svg-icon="icon-drag")
|
||||
|
|
|
@ -11,24 +11,21 @@ section.attachments(
|
|||
ng-click="vm.setMode('gallery')"
|
||||
title="{{ 'ATTACHMENT.GALLERY_VIEW_MODE' | translate }}"
|
||||
)
|
||||
svg.icon.icon-gallery
|
||||
use(xlink:href="#icon-gallery")
|
||||
tg-svg(svg-icon="icon-gallery")
|
||||
button.view-list(
|
||||
ng-class="{'is-active': vm.mode == 'list'}"
|
||||
ng-if="vm.attachments.size"
|
||||
ng-click="vm.setMode('list')"
|
||||
title="{{ 'ATTACHMENT.LIST_VIEW_MODE' | translate }}"
|
||||
)
|
||||
svg.icon.icon-list
|
||||
use(xlink:href="#icon-list")
|
||||
tg-svg(svg-icon="icon-list")
|
||||
.add-attach(
|
||||
tg-check-permission="modify_{{vm.type}}"
|
||||
title!="{{'ATTACHMENT.ADD' | translate}}"
|
||||
)
|
||||
|
||||
label.add-attachment-button(for="add-attach")
|
||||
svg.icon.icon-add
|
||||
use(xlink:href="#icon-add")
|
||||
tg-svg(svg-icon="icon-add")
|
||||
|
||||
input(
|
||||
id="add-attach",
|
||||
|
@ -55,8 +52,7 @@ section.attachments(
|
|||
|
||||
.single-attachment(ng-repeat="file in vm.uploadingAttachments()")
|
||||
.attachment-name
|
||||
svg.icon.icon-attachment
|
||||
use(xlink:href="#icon-attachment")
|
||||
tg-svg(svg-icon="icon-attachment")
|
||||
span {{file.name}}
|
||||
.attachment-size
|
||||
span {{file.size | sizeFormat}}
|
||||
|
|
|
@ -5,8 +5,7 @@ section.attachments(tg-attachments-drop="vm.addAttachments(files)")
|
|||
h3.attachments-title #[span.attachments-num {{vm.attachments.size}}] #[span.attachments-text(translate="ATTACHMENT.SECTION_NAME")]
|
||||
.add-attach(title!="{{'ATTACHMENT.ADD' | translate}}")
|
||||
label.add-attachment-button(for="add-attach")
|
||||
svg.icon.icon-add
|
||||
use(xlink:href="#icon-add")
|
||||
tg-svg(svg-icon="icon-add")
|
||||
input(
|
||||
id="add-attach"
|
||||
type="file"
|
||||
|
@ -19,8 +18,7 @@ section.attachments(tg-attachments-drop="vm.addAttachments(files)")
|
|||
.attachment-body.attachment-list
|
||||
.single-attachment(tg-repeat="attachment in vm.attachments track by $index")
|
||||
.attachment-name
|
||||
svg.icon.icon-attachment
|
||||
use(xlink:href="#icon-attachment")
|
||||
tg-svg(svg-icon="icon-attachment")
|
||||
span {{attachment.get('name')}}
|
||||
.attachment-size
|
||||
span {{attachment.get('size') | sizeFormat}}
|
||||
|
@ -31,5 +29,4 @@ section.attachments(tg-attachments-drop="vm.addAttachments(files)")
|
|||
title="{{'COMMON.DELETE' | translate}}"
|
||||
ng-click="vm.deleteAttachment(attachment)"
|
||||
)
|
||||
svg.icon.icon-trash
|
||||
use(xlink:href="#icon-trash")
|
||||
tg-svg(svg-icon="icon-trash")
|
||||
|
|
|
@ -7,7 +7,6 @@
|
|||
a.close(
|
||||
ng-click="vm.close()"
|
||||
href=""
|
||||
title="{{ COMMON.CLOSE | translate }}"
|
||||
ng-title="COMMON.CLOSE | translate"
|
||||
)
|
||||
svg.icon.icon-close
|
||||
use(xlink:href="#icon-close")
|
||||
tg-svg(svg-icon="icon-close")
|
||||
|
|
|
@ -56,13 +56,14 @@
|
|||
}
|
||||
}
|
||||
.close {
|
||||
height: 2.5rem;
|
||||
display: block;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 1rem;
|
||||
width: 2.5rem;
|
||||
svg {
|
||||
@include svg-size(2rem);
|
||||
fill: lighten($tribe-secondary, 15%);
|
||||
pointer-events: none;
|
||||
transition: fill .2s;
|
||||
&:hover {
|
||||
fill: $tribe-secondary;
|
||||
|
|
|
@ -1,105 +1,96 @@
|
|||
nav.menu(
|
||||
ng-if="vm.project"
|
||||
ng-class="{'menu-fixed': vm.fixed}",
|
||||
)
|
||||
div(class="menu-container")
|
||||
ul(class="main-nav")
|
||||
li(id="nav-search")
|
||||
)
|
||||
.menu-container
|
||||
ul.main-nav
|
||||
li#nav-search
|
||||
a(
|
||||
href=""
|
||||
ng-click="vm.search()"
|
||||
ng-class="{active: vm.active == 'search'}"
|
||||
aria-label="{{'PROJECT.SECTION.SEARCH' | translate}}"
|
||||
tabindex="1"
|
||||
)
|
||||
svg.icon.icon-search
|
||||
use(xlink:href="#icon-search")
|
||||
span.helper(translate="PROJECT.SECTION.SEARCH")
|
||||
)
|
||||
tg-svg(svg-icon="icon-search")
|
||||
span.helper(translate="PROJECT.SECTION.SEARCH")
|
||||
|
||||
li(id="nav-timeline")
|
||||
li#nav-timeline
|
||||
a(
|
||||
tg-nav="project:project=vm.project.get('slug')"
|
||||
ng-class="{active: vm.active == 'project-timeline'}"
|
||||
aria-label="{{'PROJECT.SECTION.TIMELINE' | translate}}"
|
||||
tabindex="2"
|
||||
)
|
||||
svg.icon.icon-timeline
|
||||
use(xlink:href="#icon-timeline")
|
||||
tg-svg(svg-icon="icon-timeline")
|
||||
span.helper(translate="PROJECT.SECTION.TIMELINE")
|
||||
|
||||
li(id="nav-backlog", ng-if="vm.menu.get('backlog')")
|
||||
li#nav-backlog(ng-if="vm.menu.get('backlog')")
|
||||
a(
|
||||
tg-nav="project-backlog:project=vm.project.get('slug')"
|
||||
ng-class="{active: vm.active == 'backlog'}"
|
||||
aria-label="{{'PROJECT.SECTION.BACKLOG' | translate}}"
|
||||
tabindex="2"
|
||||
)
|
||||
svg.icon.icon-scrum
|
||||
use(xlink:href="#icon-scrum")
|
||||
tg-svg(svg-icon="icon-scrum")
|
||||
span.helper(translate="PROJECT.SECTION.BACKLOG")
|
||||
|
||||
li(id="nav-kanban", ng-if="vm.menu.get('kanban')")
|
||||
li#nav-kanban(ng-if="vm.menu.get('kanban')")
|
||||
a(
|
||||
tg-nav="project-kanban:project=vm.project.get('slug')"
|
||||
ng-class="{active: vm.active == 'kanban'}"
|
||||
aria-label="{{'PROJECT.SECTION.KANBAN' | translate}}"
|
||||
tabindex="3"
|
||||
)
|
||||
svg.icon.icon-kanban
|
||||
use(xlink:href="#icon-kanban")
|
||||
tg-svg(svg-icon="icon-kanban")
|
||||
span.helper(translate="PROJECT.SECTION.KANBAN")
|
||||
|
||||
li(id="nav-issues", ng-if="vm.menu.get('issues')")
|
||||
li#nav-issues(ng-if="vm.menu.get('issues')")
|
||||
a(
|
||||
tg-nav="project-issues:project=vm.project.get('slug')"
|
||||
ng-class="{active: vm.active == 'issues'}"
|
||||
aria-label="{{'PROJECT.SECTION.ISSUES' | translate}}"
|
||||
tabindex="4"
|
||||
)
|
||||
svg.icon.icon-issues
|
||||
use(xlink:href="#icon-issues")
|
||||
tg-svg(svg-icon="icon-issues")
|
||||
span.helper(translate="PROJECT.SECTION.ISSUES")
|
||||
|
||||
li(id="nav-wiki", ng-if="vm.menu.get('wiki')")
|
||||
li#nav-wiki(ng-if="vm.menu.get('wiki')")
|
||||
a(
|
||||
tg-nav="project-wiki:project=vm.project.get('slug')"
|
||||
ng-class="{active: vm.active == 'wiki'}"
|
||||
aria-label="{{'PROJECT.SECTION.WIKI' | translate}}"
|
||||
tabindex="5"
|
||||
)
|
||||
svg.icon.icon-wiki
|
||||
use(xlink:href="#icon-wiki")
|
||||
tg-svg(svg-icon="icon-wiki")
|
||||
span.helper(translate="PROJECT.SECTION.WIKI")
|
||||
|
||||
li(id="nav-team")
|
||||
li#nav-team
|
||||
a(
|
||||
tg-nav="project-team:project=vm.project.get('slug')"
|
||||
ng-class="{active: vm.active == 'team'}"
|
||||
aria-label="{{'PROJECT.SECTION.TEAM' | translate}}"
|
||||
tabindex="6"
|
||||
)
|
||||
svg.icon.icon-team
|
||||
use(xlink:href="#icon-team")
|
||||
tg-svg(svg-icon="icon-team")
|
||||
span.helper(translate="PROJECT.SECTION.TEAM")
|
||||
|
||||
li(id="nav-video", ng-if="vm.project.get('videoconferenceUrl')")
|
||||
li#nav-video(ng-if="vm.project.get('videoconferenceUrl')")
|
||||
a(
|
||||
ng-href="{{vm.project.get('videoconferenceUrl')}}"
|
||||
target="_blank"
|
||||
aria-label="{{'PROJECT.SECTION.MEETUP' | translate}}"
|
||||
tabindex="7"
|
||||
)
|
||||
svg.icon.icon-bubble
|
||||
use(xlink:href="#icon-bubble")
|
||||
tg-svg(svg-icon="icon-bubble")
|
||||
span.helper(translate="PROJECT.SECTION.MEETUP")
|
||||
|
||||
li(id="nav-admin", ng-if="vm.project.get('i_am_admin')")
|
||||
li#nav-admin(ng-if="vm.project.get('i_am_admin')")
|
||||
a(
|
||||
tg-nav="project-admin-home:project=vm.project.get('slug')"
|
||||
ng-class="{active: vm.active == 'admin'}"
|
||||
aria-label="{{'PROJECT.SECTION.ADMIN' | translate}}"
|
||||
tabindex="8"
|
||||
)
|
||||
svg.icon.icon-settings
|
||||
use(xlink:href="#icon-settings")
|
||||
tg-svg(svg-icon="icon-settings")
|
||||
span.helper(translate="PROJECT.SECTION.ADMIN")
|
||||
|
|
|
@ -9,8 +9,7 @@ a.vote-inner(
|
|||
ng-mouseleave="vm.showTextWhenMouseIsLeave()"
|
||||
)
|
||||
span.track-icon
|
||||
svg.icon.icon-upvote
|
||||
use(xlink:href="#icon-upvote")
|
||||
tg-svg(svg-icon="icon-upvote")
|
||||
span.track-button-counter(
|
||||
title="{{ 'COMMON.VOTE_BUTTON.COUNTER_TITLE'|translate:{total:vm.item.total_voters||0}:'messageformat' }}",
|
||||
tg-loading="vm.loading"
|
||||
|
@ -19,8 +18,7 @@ a.vote-inner(
|
|||
//- Anonymous user button
|
||||
span.vote-inner(ng-if="::!vm.user")
|
||||
span.track-icon
|
||||
svg.icon.icon-upvote
|
||||
use(xlink:href="#icon-upvote")
|
||||
tg-svg(svg-icon="icon-watch")
|
||||
span.track-button-counter(
|
||||
title="{{ 'COMMON.VOTE_BUTTON.COUNTER_TITLE'|translate:{total:vm.item.total_voters||0}:'messageformat' }}"
|
||||
) {{ ::vm.item.total_voters }}
|
||||
|
|
|
@ -14,17 +14,14 @@ div.ticket-watch-inner
|
|||
ng-mouseleave="vm.showTextWhenMouseIsLeave()"
|
||||
)
|
||||
span(ng-if="!vm.item.is_watcher")
|
||||
svg.icon.icon-watch
|
||||
use(xlink:href="#icon-watch")
|
||||
| {{'COMMON.WATCH_BUTTON.WATCH' | translate}}
|
||||
tg-svg(svg-icon="icon-watch")
|
||||
span {{'COMMON.WATCH_BUTTON.WATCH' | translate}}
|
||||
span(ng-if="vm.item.is_watcher && !vm.isMouseOver",)
|
||||
svg.icon.icon-watch
|
||||
use(xlink:href="#icon-watch")
|
||||
| {{'COMMON.WATCH_BUTTON.WATCHING' | translate}}
|
||||
tg-svg(svg-icon="icon-watch")
|
||||
span {{'COMMON.WATCH_BUTTON.WATCHING' | translate}}
|
||||
span(ng-if="vm.item.is_watcher && vm.isMouseOver")
|
||||
svg.icon.icon-unwatch
|
||||
use(xlink:href="#icon-unwatch")
|
||||
| {{'COMMON.WATCH_BUTTON.UNWATCH' | translate}}
|
||||
tg-svg(svg-icon="icon-unwatch")
|
||||
span {{'COMMON.WATCH_BUTTON.UNWATCH' | translate}}
|
||||
|
||||
a.add-watcher(
|
||||
href=""
|
||||
|
|
|
@ -16,8 +16,7 @@ a.track-button.watch-button.watch-container(
|
|||
ng-mouseleave="vm.showTextWhenMouseIsLeave()"
|
||||
)
|
||||
span.track-inner
|
||||
svg.icon.icon-watch
|
||||
use(xlink:href="#icon-watch")
|
||||
tg-svg(svg-icon="icon-watch")
|
||||
span(
|
||||
ng-if="!vm.item.is_watcher",
|
||||
translate="COMMON.WATCH_BUTTON.WATCH"
|
||||
|
@ -38,7 +37,6 @@ span.track-button.watch-button.watch-container(
|
|||
)
|
||||
span.track-inner
|
||||
span.track-icon
|
||||
svg.icon.icon-watch
|
||||
use(xlink:href="#icon-watch")
|
||||
tg-svg(svg-icon="icon-watch")
|
||||
span(translate="COMMON.WATCH_BUTTON.WATCHERS")
|
||||
+counter
|
||||
|
|
|
@ -3,8 +3,7 @@
|
|||
href="#"
|
||||
ng-click="vm.open()"
|
||||
) {{vm.currentText()}}
|
||||
svg.icon.icon-arrow-down
|
||||
use(xlink:href="#icon-arrow-down")
|
||||
tg-svg(svg-icon="icon-arrow-down")
|
||||
|
||||
ul.filter-list(ng-if="vm.is_open")
|
||||
li(ng-click="vm.orderBy('week')") {{ 'DISCOVER.FILTERS.WEEK' | translate }}
|
||||
|
|
|
@ -18,12 +18,11 @@ div.discover-header
|
|||
placeholder="{{ 'DISCOVER.SEARCH.INPUT_PLACEHOLDER' | translate }}"
|
||||
ng-model="vm.q"
|
||||
)
|
||||
svg.search-button.icon.icon-search(
|
||||
tg-svg.search-button(
|
||||
ng-click="vm.submitFilter()"
|
||||
href="#"
|
||||
title="{{ 'DISCOVER.SEARCH.ACTION_TITLE' | translate }}"
|
||||
svg-icon="icon-search"
|
||||
svg-title-translate="DISCOVER.SEARCH.ACTION_TITLE"
|
||||
)
|
||||
use(xlink:href="#icon-search")
|
||||
|
||||
fieldset.searchbox-filters(ng-if="vm.filter")
|
||||
input(
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
.discover-results-header
|
||||
.discover-results-header-inner
|
||||
.title
|
||||
svg.icon.icon-search
|
||||
use(xlink:href="#icon-search")
|
||||
tg-svg(svg-icon="icon-search")
|
||||
h2 {{ 'DISCOVER.SEARCH.RESULTS' | translate }}
|
||||
|
||||
.filter-discover-search(ng-mouseleave="vm.toggleClose()")
|
||||
|
@ -11,16 +10,14 @@
|
|||
ng-click="vm.openLike()"
|
||||
ng-class="{active: vm.like_is_open}"
|
||||
)
|
||||
svg.icon.icon-like
|
||||
use(xlink:href="#icon-like")
|
||||
tg-svg(svg-icon="icon-like")
|
||||
span {{ 'DISCOVER.MOST_LIKED' | translate }}
|
||||
a.discover-search-filter(
|
||||
href="#"
|
||||
ng-click="vm.openActivity()"
|
||||
ng-class="{active: vm.activity_is_open}"
|
||||
)
|
||||
svg.icon.icon-activity
|
||||
use(xlink:href="#icon-activity")
|
||||
tg-svg(svg-icon="icon-activity")
|
||||
span {{ 'DISCOVER.MOST_ACTIVE' | translate }}
|
||||
|
||||
.discover-search-subfilter.most-liked-subfilter(ng-if="vm.like_is_open")
|
||||
|
|
|
@ -26,31 +26,28 @@
|
|||
tg-nav="project:project=project.get('slug')"
|
||||
title="{{::project.get('name')}}"
|
||||
) {{::project.get('name')}}
|
||||
svg.look-for-people.icon.icon-recruit(
|
||||
tg-svg.look-for-people(
|
||||
ng-if="project.get('is_looking_for_people')"
|
||||
svg-icon="icon-recruit"
|
||||
svg-title="{{ ::project.get('looking_for_people_note') }}"
|
||||
)
|
||||
use(xlink:href="#icon-recruit")
|
||||
title="{{ ::project.get('looking_for_people_note') }}"
|
||||
p.project-card-description {{ ::project.get('description') | limitTo:100 }}{{ ::project.get('description').length < 100 ? '' : '...'}}
|
||||
.project-card-statistics
|
||||
span.statistic(
|
||||
ng-class="{'active': project.get('is_fan')}"
|
||||
title="{{ 'PROJECT.FANS_COUNTER_TITLE'|translate:{total:project.get('total_fans')||0}:'messageformat' }}"
|
||||
)
|
||||
svg.icon.icon-like
|
||||
use(xlink:href="#icon-like")
|
||||
tg-svg(svg-icon="icon-like")
|
||||
span {{::project.get('total_fans')}}
|
||||
span.statistic(
|
||||
ng-class="{'active': project.get('is_watcher')}"
|
||||
title="{{ 'PROJECT.WATCHERS_COUNTER_TITLE'|translate:{total:project.get('total_watchers')||0}:'messageformat' }}"
|
||||
)
|
||||
svg.icon.icon-watch
|
||||
use(xlink:href="#icon-watch")
|
||||
tg-svg(svg-icon="icon-watch")
|
||||
span {{::project.get('total_watchers')}}
|
||||
span.statistic(
|
||||
ng-class="{'active': project.get('i_am_member')}"
|
||||
title="{{ 'PROJECT.MEMBERS_COUNTER_TITLE'|translate:{total:project.get('members').size||0}:'messageformat' }}"
|
||||
)
|
||||
svg.icon.icon-team
|
||||
use(xlink:href="#icon-team")
|
||||
tg-svg(svg-icon="icon-team")
|
||||
span.statistics-num {{ ::project.get('members').size }}
|
||||
|
|
|
@ -24,30 +24,29 @@
|
|||
tg-nav="project:project=project.get('slug')"
|
||||
title="{{::project.get('name')}}"
|
||||
) {{::project.get('name')}}
|
||||
svg.look-for-people.icon.icon-recruit(ng-if="project.get('is_looking_for_people')")
|
||||
use(xlink:href="#icon-recruit")
|
||||
title="{{ ::project.get('looking_for_people_note') }}"
|
||||
tg-svg.look-for-people(
|
||||
ng-if="project.get('is_looking_for_people')"
|
||||
svg-icon="icon-recruit"
|
||||
svg-title="{{ ::project.get('looking_for_people_note') }}"
|
||||
)
|
||||
.project-statistics
|
||||
span.statistic(
|
||||
ng-class="{'active': project.get('is_fan')}"
|
||||
title="{{ 'PROJECT.FANS_COUNTER_TITLE'|translate:{total:project.get('total_fans')||0}:'messageformat' }}"
|
||||
)
|
||||
svg.icon.icon-like
|
||||
use(xlink:href="#icon-like")
|
||||
tg-svg(svg-icon="icon-like")
|
||||
span {{::project.get('total_fans')}}
|
||||
span.statistic(
|
||||
ng-class="{'active': project.get('is_watcher')}"
|
||||
title="{{ 'PROJECT.WATCHERS_COUNTER_TITLE'|translate:{total:project.get('total_watchers')||0}:'messageformat' }}"
|
||||
)
|
||||
svg.icon.icon-watch
|
||||
use(xlink:href="#icon-watch")
|
||||
tg-svg(svg-icon="icon-watch")
|
||||
span {{::project.get('total_watchers')}}
|
||||
span.statistic(
|
||||
ng-class="{'active': project.get('i_am_member')}"
|
||||
title="{{ 'PROJECT.MEMBERS_COUNTER_TITLE'|translate:{total:project.get('members').size||0}:'messageformat' }}"
|
||||
)
|
||||
svg.icon.icon-team
|
||||
use(xlink:href="#icon-team")
|
||||
tg-svg(svg-icon="icon-team")
|
||||
span.statistics-num {{ ::project.get('members').size }}
|
||||
p.project-description {{ ::project.get('description') | limitTo:150 }}{{ ::project.get('description').length < 150 ? '' : '...'}}
|
||||
|
||||
|
|
|
@ -172,11 +172,6 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
.look-for-people {
|
||||
@include svg-size();
|
||||
fill: $gray-light;
|
||||
margin-left: .5rem;
|
||||
}
|
||||
.project-description {
|
||||
@extend %small;
|
||||
color: $gray;
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
.most-active(ng-if="vm.highlighted.size")
|
||||
.header
|
||||
.title-wrapper
|
||||
svg.icon.icon-activity
|
||||
use(xlink:href="#icon-activity")
|
||||
tg-svg(svg-icon="icon-activity")
|
||||
h1.title {{ 'DISCOVER.MOST_ACTIVE' | translate }}
|
||||
tg-discover-home-order-by(on-change="vm.orderBy(orderBy)", order-by="vm.currentOrderBy")
|
||||
|
||||
|
@ -15,6 +14,5 @@
|
|||
.empty-highlighted-project(
|
||||
ng-if="!vm.highlighted.size"
|
||||
)
|
||||
svg.icon.icon-activity
|
||||
use(xlink:href="#icon-activity")
|
||||
tg-svg(svg-icon="icon-activity")
|
||||
span {{ 'DISCOVER.MOST_ACTIVE_EMPTY' | translate }}
|
||||
|
|
|
@ -1,10 +1,12 @@
|
|||
.most-liked(ng-if="vm.highlighted.size")
|
||||
.header
|
||||
.title-wrapper
|
||||
svg.icon.icon-like
|
||||
use(xlink:href="#icon-like")
|
||||
tg-svg(svg-icon="icon-like")
|
||||
h1.title {{ 'DISCOVER.MOST_LIKED' | translate }}
|
||||
tg-discover-home-order-by(on-change="vm.orderBy(orderBy)", order-by="vm.currentOrderBy")
|
||||
tg-discover-home-order-by(
|
||||
on-change="vm.orderBy(orderBy)"
|
||||
order-by="vm.currentOrderBy"
|
||||
)
|
||||
tg-highlighted(
|
||||
loading="vm.loading",
|
||||
highlighted="vm.highlighted"
|
||||
|
@ -14,6 +16,5 @@
|
|||
.empty-highlighted-project(
|
||||
ng-if="!vm.highlighted.size"
|
||||
)
|
||||
svg.icon.icon-like
|
||||
use(xlink:href="#icon-like")
|
||||
tg-svg(svg-icon="icon-like")
|
||||
span {{ 'DISCOVER.MOST_LIKED_EMPTY' | translate }}
|
||||
|
|
|
@ -43,9 +43,11 @@ div(tg-discover-search)
|
|||
tg-nav="project:project=project.get('slug')"
|
||||
title="{{ ::project.get('name') }}"
|
||||
) {{project.get('name')}}
|
||||
svg.look-for-people.icon.icon-recruit(ng-if="project.get('is_looking_for_people')")
|
||||
use(xlink:href="#icon-recruit")
|
||||
title="{{ ::project.get('looking_for_people_note') }}"
|
||||
tg-svg.look-for-people(
|
||||
ng-if="project.get('is_looking_for_people')"
|
||||
svg-icon="icon-recruit"
|
||||
svg-title="{{ ::project.get('looking_for_people_note') }}"
|
||||
)
|
||||
p {{ ::project.get('description') | limitTo:300 }}
|
||||
span(ng-if="::project.get('description').length > 300") ...
|
||||
.list-itemtype-project-right.project-statistics
|
||||
|
@ -53,22 +55,19 @@ div(tg-discover-search)
|
|||
ng-class="{'active': project.get('is_fan')}"
|
||||
title="{{ 'PROJECT.FANS_COUNTER_TITLE'|translate:{total:project.get('total_fans')||0}:'messageformat' }}"
|
||||
)
|
||||
svg.icon.icon-like
|
||||
use(xlink:href="#icon-like")
|
||||
tg-svg(svg-icon="icon-like")
|
||||
span {{::project.get('total_fans')}}
|
||||
span.statistic(
|
||||
ng-class="{'active': project.get('is_watcher')}"
|
||||
title="{{ 'PROJECT.WATCHERS_COUNTER_TITLE'|translate:{total:project.get('total_watchers')||0}:'messageformat' }}"
|
||||
)
|
||||
svg.icon.icon-watch
|
||||
use(xlink:href="#icon-watch")
|
||||
tg-svg(svg-icon="icon-watch")
|
||||
span {{::project.get('total_watchers')}}
|
||||
span.statistic(
|
||||
ng-class="{'active': project.get('i_am_member')}"
|
||||
title="{{ 'PROJECT.MEMBERS_COUNTER_TITLE'|translate:{total:project.get('members').size||0}:'messageformat' }}"
|
||||
)
|
||||
svg.icon.icon-team
|
||||
use(xlink:href="#icon-team")
|
||||
tg-svg(svg-icon="icon-team")
|
||||
span.statistics-num {{ ::project.get('members').size }}
|
||||
|
||||
a.button-green.more-results(
|
||||
|
|
|
@ -71,10 +71,6 @@
|
|||
flex: 1;
|
||||
vertical-align: middle;
|
||||
}
|
||||
.look-for-people {
|
||||
fill: $gray-light;
|
||||
margin-left: .5rem;
|
||||
}
|
||||
.project-statistics {
|
||||
display: flex;
|
||||
flex-basis: 300px;
|
||||
|
|
|
@ -16,18 +16,21 @@ a.list-itemtype-ticket(
|
|||
div.list-itemtype-ticket-data
|
||||
p
|
||||
span.ticket-project {{ ::vm.duty.get('projectName')}}
|
||||
|
||||
|
||||
span.ticket-type {{ ::vm.getDutyType() }}
|
||||
span.ticket-status(ng-style="{'color': vm.duty.get('status_extra_info').get('color')}") {{ ::vm.duty.get('status_extra_info').get('name') }}
|
||||
svg.icon.icon-blocked-project(ng-if="vm.duty.get('blockedProject')")
|
||||
use(xlink:href="#icon-blocked-project")
|
||||
title(translate="PROJECT.BLOCKED_PROJECT.BLOCKED")
|
||||
|
||||
tg-svg(
|
||||
ng-if="vm.duty.get('blockedProject')",
|
||||
svg-icon="icon-blocked-project",
|
||||
svg-title-translate="PROJECT.BLOCKED_PROJECT.BLOCKED"
|
||||
)
|
||||
|
||||
h2
|
||||
span.ticket-id(tg-bo-ref="duty.get('ref')")
|
||||
span.ticket-title
|
||||
span.ticket-title
|
||||
span.ticket-blocked(
|
||||
ng-if="::vm.duty.get('is_blocked')"
|
||||
title="{{::vm.duty.get('blocked_note')}}"
|
||||
) {{ 'COMMON.BLOCKED' | translate }}
|
||||
) {{ 'COMMON.BLOCKED' | translate }}
|
||||
span {{ ::duty.get('subject') }}
|
||||
|
|
|
@ -28,10 +28,25 @@ section.home-project-list(ng-if="vm.projects.size")
|
|||
tg-nav="project:project=project.get('slug')"
|
||||
title="{{::project.get('name')}}"
|
||||
) {{::project.get('name')}}
|
||||
svg.icon.icon-blocked-project(ng-if="project.get('blocked_code')")
|
||||
use(xlink:href="#icon-blocked-project")
|
||||
title(translate="PROJECT.BLOCKED_PROJECT.BLOCKED")
|
||||
|
||||
|
||||
tg-svg.look-for-people(
|
||||
ng-if="project.get('is_looking_for_people')"
|
||||
svg-icon="icon-recruit"
|
||||
svg-title="{{ ::project.get('looking_for_people_note') }}"
|
||||
)
|
||||
|
||||
tg-svg.owner-badge(
|
||||
ng-if="project.get('i_am_owner')"
|
||||
svg-icon="icon-badge"
|
||||
svg-title="COMMON.OWNER"
|
||||
)
|
||||
|
||||
tg-svg(
|
||||
ng-if="project.get('blocked_code')"
|
||||
svg-icon="icon-blocked-project"
|
||||
svg-title-translate="PROJECT.BLOCKED_PROJECT.BLOCKED"
|
||||
)
|
||||
|
||||
p.project-card-description {{::project.get('description')| limitTo:100 }}
|
||||
span(ng-if="::project.get('description').length > 100") ...
|
||||
.project-card-statistics
|
||||
|
@ -39,29 +54,25 @@ section.home-project-list(ng-if="vm.projects.size")
|
|||
ng-class="{'active': project.get('is_fan')}"
|
||||
title="{{ 'PROJECT.FANS_COUNTER_TITLE'|translate:{total:project.get('total_fans')||0}:'messageformat' }}"
|
||||
)
|
||||
svg.icon.icon-like
|
||||
use(xlink:href="#icon-like")
|
||||
tg-svg(svg-icon="icon-like")
|
||||
span {{::project.get('total_fans')}}
|
||||
span.statistic(
|
||||
ng-class="{'active': project.get('is_watcher')}"
|
||||
title="{{ 'PROJECT.WATCHERS_COUNTER_TITLE'|translate:{total:project.get('total_watchers')||0}:'messageformat' }}"
|
||||
)
|
||||
svg.icon.icon-watch
|
||||
use(xlink:href="#icon-watch")
|
||||
tg-svg(svg-icon="icon-watch")
|
||||
span {{::project.get('total_watchers')}}
|
||||
span.statistic(
|
||||
ng-class="{'active': project.get('i_am_member')}"
|
||||
title="{{ 'PROJECT.MEMBERS_COUNTER_TITLE'|translate:{total:project.get('members').size||0}:'messageformat' }}"
|
||||
)
|
||||
svg.icon.icon-team
|
||||
use(xlink:href="#icon-team")
|
||||
tg-svg(svg-icon="icon-team")
|
||||
span.statistics-num {{ ::project.get('members').size }}
|
||||
span.statistic(
|
||||
ng-if="::project.get('is_private')"
|
||||
title="{{ 'PROJECT.PRIVATE' | translate }}"
|
||||
)
|
||||
svg.icon.icon-lock
|
||||
use(xlink:href="#icon-lock")
|
||||
tg-svg(svg-icon="icon-lock")
|
||||
|
||||
a.see-more-projects-btn.button-gray(
|
||||
href="#",
|
||||
|
@ -72,8 +83,7 @@ section.home-project-list(ng-if="vm.projects.size")
|
|||
)
|
||||
|
||||
section.projects-empty(ng-if="vm.projects != undefined && vm.projects.size === 0")
|
||||
svg.icon.icon-project
|
||||
use(xlink:href="#icon-project")
|
||||
tg-svg(svg-icon="icon-project")
|
||||
p(translate="HOME.EMPTY_PROJECT_LIST")
|
||||
a.create-project-button.button-green(href="#", ng-click="vm.newProject()",
|
||||
title="{{'PROJECT.NAVIGATION.TITLE_CREATE_PROJECT' | translate}}",
|
||||
|
|
|
@ -1,6 +1,9 @@
|
|||
a(href="", title="Projects", tg-nav="projects")
|
||||
svg.icon.icon-project
|
||||
use(xlink:href="#icon-project")
|
||||
a(
|
||||
href=""
|
||||
title="Projects"
|
||||
tg-nav="projects"
|
||||
)
|
||||
tg-svg(svg-icon="icon-project")
|
||||
|
||||
div.navbar-dropdown.dropdown-project-list
|
||||
ul
|
||||
|
@ -11,9 +14,11 @@ div.navbar-dropdown.dropdown-project-list
|
|||
ng-class="{'blocked-project': project.get('blocked_code')}"
|
||||
)
|
||||
span {{::project.get("name")}}
|
||||
svg.icon.icon-blocked-project(ng-if="project.get('blocked_code')")
|
||||
use(xlink:href="#icon-blocked-project")
|
||||
title(translate="PROJECT.BLOCKED_PROJECT.BLOCKED")
|
||||
tg-svg(
|
||||
svg-icon="icon-blocked-project"
|
||||
ng-if="project.get('blocked_code')"
|
||||
svg-title="PROJECT.BLOCKED_PROJECT.BLOCKED"
|
||||
)
|
||||
|
||||
a.see-more-projects-btn.button-gray(
|
||||
href="#",
|
||||
|
@ -33,6 +38,5 @@ div.navbar-dropdown.dropdown-project-list
|
|||
href=""
|
||||
title="{{'PROJECT.NAVIGATION.TITLE_IMPORT_PROJECT' | translate}}"
|
||||
)
|
||||
svg.icon.icon-upload
|
||||
use(xlink:href="#icon-upload")
|
||||
input.import-file.hidden(type="file")
|
||||
tg-svg(svg-icon="icon-upload")
|
||||
input.import-file.hidden(type="file")
|
||||
|
|
|
@ -30,21 +30,19 @@ nav.navbar(ng-if="vm.isEnabledHeader")
|
|||
)
|
||||
|
||||
div.nav-right(ng-if="vm.isAuthenticated")
|
||||
a(tg-nav="home",
|
||||
ng-class="{active: vm.active}",
|
||||
title="{{'PROJECT.NAVIGATION.DASHBOARD_TITLE' | translate}}")
|
||||
|
||||
svg.icon.icon-dashboard
|
||||
use(xlink:href="#icon-dashboard")
|
||||
a(
|
||||
tg-nav="home"
|
||||
ng-class="{active: vm.active}"
|
||||
title="{{'PROJECT.NAVIGATION.DASHBOARD_TITLE' | translate}}"
|
||||
)
|
||||
tg-svg(svg-icon="icon-dashboard")
|
||||
|
||||
a(
|
||||
href="#",
|
||||
tg-nav="discover",
|
||||
title="{{'PROJECT.NAVIGATION.DISCOVER_TITLE' | translate}}",
|
||||
)
|
||||
svg.icon.icon-discover
|
||||
use(xlink:href="#icon-discover")
|
||||
tg-svg(svg-icon="icon-discover")
|
||||
|
||||
div.topnav-dropdown-wrapper(ng-show="vm.projects.size", tg-dropdown-project-list)
|
||||
//- div.topnav-dropdown-wrapper(tg-dropdown-organization-list)
|
||||
div.topnav-dropdown-wrapper(tg-dropdown-user)
|
||||
|
|
|
@ -4,8 +4,7 @@ section.profile-contacts
|
|||
img(src="/#{v}/svg/spinner-circle.svg", alt="Loading...")
|
||||
|
||||
div.empty-tab(ng-if="vm.contacts && !vm.contacts.size")
|
||||
svg.icon.icon-unwatch
|
||||
use(xlink:href="#icon-unwatch")
|
||||
tg-svg(svg-icon="icon-unwatch")
|
||||
|
||||
div(ng-if="!vm.isCurrentUser")
|
||||
p(translate="USER.PROFILE.CONTACTS_EMPTY", translate-values="{username: vm.user.get('full_name_display')}")
|
||||
|
|
|
@ -18,12 +18,18 @@
|
|||
tg-nav="project:project=vm.item.get('slug')"
|
||||
title="{{ ::vm.item.get('name') }}"
|
||||
) {{ ::vm.item.get('name') }}
|
||||
svg.icon.icon-lock.private(ng-if="::vm.item.get('project_is_private')")
|
||||
use(xlink:href="#icon-lock")
|
||||
title {{'PROJECT.PRIVATE' | translate}}"
|
||||
svg.icon.icon-blocked-project(ng-if="vm.item.get('project_blocked_code')")
|
||||
use(xlink:href="#icon-blocked-project")
|
||||
title(translate="PROJECT.BLOCKED_PROJECT.BLOCKED")
|
||||
|
||||
tg-svg(
|
||||
ng-if="::vm.item.get('is_private')"
|
||||
svg-icon="icon-lock"
|
||||
svg-title-translate="PROJECT.PRIVATE"
|
||||
)
|
||||
|
||||
tg-svg(
|
||||
ng-if="vm.item.get('blocked_code')"
|
||||
svg-icon="icon-blocked-project"
|
||||
svg-title-translate="PROJECT.BLOCKED_PROJECT.BLOCKED"
|
||||
)
|
||||
p.list-itemtype-project-description {{ ::vm.item.get('description') }}
|
||||
|
||||
.list-itemtype-track
|
||||
|
@ -31,14 +37,12 @@
|
|||
ng-class="{'active': vm.item.get('is_fan')}"
|
||||
title="{{ 'PROJECT.LIKE_BUTTON.COUNTER_TITLE'|translate:{total:vm.item.get(\"total_fans\")||0}:'messageformat' }}"
|
||||
)
|
||||
svg.icon.icon-like
|
||||
use(xlink:href="#icon-like")
|
||||
tg-svg(svg-icon="icon-like")
|
||||
span {{ ::vm.item.get('total_fans') }}
|
||||
|
||||
span.list-itemtype-track-watchers(
|
||||
ng-class="{'active': vm.item.get('is_watcher')}"
|
||||
title="{{ 'PROJECT.WATCH_BUTTON.COUNTER_TITLE'|translate:{total:vm.item.get(\"total_watchers\")||0}:'messageformat' }}"
|
||||
)
|
||||
svg.icon.icon-watch
|
||||
use(xlink:href="#icon-watch")
|
||||
tg-svg(svg-icon="icon-watch")
|
||||
span {{ ::vm.item.get('total_watchers') }}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
div.list-itemtype-ticket(ng-class="{'blocked-project': vm.item.get('project_blocked_code')}")
|
||||
.list-itemtype-ticket(ng-class="{'blocked-project': vm.item.get('project_blocked_code')}")
|
||||
a.list-itemtype-avatar(
|
||||
href=""
|
||||
ng-if="::vm.item.get('assigned_to')"
|
||||
|
@ -20,7 +20,7 @@ div.list-itemtype-ticket(ng-class="{'blocked-project': vm.item.get('project_bloc
|
|||
alt="{{ 'COMMON.ASSIGNED_TO.NOT_ASSIGNED'|translate }}"
|
||||
)
|
||||
|
||||
div.list-itemtype-ticket-data
|
||||
.list-itemtype-ticket-data
|
||||
p
|
||||
span.ticket-project
|
||||
| {{:: vm.item.get('project_name') }}
|
||||
|
@ -36,11 +36,12 @@ div.list-itemtype-ticket(ng-class="{'blocked-project': vm.item.get('project_bloc
|
|||
ng-if="::vm.item.get('type') === 'issue'"
|
||||
translate="COMMON.ISSUE"
|
||||
)
|
||||
span.ticket-status(ng-style="::{'color': vm.item.get('status_color')}")
|
||||
| {{:: vm.item.get('status') }}
|
||||
svg.icon.icon-blocked-project(ng-if="vm.item.get('project_blocked_code')")
|
||||
use(xlink:href="#icon-blocked-project")
|
||||
title(translate="PROJECT.BLOCKED_PROJECT.BLOCKED")
|
||||
span.ticket-status(ng-style="::{'color': vm.item.get('status_color')}") {{:: vm.item.get('status') }}
|
||||
tg-svg(
|
||||
ng-if="vm.item.get('project_blocked_code')"
|
||||
svg-icon="icon-blocked-project"
|
||||
svgTitleTranslate: "PROJECT.BLOCKED_PROJECT.BLOCKED"
|
||||
)
|
||||
h2
|
||||
span.ticket-id(tg-bo-ref="vm.item.get('ref')")
|
||||
a.ticket-title(
|
||||
|
@ -67,14 +68,12 @@ div.list-itemtype-ticket(ng-class="{'blocked-project': vm.item.get('project_bloc
|
|||
ng-class="{'active': vm.item.get('is_voter')}",
|
||||
title="{{ 'COMMON.VOTE_BUTTON.COUNTER_TITLE'|translate:{total:vm.item.get(\"total_voters\")||0}:'messageformat' }}"
|
||||
)
|
||||
svg.icon.icon-upvote
|
||||
use(xlink:href="#icon-upvote")
|
||||
tg-svg(svg-icon="icon-upvote")
|
||||
span {{ ::vm.item.get('total_voters') }}
|
||||
|
||||
span.list-itemtype-track-watchers(
|
||||
ng-class="{'active': vm.item.get('is_watcher')}"
|
||||
title="{{ 'COMMON.WATCH_BUTTON.COUNTER_TITLE'|translate:{total:vm.item.get(\"total_watchers\")||0}:'messageformat' }}"
|
||||
)
|
||||
svg.icon.icon-watch
|
||||
use(xlink:href="#icon-watch")
|
||||
tg-svg(svg-icon="icon-watch")
|
||||
span {{ ::vm.item.get('total_watchers') }}
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
section.profile-favs
|
||||
div.profile-filter
|
||||
div.searchbox(ng-if="::vm.enableFilterByTextQuery")
|
||||
svg.icon.icon-search
|
||||
use(xlink:href="#icon-search")
|
||||
tg-svg(svg-icon="icon-search")
|
||||
input(
|
||||
type="text"
|
||||
ng-model="vm.q"
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
h4
|
||||
svg.icon.icon-question
|
||||
use(xlink:href="#icon-question")
|
||||
tg-svg(svg-icon="icon-question")
|
||||
span(translate="HINTS.SECTION_NAME")
|
||||
|
||||
p {{::vm.hint.title}}
|
||||
|
|
|
@ -4,8 +4,7 @@ section.profile-projects
|
|||
img(src="/#{v}/svg/spinner-circle.svg", alt="Loading...")
|
||||
|
||||
.empty-tab(ng-if="vm.projects && !vm.projects.size")
|
||||
svg.icon.icon-unwatch
|
||||
use(xlink:href="#icon-unwatch")
|
||||
tg-svg(svg-icon="icon-unwatch")
|
||||
|
||||
p(
|
||||
translate="USER.PROFILE.PROJECTS_EMPTY"
|
||||
|
@ -33,9 +32,12 @@ section.profile-projects
|
|||
tg-nav="project:project=project.get('slug')"
|
||||
title="{{ ::project.get('name') }}"
|
||||
) {{::project.get('name')}}
|
||||
svg.icon.icon-blocked-project(ng-if="project.get('blocked_code')")
|
||||
use(xlink:href="#icon-blocked-project")
|
||||
title(translate="PROJECT.BLOCKED_PROJECT.BLOCKED")
|
||||
|
||||
tg-svg(
|
||||
ng-if="project.get('blocked_code')",
|
||||
svg-icon="icon-blocked-project"
|
||||
svg-title-translate="PROJECT.BLOCKED_PROJECT.BLOCKED"
|
||||
)
|
||||
p.project-description {{ ::project.get('description') | limitTo:300 }}
|
||||
|
||||
.list-itemtype-project-right
|
||||
|
@ -45,16 +47,14 @@ section.profile-projects
|
|||
ng-class="{'active': project.get('is_fan')}"
|
||||
title="{{ 'PROJECT.LIKE_BUTTON.COUNTER_TITLE'|translate:{total:project.get(\"total_fans\")||0}:'messageformat' }}"
|
||||
)
|
||||
svg.icon.icon-like
|
||||
use(xlink:href="#icon-like")
|
||||
tg-svg(svg-icon="icon-like")
|
||||
span {{ ::project.get('total_fans') }}
|
||||
|
||||
span.list-itemtype-track-watchers(
|
||||
ng-class="{'active': project.get('is_watcher')}"
|
||||
title="{{ 'PROJECT.WATCH_BUTTON.COUNTER_TITLE'|translate:{total:project.get(\"total_watchers\")||0}:'messageformat' }}"
|
||||
)
|
||||
svg.icon.icon-watch
|
||||
use(xlink:href="#icon-watch")
|
||||
tg-svg(svg-icon="icon-watch")
|
||||
span {{ ::project.get('total_watchers') }}
|
||||
|
||||
.list-itemtype-project-members
|
||||
|
|
|
@ -28,7 +28,6 @@ ProfileTabDirective = () ->
|
|||
scope.tab.title = title
|
||||
|
||||
scope.tab.icon = attrs.tabIcon
|
||||
scope.tab.iconName = '#' + attrs.tabIcon
|
||||
scope.tab.active = !!attrs.tabActive
|
||||
|
||||
if scope.$eval(attrs.tabDisabled) != true
|
||||
|
|
|
@ -7,8 +7,7 @@ div
|
|||
ng-click="vm.toggleTab(tab)"
|
||||
ng-class="{active: tab.active}"
|
||||
)
|
||||
svg.icon(ng-class="::tab.icon")
|
||||
use(xlink:href="{{::tab.iconName}}")
|
||||
tg-svg(svg-icon="{{::tab.icon}}")
|
||||
span {{::tab.name}}
|
||||
|
||||
ng-transclude
|
||||
|
|
|
@ -8,8 +8,7 @@ a.track-button.like-button.like-container(
|
|||
)
|
||||
span.track-inner
|
||||
span.track-icon
|
||||
svg.icon.icon-like
|
||||
use(xlink:href="#icon-like")
|
||||
tg-svg(svg-icon="icon-like")
|
||||
span(
|
||||
ng-if="!vm.project.get('is_fan')"
|
||||
translate="PROJECT.LIKE_BUTTON.LIKE"
|
||||
|
|
|
@ -6,12 +6,10 @@ a.track-button.watch-button.watch-container(
|
|||
)
|
||||
span.track-inner
|
||||
span.track-icon
|
||||
svg.icon.icon-watch
|
||||
use(xlink:href="#icon-watch")
|
||||
tg-svg(svg-icon="icon-watch")
|
||||
span(ng-if="!vm.project.get('is_watcher')", translate="PROJECT.WATCH_BUTTON.WATCH")
|
||||
span(ng-if="vm.project.get('is_watcher')", translate="PROJECT.WATCH_BUTTON.WATCHING")
|
||||
svg.icon.icon-arrow-down
|
||||
use(xlink:href="#icon-arrow-down")
|
||||
tg-svg(svg-icon="icon-arrow-down")
|
||||
|
||||
span.track-button-counter(
|
||||
title="{{ 'PROJECT.WATCH_BUTTON.COUNTER_TITLE'|translate:{total:vm.project.get(\"total_watchers\")||0}:'messageformat' }}",
|
||||
|
@ -37,8 +35,7 @@ ul.watch-options(
|
|||
)
|
||||
span(translate="PROJECT.WATCH_BUTTON.OPTIONS.NOTIFY_ALL")
|
||||
span.watch-check(ng-if="vm.project.get('is_watcher') && vm.project.get('notify_level') == 2")
|
||||
svg.icon.icon-check-empty
|
||||
use(xlink:href="#icon-check-empty")
|
||||
tg-svg(svg-icon="icon-check-empty")
|
||||
li
|
||||
a(
|
||||
href="",
|
||||
|
@ -48,8 +45,7 @@ ul.watch-options(
|
|||
)
|
||||
span(translate="PROJECT.WATCH_BUTTON.OPTIONS.NOTIFY_INVOLVED")
|
||||
span.watch-check(ng-if="vm.project.get('is_watcher') && vm.project.get('notify_level') == 1")
|
||||
svg.icon.icon-check-empty
|
||||
use(xlink:href="#icon-check-empty")
|
||||
tg-svg(svg-icon="icon-check-empty")
|
||||
|
||||
li(ng-if="vm.project.get('is_watcher')")
|
||||
a(
|
||||
|
|
|
@ -13,8 +13,7 @@
|
|||
href=""
|
||||
title="{{'PROJECT.NAVIGATION.TITLE_IMPORT_PROJECT' | translate}}"
|
||||
)
|
||||
svg.icon.icon-upload
|
||||
use(xlink:href="#icon-upload")
|
||||
tg-svg(svg-icon="icon-upload")
|
||||
input.import-file.hidden(type="file")
|
||||
|
||||
section.project-list-section
|
||||
|
@ -44,23 +43,26 @@
|
|||
tg-nav="project:project=project.get('slug')"
|
||||
title="{{ ::project.get('name') }}"
|
||||
) {{project.get('name')}}
|
||||
svg.icon.icon-lock.private(ng-if="project.get('is_private')")
|
||||
use(xlink:href="#icon-lock")
|
||||
title {{'PROJECT.PRIVATE' | translate}}"
|
||||
|
||||
svg.icon.icon-badge(ng-if="project.get('i_am_owner')")
|
||||
use(xlink:href="#icon-badge")
|
||||
title(translate="COMMON.OWNER")
|
||||
svg.icon.icon-blocked-project(ng-if="project.get('blocked_code')")
|
||||
use(xlink:href="#icon-blocked-project")
|
||||
title(translate="PROJECT.BLOCKED_PROJECT.BLOCKED")
|
||||
|
||||
|
||||
tg-svg(
|
||||
ng-if="project.get('is_private')",
|
||||
svg-icon="icon-lock",
|
||||
svg-title-translate="PROJECT.PRIVATE"
|
||||
)
|
||||
tg-svg(
|
||||
ng-if="project.get('i_am_owner')",
|
||||
svg-icon="icon-badge",
|
||||
svg-title-translate="COMMON.OWNER"
|
||||
)
|
||||
tg-svg(
|
||||
ng-if="project.get('blocked_code')",
|
||||
svg-icon="icon-blocked-project",
|
||||
svg-title-translate="PROJECT.BLOCKED_PROJECT.BLOCKED"
|
||||
)
|
||||
|
||||
p.project-description {{ ::project.get('description') | limitTo:300 }}
|
||||
span(ng-if="::project.get('description').length > 300") ...
|
||||
|
||||
svg.drag.icon.icon-drag
|
||||
use(xlink:href="#icon-drag")
|
||||
tg-svg.drag(svg-icon="icon-drag")
|
||||
|
||||
aside.help-area
|
||||
p(translate="PROJECT.HELP")
|
||||
|
|
|
@ -87,11 +87,13 @@
|
|||
}
|
||||
.drag {
|
||||
align-self: center;
|
||||
fill: $gray-light;
|
||||
height: 1.1rem;
|
||||
margin-right: .5rem;
|
||||
opacity: 0;
|
||||
transition: opacity .2s;
|
||||
width: 1.1rem;
|
||||
svg {
|
||||
fill: $gray-light;
|
||||
height: 1.1rem;
|
||||
margin-right: .5rem;
|
||||
transition: opacity .2s;
|
||||
width: 1.1rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,9 +6,10 @@
|
|||
tg-project-logo-small-src="vm.project"
|
||||
alt="{{::vm.project.get('name')}}"
|
||||
)
|
||||
svg.icon.icon-blocked-project
|
||||
use(xlink:href="#icon-blocked-project")
|
||||
title(translate="PROJECT.BLOCKED_PROJECT.BLOCKED")
|
||||
tg-svg(
|
||||
svg-icon="icon-blocked-project"
|
||||
svgTitleTranslate: "PROJECT.BLOCKED_PROJECT.BLOCKED"
|
||||
)
|
||||
span.project-title {{::vm.project.get("name")}}
|
||||
.blocked-project-message
|
||||
h1.project-block-title {{'PROJECT.BLOCKED_PROJECT.BLOCKED' | translate}}
|
||||
|
|
|
@ -16,10 +16,11 @@ div.wrapper
|
|||
.intro-title
|
||||
h1
|
||||
span.project-name {{::vm.project.get("name")}}
|
||||
|
||||
svg.icon.icon-lock.private(ng-if="::vm.project.get('is_private')")
|
||||
use(xlink:href="#icon-lock")
|
||||
title {{'PROJECT.PRIVATE' | translate}}"
|
||||
tg-svg(
|
||||
ng-if="::vm.project.get('is_private')"
|
||||
svg-icon="icon-lock"
|
||||
svgTitleTranslate: "PROJECT.PRIVATE"
|
||||
)
|
||||
|
||||
div.track-buttons-container(ng-if="vm.user")
|
||||
tg-like-project-button(project="vm.project")
|
||||
|
@ -30,15 +31,13 @@ div.wrapper
|
|||
span.list-itemtype-track-likers(
|
||||
title="{{ 'PROJECT.LIKE_BUTTON.COUNTER_TITLE'|translate:{total:vm.project.get(\"total_fans\")||0}:'messageformat' }}"
|
||||
)
|
||||
svg.icon.icon-like
|
||||
use(xlink:href="#icon-like")
|
||||
tg-svg(svg-icon="icon-like")
|
||||
span {{ ::vm.project.get('total_fans') }}
|
||||
|
||||
span.list-itemtype-track-watchers(
|
||||
title="{{ 'PROJECT.WATCH_BUTTON.COUNTER_TITLE'|translate:{total:vm.project.get(\"total_watchers\")||0}:'messageformat' }}"
|
||||
)
|
||||
svg.icon.icon-watche
|
||||
use(xlink:href="#icon-watch")
|
||||
tg-svg(svg-icon="icon-watch")
|
||||
span {{ ::vm.project.get('total_watchers') }}
|
||||
|
||||
p.description {{vm.project.get('description')}}
|
||||
|
@ -70,6 +69,8 @@ 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")
|
||||
tg-svg(
|
||||
ng-if="member.get('id') == vm.project.getIn(['owner', 'id'])"
|
||||
svg-icon="icon-badge"
|
||||
svgTitleTranslate: "COMMON.OWNER"
|
||||
)
|
||||
|
|
|
@ -9,12 +9,10 @@
|
|||
h3.transfer-project-title {{::vm.project.get("name")}}
|
||||
.transfer-project-statistics
|
||||
span.transfer-project-private(ng-if="vm.project.get('is_private')")
|
||||
svg.icon.icon-lock
|
||||
use(xlink:href="#icon-lock")
|
||||
tg-svg(svg-icon="icon-lock")
|
||||
span(translate="ADMIN.PROJECT_TRANSFER.PRIVATE")
|
||||
span.transfer-project-members
|
||||
svg.icon.icon-team
|
||||
use(xlink:href="#icon-team")
|
||||
tg-svg(svg-icon="icon-team")
|
||||
span {{::vm.project.get("total_memberships")}}
|
||||
|
||||
p(
|
||||
|
@ -44,8 +42,10 @@
|
|||
label.transfer-project-comment-label(
|
||||
translate="ADMIN.PROJECT_TRANSFER.ADD_COMMENT"
|
||||
)
|
||||
svg.icon.icon-close(ng-click="vm.hideComment()")
|
||||
use(xlink:href="#icon-close")
|
||||
tg-svg(
|
||||
svg-icon="icon-close"
|
||||
ng-click="vm.hideComment()"
|
||||
)
|
||||
textarea.transfer-project-comment(
|
||||
name="reason"
|
||||
ng-model="vm.reason"
|
||||
|
@ -66,4 +66,4 @@
|
|||
translate="ADMIN.PROJECT_TRANSFER.ACCEPT"
|
||||
)
|
||||
|
||||
div(ng-if="!vm.canBeOwnedByUser.valid", tg-cant-own-project-explanation)
|
||||
tg-cant-own-project-explanation(ng-if="!vm.canBeOwnedByUser.valid")
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
div.single-attachment
|
||||
blockquote
|
||||
a(ng-href="{{ attachment.get('url') }}", title="Click to download {{ attachment.get('filename') }}", target="_blank")
|
||||
svg.icon.icon-attachment
|
||||
use(xlink:href="#icon-attachment")
|
||||
tg-svg(svg-icon="icon-attachment")
|
||||
span {{attachment.get('filename')}}
|
||||
|
|
|
@ -26,6 +26,5 @@ div.wrapper(ng-controller="ProjectProfileController as ctrl",
|
|||
p.result-message
|
||||
|
||||
a.help-button(href="https://taiga.io/support/import-export-projects/", target="_blank")
|
||||
svg.icon.icon-question
|
||||
use(xlink:href="#icon-question")
|
||||
tg-svg(svg-icon="icon-question")
|
||||
span(translate="ADMIN.HELP")
|
||||
|
|
|
@ -19,8 +19,7 @@ div.wrapper(
|
|||
form.module-container
|
||||
.module.module-scrum(ng-class="{true:'active', false:''}[project.is_backlog_activated]")
|
||||
.module-icon
|
||||
svg.icon.icon-scrum
|
||||
use(xlink:href="#icon-scrum")
|
||||
tg-svg(svg-icon="icon-scrum")
|
||||
.module-name(translate="ADMIN.MODULES.BACKLOG")
|
||||
.module-desc
|
||||
p(translate="ADMIN.MODULES.BACKLOG_DESCRIPTION")
|
||||
|
@ -47,9 +46,10 @@ div.wrapper(
|
|||
placeholder="{{'ADMIN.MODULES.NUMBER_US_POINTS_HELP' | translate}}"
|
||||
ng-model="project.total_story_points"
|
||||
data-type="digits"
|
||||
)
|
||||
svg.icon.icon-save(ng-if="project.is_backlog_activated")
|
||||
use(xlink:href="#icon-save")
|
||||
)
|
||||
.options
|
||||
a.save(href="", ng-if="project.is_backlog_activated")
|
||||
tg-svg(svg-icon="icon-save")
|
||||
.module-activation.module-direct-active
|
||||
div.check
|
||||
input.activate-input(
|
||||
|
@ -65,8 +65,7 @@ div.wrapper(
|
|||
|
||||
.module.module-kanban(ng-class="{true:'active', false:''}[project.is_kanban_activated]")
|
||||
.module-icon
|
||||
svg.icon.icon-kanban
|
||||
use(xlink:href="#icon-kanban")
|
||||
tg-svg(svg-icon="icon-kanban")
|
||||
.module-name(translate="ADMIN.MODULES.KANBAN")
|
||||
.module-desc(translate="ADMIN.MODULES.KANBAN_DESCRIPTION")
|
||||
.module-activation.module-direct-active
|
||||
|
@ -84,8 +83,7 @@ div.wrapper(
|
|||
|
||||
.module.module-issues(ng-class="{true:'active', false:''}[project.is_issues_activated]")
|
||||
.module-icon
|
||||
svg.icon.icon-issues
|
||||
use(xlink:href="#icon-issues")
|
||||
tg-svg(svg-icon="icon-issues")
|
||||
.module-name(translate="ADMIN.MODULES.ISSUES")
|
||||
.module-desc(translate="ADMIN.MODULES.ISSUES_DESCRIPTION")
|
||||
.module-activation.module-direct-active
|
||||
|
@ -103,8 +101,7 @@ div.wrapper(
|
|||
|
||||
.module.module-wiki(ng-class="{true:'active', false:''}[project.is_wiki_activated]")
|
||||
.module-icon
|
||||
svg.icon.icon-wiki
|
||||
use(xlink:href="#icon-wiki")
|
||||
tg-svg(svg-icon="icon-wiki")
|
||||
.module-name(translate="ADMIN.MODULES.WIKI")
|
||||
.module-desc(translate="ADMIN.MODULES.WIKI_DESCRIPTION")
|
||||
.module-activation.module-direct-active
|
||||
|
@ -122,8 +119,7 @@ div.wrapper(
|
|||
|
||||
.module.module-videoconference(ng-class="{true:'active', false:''}[isVideoconferenceActivated]")
|
||||
.module-icon
|
||||
svg.icon.icon-bubble-empty
|
||||
use(xlink:href="#icon-bubble-empty")
|
||||
tg-svg(svg-icon="icon-bubble-empty")
|
||||
.module-name(translate="ADMIN.MODULES.MEETUP")
|
||||
.module-desc
|
||||
p(translate="ADMIN.MODULES.MEETUP_DESCRIPTION")
|
||||
|
@ -157,8 +153,9 @@ div.wrapper(
|
|||
data-type="url"
|
||||
data-required="true"
|
||||
)
|
||||
svg.icon.icon-save(ng-if="project.videoconferences")
|
||||
use(xlink:href="#icon-save")
|
||||
fieldset.options
|
||||
a.save(href="", ng-if="project.videoconferences")
|
||||
tg-svg(svg-icon="icon-save")
|
||||
|
||||
.module-activation
|
||||
div.check
|
||||
|
|
|
@ -83,7 +83,6 @@ div.wrapper(
|
|||
owner="project.owner",
|
||||
project-id="project.id"
|
||||
)
|
||||
|
||||
fieldset(ng-if="project.owner.id == user.id")
|
||||
tg-admin-project-change-owner.admin-project-profile-owner-actions(
|
||||
members="project.members.length"
|
||||
|
@ -95,9 +94,10 @@ div.wrapper(
|
|||
fieldset.looking-for-people
|
||||
.looking-for-people-selector
|
||||
span {{ 'ADMIN.PROJECT_PROFILE.RECRUITING' | translate }}
|
||||
svg.icon.icon-recruit
|
||||
use(xlink:href="#icon-recruit")
|
||||
title {{ 'ADMIN.PROJECT_PROFILE.RECRUITING_MESSAGE' | translate }}"
|
||||
tg-svg(
|
||||
svg-icon="icon-recruit",
|
||||
svg-title-translate="ADMIN.PROJECT_PROFILE.RECRUITING_MESSAGE"
|
||||
)
|
||||
div.check
|
||||
input(
|
||||
type="checkbox",
|
||||
|
@ -146,9 +146,10 @@ div.wrapper(
|
|||
href="https://taiga.io/support/whats-the-difference-between-public-and-private-projects/"
|
||||
target="_blank"
|
||||
)
|
||||
svg.icon.icon-question
|
||||
use(xlink:href="#icon-question")
|
||||
title {{ 'ADMIN.PROJECT_PROFILE.PRIVATE_OR_PUBLIC' | translate }}
|
||||
tg-svg(
|
||||
svg-icon="icon-question",
|
||||
svg-title-translate="ADMIN.PROJECT_PROFILE.PRIVATE_OR_PUBLIC"
|
||||
)
|
||||
span {{'ADMIN.PROJECT_PROFILE.PRIVATE_OR_PUBLIC' | translate }}
|
||||
button.button-green.submit-button(
|
||||
type="submit"
|
||||
|
|
|
@ -22,6 +22,5 @@ div.wrapper(ng-controller="ProjectProfileController as ctrl",
|
|||
|
||||
div
|
||||
a.help-button(href="https://taiga.io/support/csv-reports/", target="_blank")
|
||||
svg.icon.icon-question
|
||||
use(xlink:href="#icon-question")
|
||||
tg-svg(svg-icon="icon-question")
|
||||
span(translate="ADMIN.REPORTS.HELP")
|
||||
|
|
|
@ -22,13 +22,11 @@ div.wrapper.roles(ng-controller="RolesController as ctrl",
|
|||
.edit-role
|
||||
input(type="text", value="{{ role.name }}")
|
||||
a.save(href="", title="{{'COMMON.SAVE' | translate}}")
|
||||
svg.icon.icon-save
|
||||
use(xlink:href="#icon-save")
|
||||
tg-svg(svg-icon="icon-save")
|
||||
p.total
|
||||
span.role-name(title="{{'ADMIN.ROLES.COUNT_MEMBERS' | translate}}") {{ role.name }}
|
||||
a.edit-value
|
||||
svg.icon.icon-edit
|
||||
use(xlink:href="#icon-edit")
|
||||
a.edit-value(href="")
|
||||
tg-svg(svg-icon="icon-edit")
|
||||
|
||||
div.any-computable-role(ng-hide="anyComputableRole", translate="ADMIN.ROLES.WARNING_NO_ROLE")
|
||||
|
||||
|
|
|
@ -24,8 +24,7 @@ div.wrapper.roles(tg-bitbucket-webhooks, ng-controller="BitbucketController as c
|
|||
.field-with-option
|
||||
input(type="text", ng-model="bitbucket.webhooks_url", name="payload-url", readonly="readonly", placeholder="{{'ADMIN.THIRD_PARTIES.PAYLOAD_URL' | translate}}", id="payload-url")
|
||||
.option-wrapper.select-input-content
|
||||
svg.icon.icon-clipboard
|
||||
use(xlink:href="#icon-clipboard")
|
||||
tg-svg(svg-icon="icon-clipboard")
|
||||
.help-copy(translate="COMMON.COPY_TO_CLIPBOARD")
|
||||
|
||||
fieldset
|
||||
|
@ -35,6 +34,5 @@ div.wrapper.roles(tg-bitbucket-webhooks, ng-controller="BitbucketController as c
|
|||
button.button-green.submit-button(type="submit", title="{{'COMMON.SAVE' | translate}}", translate="COMMON.SAVE")
|
||||
|
||||
a.help-button(href="https://taiga.io/support/bitbucket-integration/", target="_blank")
|
||||
svg.icon.icon-question
|
||||
use(xlink:href="#icon-question")
|
||||
tg-svg(svg-icon="icon-question")
|
||||
span(translate="ADMIN.HELP")
|
||||
|
|
|
@ -23,13 +23,11 @@ div.wrapper.roles(tg-github-webhooks, ng-controller="GithubController as ctrl",
|
|||
.field-with-option
|
||||
input(type="text", ng-model="github.webhooks_url", name="payload-url", readonly="readonly", placeholder="{{'ADMIN.THIRD_PARTIES.PAYLOAD_URL' | translate}}", id="payload-url")
|
||||
.option-wrapper.select-input-content
|
||||
svg.icon.icon-clipboard
|
||||
use(xlink:href="#icon-clipboard")
|
||||
tg-svg(svg-icon="icon-clipboard")
|
||||
.help-copy(translate="COMMON.COPY_TO_CLIPBOARD")
|
||||
|
||||
button.button-green.submit-button(type="submit", title="{{'COMMON.SAVE' | translate}}", translate="COMMON.SAVE")
|
||||
|
||||
a.help-button(href="https://taiga.io/support/github-integration/", target="_blank")
|
||||
svg.icon.icon-question
|
||||
use(xlink:href="#icon-question")
|
||||
tg-svg(svg-icon="icon-question")
|
||||
span(translate="ADMIN.HELP")
|
||||
|
|
|
@ -23,8 +23,7 @@ div.wrapper.roles(tg-gitlab-webhooks, ng-controller="GitlabController as ctrl",
|
|||
.field-with-option
|
||||
input(type="text", ng-model="gitlab.webhooks_url", name="payload-url", readonly="readonly", placeholder="{{'ADMIN.THIRD_PARTIES.PAYLOAD_URL' | translate}}", id="payload-url")
|
||||
.option-wrapper.select-input-content
|
||||
svg.icon.icon-clipboard
|
||||
use(xlink:href="#icon-clipboard")
|
||||
tg-svg(svg-icon="icon-clipboard")
|
||||
.help-copy(translate="COMMON.COPY_TO_CLIPBOARD")
|
||||
|
||||
fieldset
|
||||
|
@ -34,6 +33,5 @@ div.wrapper.roles(tg-gitlab-webhooks, ng-controller="GitlabController as ctrl",
|
|||
button.button-green.submit-button(type="submit", title="{{'COMMON.SAVE' | translate}}", translate="COMMON.SAVE")
|
||||
|
||||
a.help-button(href="https://taiga.io/support/gitlab-integration/", target="_blank")
|
||||
svg.icon.icon-question
|
||||
use(xlink:href="#icon-question")
|
||||
tg-svg(svg-icon="icon-question")
|
||||
span(translate="ADMIN.HELP")
|
||||
|
|
|
@ -48,12 +48,16 @@ div.wrapper.roles(ng-controller="WebhooksController as ctrl",
|
|||
ng-model="webhook.key"
|
||||
)
|
||||
div.webhook-options
|
||||
a.edit-existing(href="", title="{{'ADMIN.WEBHOOKS.SAVE' | translate}}")
|
||||
svg.icon.icon-save
|
||||
use(xlink:href="#icon-save")
|
||||
a.cancel-existing(href="", title="{{'ADMIN.WEBHOOKS.CANCEL' | translate}}")
|
||||
svg.icon.icon-close
|
||||
use(xlink:href="#icon-close")
|
||||
a.edit-existing(
|
||||
href=""
|
||||
title="{{'ADMIN.WEBHOOKS.SAVE' | translate}}"
|
||||
)
|
||||
tg-svg(svg-icon="icon-save")
|
||||
a.cancel-existing(
|
||||
href=""
|
||||
title="{{'ADMIN.WEBHOOKS.CANCEL' | translate}}"
|
||||
)
|
||||
tg-svg(svg-icon="icon-close")
|
||||
|
||||
div.visualization-mode
|
||||
div.row
|
||||
|
@ -66,14 +70,11 @@ div.wrapper.roles(ng-controller="WebhooksController as ctrl",
|
|||
div.webhook-options
|
||||
div.webhook-options-wrapper
|
||||
a.test-webhook(href="", title="{{'ADMIN.WEBHOOKS.TEST' | translate}}")
|
||||
svg.icon.icon-check-empty
|
||||
use(xlink:href="#icon-check-empty")
|
||||
tg-svg(svg-icon="icon-check-empty")
|
||||
a.edit-webhook(href="", title="{{'ADMIN.WEBHOOKS.EDIT' | translate}}")
|
||||
svg.icon.icon-edit
|
||||
use(xlink:href="#icon-edit")
|
||||
tg-svg(svg-icon="icon-edit")
|
||||
a.delete-webhook(href="", title="{{'ADMIN.WEBHOOKS.DELETE' | translate}}")
|
||||
svg.icon.icon-trash
|
||||
use(xlink:href="#icon-trash")
|
||||
tg-svg(svg-icon="icon-trash")
|
||||
|
||||
div.webhooks-history(ng-show="webhook.logs")
|
||||
div.history-single-wrapper(ng-repeat="log in webhook.logs")
|
||||
|
@ -81,15 +82,14 @@ div.wrapper.roles(ng-controller="WebhooksController as ctrl",
|
|||
div
|
||||
span.history-response-icon(ng-class="log.validStatus ? 'history-success' : 'history-error'", title="{{log.status}}")
|
||||
span.history-date(ng-bind="log.prettyDate")
|
||||
svg.toggle-log.icon.icon-arrow-down
|
||||
use(xlink:href="#icon-arrow-down")
|
||||
a.toggle-log(href="")
|
||||
tg-svg(svg-icon="icon-arrow-down")
|
||||
|
||||
div.history-single-response
|
||||
div.history-single-request-header
|
||||
span(translate="ADMIN.WEBHOOKS.REQUEST")
|
||||
a.resend-request(href="", title="{{'ADMIN.WEBHOOKS.RESEND_REQUEST' | translate}}", data-log="{{log.id}}")
|
||||
svg.icon.icon-reload
|
||||
use(xlink:href="#icon-reload")
|
||||
tg-svg(svg-icon="icon-reload")
|
||||
span(translate="ADMIN.WEBHOOKS.RESEND_REQUEST")
|
||||
div.history-single-request-body
|
||||
div.response-container
|
||||
|
@ -117,13 +117,10 @@ div.wrapper.roles(ng-controller="WebhooksController as ctrl",
|
|||
input(type="text", name="key", placeholder="{{'ADMIN.WEBHOOKS.TYPE_SERVICE_SECRET' | translate}}", data-required="true", ng-model="newValue.key")
|
||||
div.webhook-options
|
||||
a.add-new(href="", title="{{'ADMIN.WEBHOOKS.SAVE' | translate}}")
|
||||
svg.icon.icon-save
|
||||
use(xlink:href="#icon-save")
|
||||
tg-svg(svg-icon="icon-save")
|
||||
a.cancel-new(href="", title="{{'ADMIN.WEBHOOKS.CANCEL' | translate}}")
|
||||
svg.icon.icon-close
|
||||
use(xlink:href="#icon-close")
|
||||
tg-svg(svg-icon="icon-close")
|
||||
|
||||
a.help-button(href="https://taiga.io/support/webhooks/", target="_blank")
|
||||
svg.icon.icon-question
|
||||
use(xlink:href="#icon-question")
|
||||
tg-svg(svg-icon="icon-question")
|
||||
span(translate="ADMIN.HELP")
|
||||
|
|
|
@ -1,9 +1,4 @@
|
|||
a.close(
|
||||
href=""
|
||||
title="close"
|
||||
)
|
||||
svg.icon.icon-close
|
||||
use(xlink:href="#icon-close")
|
||||
tg-lightbox-close
|
||||
.add-member-wrapper
|
||||
h2.title(translate="LIGHTBOX.ADD_MEMBER.TITLE")
|
||||
form.add-member-form(ng-submit="vm.submit()")
|
||||
|
@ -37,15 +32,13 @@ a.close(
|
|||
ng-click="vm.addSingleMember()"
|
||||
ng-if="$last && vm.canAddUsers"
|
||||
)
|
||||
svg.icon.icon-add
|
||||
use(xlink:href="#icon-add")
|
||||
tg-svg(svg-icon="icon-add")
|
||||
a.remove-fieldset.ng-animate-disabled(
|
||||
href=""
|
||||
ng-click="vm.removeSingleMember($index)"
|
||||
ng-if="!$last || ($last && !vm.canAddUsers && vm.membersLimit > 1)"
|
||||
)
|
||||
svg.icon.icon-trash
|
||||
use(xlink:href="#icon-trash")
|
||||
tg-svg(svg-icon="icon-trash")
|
||||
|
||||
tg-lightbox-add-members-warning-message(ng-if="vm.showWarningMessage", project="vm.project")
|
||||
|
||||
|
|
|
@ -3,9 +3,10 @@ figure.avatar
|
|||
figcaption
|
||||
span.name <%- full_name %>
|
||||
<% if (isOwner) { %>
|
||||
svg.icon.icon-badge
|
||||
use(xlink:href="#icon-badge")
|
||||
title(translate="COMMON.OWNER")
|
||||
tg-svg(
|
||||
svg-icon="icon-badge",
|
||||
svg-title-translate="COMMON.OWNER"
|
||||
)
|
||||
<% } %>
|
||||
div
|
||||
span.pending <%- pending %>
|
||||
|
|
|
@ -10,14 +10,11 @@ section.project-csv(tg-select-input-text)
|
|||
input(type="text", placeholder="{{'ADMIN.CSV.URL_FIELD_PLACEHOLDER' | translate}}",
|
||||
readonly, ng-model="csvUrl")
|
||||
div.option-wrapper.select-input-content
|
||||
svg.icon.icon-clipboard
|
||||
use(xlink:href="#icon-clipboard")
|
||||
tg-svg(svg-icon="icon-clipboard")
|
||||
|
||||
a(href="", title="{{'ADMIN.CSV.TITLE_REGENERATE_URL' | translate}}", ng-click="ctrl.regenerateUuid()")
|
||||
svg.icon.icon-add(ng-hide="csvUrl")
|
||||
use(xlink:href="#icon-add")
|
||||
tg-svg(svg-icon="icon-add", ng-hide="csvUrl")
|
||||
span(ng-hide="csvUrl", translate="ADMIN.CSV.ACTION_GENERATE_URL")
|
||||
|
||||
svg.icon.icon-reload(ng-Show="csvUrl")
|
||||
use(xlink:href="#icon-reload")
|
||||
tg-svg(svg-icon="icon-reload", ng-show="csvUrl")
|
||||
span(ng-Show="csvUrl", translate="ADMIN.CSV.ACTION_REGENERATE")
|
||||
|
|
|
@ -12,8 +12,7 @@ div.wrapper(tg-backlog, ng-controller="BacklogController as ctrl",
|
|||
include ../includes/components/summary
|
||||
|
||||
div.empty-burndown(ng-if="showGraphPlaceholder && project.i_am_admin")
|
||||
svg.icon.icon-graph
|
||||
use(xlink:href="#icon-graph")
|
||||
tg-svg(svg-icon="icon-graph")
|
||||
div.empty-text
|
||||
p.title(translate="BACKLOG.CUSTOMIZE_GRAPH")
|
||||
p {{'BACKLOG.CUSTOMIZE_GRAPH_TEXT' | translate}} #[a(href="", tg-nav="project-admin-project-profile-modules:project=project.slug", title="{{'BACKLOG.CUSTOMIZE_GRAPH_TITLE' | translate}}") {{'BACKLOG.CUSTOMIZE_GRAPH_ADMIN' | translate}}]
|
||||
|
@ -30,8 +29,7 @@ div.wrapper(tg-backlog, ng-controller="BacklogController as ctrl",
|
|||
title="{{'BACKLOG.MOVE_US_TO_CURRENT_SPRINT' | translate}}"
|
||||
id="move-to-current-sprint"
|
||||
)
|
||||
svg.icon.icon-move
|
||||
use(xlink:href="#icon-move")
|
||||
tg-svg(svg-icon="icon-move")
|
||||
span.text(translate="BACKLOG.MOVE_US_TO_CURRENT_SPRINT")
|
||||
a.trans-button.move-to-latest-sprint.move-to-sprint(
|
||||
ng-if="!currentSprint"
|
||||
|
@ -39,8 +37,7 @@ div.wrapper(tg-backlog, ng-controller="BacklogController as ctrl",
|
|||
title="{{'BACKLOG.MOVE_US_TO_LATEST_SPRINT' | translate}}"
|
||||
id="move-to-latest-sprint"
|
||||
)
|
||||
svg.icon.icon-move
|
||||
use(xlink:href="#icon-move")
|
||||
tg-svg(svg-icon="icon-move")
|
||||
span.text(translate="BACKLOG.MOVE_US_TO_LATEST_SPRINT")
|
||||
a.trans-button(
|
||||
ng-if="userstories.length"
|
||||
|
|
|
@ -1,7 +1,9 @@
|
|||
<% _.each(filters, function(f) { %>
|
||||
a.single-filter.selected(data-type!="<%- f.type %>", data-id!="<%- f.id %>")
|
||||
span.name(style!="<%- f.style %>")
|
||||
| <%- f.name %>
|
||||
svg.icon.icon-close.remove-filter
|
||||
use(xlink:href="#icon-close")
|
||||
.single-filter.selected(
|
||||
data-type!="<%- f.type %>"
|
||||
data-id!="<%- f.id %>"
|
||||
)
|
||||
span.name(style!="<%- f.style %>") <%- f.name %>
|
||||
a.remove-filter(href="")
|
||||
tg-svg(svg-icon="icon-close")
|
||||
<% }) %>
|
||||
|
|
|
@ -1,12 +1,18 @@
|
|||
.sprint-name
|
||||
a.compact-sprint(href="", title="{{'BACKLOG.COMPACT_SPRINT' | translate}}")
|
||||
svg.icon.icon-arrow-right
|
||||
use(xlink:href="#icon-arrow-right")
|
||||
a(ng-if="::isVisible", href="{{::taskboardUrl}}", title="{{'BACKLOG.GO_TO_TASKBOARD' | translate}}")
|
||||
tg-svg(svg-icon="icon-arrow-right")
|
||||
a(
|
||||
ng-if="::isVisible"
|
||||
href="{{::taskboardUrl}}"
|
||||
title="{{'BACKLOG.GO_TO_TASKBOARD' | translate}}"
|
||||
)
|
||||
span {{::name}}
|
||||
|
||||
svg.icon.icon-edit.edit-sprint(ng-if="::isEditable", href="", title="{{'BACKLOG.EDIT_SPRINT' | translate}}")
|
||||
use(xlink:href="#icon-edit")
|
||||
a.edit-sprint(
|
||||
ng-if="::isEditable"
|
||||
href=""
|
||||
title="{{'BACKLOG.EDIT_SPRINT' | translate}}"
|
||||
)
|
||||
tg-svg(svg-icon="icon-edit")
|
||||
|
||||
.sprint-summary
|
||||
.sprint-date {{::estimatedDateRange}}
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
a.add-button(
|
||||
href=""
|
||||
)
|
||||
svg.icon.icon-add
|
||||
use(xlink:href="#icon-add")
|
||||
tg-svg(svg-icon="icon-add")
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
img(src!="<%- photo %>", alt!="<%- fullName %>")
|
||||
<% if (isIocaine) { %>
|
||||
.iocaine-symbol(title="{{ 'TASK.TITLE_ACTION_IOCAINE' | translate }}")
|
||||
svg.icon.icon-iocaine
|
||||
use(xlink:href="#icon-iocaine")
|
||||
tg-svg(svg-icon="icon-iocaine")
|
||||
<% }; %>
|
||||
|
||||
.assigned-to
|
||||
|
@ -24,8 +23,7 @@
|
|||
<%- fullName %>
|
||||
<% }; %>
|
||||
<% if (isEditable && !isUnassigned) { %>
|
||||
svg.icon.icon-arrow-down
|
||||
use(xlink:href="#icon-arrow-down")
|
||||
tg-svg(svg-icon="icon-arrow-down")
|
||||
<% }; %>
|
||||
|
||||
<% if (isEditable && isUnassigned) { %>
|
||||
|
@ -39,9 +37,8 @@
|
|||
<% }; %>
|
||||
|
||||
<% if (isEditable && !isUnassigned) { %>
|
||||
svg.icon.icon-close.remove-user(
|
||||
href=""
|
||||
tg-svg.remove-user(
|
||||
svg-icon="icon-close",
|
||||
title="{{'COMMON.ASSIGNED_TO.DELETE_ASSIGNMENT' | translate}}"
|
||||
)
|
||||
use(xlink:href="#icon-close")
|
||||
<% } %>
|
||||
|
|
|
@ -2,11 +2,9 @@ a.button-gray.item-block(
|
|||
href=""
|
||||
title="{{ 'COMMON.BLOCK_TITLE' | translate }}"
|
||||
)
|
||||
svg.icon.icon-lock
|
||||
use(xlink:href="#icon-lock")
|
||||
tg-svg(svg-icon="icon-lock")
|
||||
a.button-red.item-unblock(
|
||||
href=""
|
||||
title="{{ 'COMMON.UNBLOCK_TITLE' | translate }}"
|
||||
)
|
||||
svg.icon.icon-lock
|
||||
use(xlink:href="#icon-unlock")
|
||||
tg-svg(svg-icon="icon-unlock")
|
||||
|
|
|
@ -2,5 +2,4 @@ a.button-red.button-delete(
|
|||
href=""
|
||||
title="{{ 'COMMON.DELETE' | translate }}"
|
||||
)
|
||||
svg.icon.icon-trash
|
||||
use(xlink:href="#icon-trash")
|
||||
tg-svg(svg-icon="icon-trash")
|
||||
|
|
|
@ -2,12 +2,14 @@ include wysiwyg.jade
|
|||
|
||||
.view-description
|
||||
section.us-content.wysiwyg(tg-bind-html="item.description_html || noDescriptionMsg")
|
||||
svg.icon.icon-edit.edit
|
||||
use(xlink:href="#icon-edit")
|
||||
tg-svg.edit(svg-icon="icon-edit")
|
||||
|
||||
.edit-description
|
||||
textarea(ng-attr-placeholder="{{'COMMON.DESCRIPTION.EMPTY' | translate}}", ng-model="item.description", tg-markitup="tg-markitup")
|
||||
+wysihelp
|
||||
span.save-container
|
||||
svg.save.icon.icon-save(title="{{'COMMON.SAVE' | translate}}")
|
||||
use(xlink:href="#icon-save")
|
||||
div.save-container
|
||||
span.save
|
||||
tg-svg(
|
||||
svg-icon="icon-save",
|
||||
svg-title-translate="COMMON.SAVE"
|
||||
)
|
||||
|
|
|
@ -1,9 +1,14 @@
|
|||
.view-subject
|
||||
| {{ item.subject }}
|
||||
svg.edit.icon.icon-edit(href="" title="{{'COMMON.EDIT' | translate}}")
|
||||
use(xlink:href="#icon-edit")
|
||||
tg-svg.edit(
|
||||
svg-icon="icon-edit",
|
||||
title="{{'COMMON.EDIT' | translate}}"
|
||||
)
|
||||
.edit-subject
|
||||
input(type="text", ng-model="item.subject", data-required="true", data-maxlength="500", ng-model-options="{ debounce: 200 }")
|
||||
span.save-container
|
||||
svg.save.icon.icon-save(href="", title="{{'COMMON.SAVE' | translate}}")
|
||||
use(xlink:href="#icon-save")
|
||||
a.save(href="")
|
||||
tg-svg(
|
||||
svg-icon="icon-save"
|
||||
svg-title-translate="COMMON.SAVE"
|
||||
)
|
||||
|
|
|
@ -10,11 +10,11 @@
|
|||
span <%- watcher.full_name_display %>
|
||||
|
||||
<% if(isEditable){ %>
|
||||
svg.icon.icon-trash.js-delete-watcher.delete-watcher(
|
||||
tg-svg.js-delete-watcher.delete-watcher(
|
||||
svg-icon="icon-trash",
|
||||
svg-title-translate="COMMON.WATCHERS.DELETE",
|
||||
data-watcher-id!="<%- watcher.id %>"
|
||||
title="{{'COMMON.WATCHERS.DELETE' | translate}}"
|
||||
)
|
||||
use(xlink:href="#icon-trash")
|
||||
<% }; %>
|
||||
<% } %>
|
||||
<% }); %>
|
||||
|
|
|
@ -2,6 +2,5 @@ mixin wysihelp
|
|||
div.wysiwyg-help
|
||||
span.drag-drop-help Attach files by dragging & dropping on the textarea above.
|
||||
a.help-markdown(href="https://taiga.io/support/taiga-markdown-syntax/", target="_blank", title="{{'COMMON.WYSIWYG.MARKDOWN_HELP' | translate}}")
|
||||
svg.icon.icon-question
|
||||
use(xlink:href="#icon-question")
|
||||
tg-svg(svg-icon="icon-question")
|
||||
span(translate="COMMON.WYSIWYG.MARKDOWN_HELP")
|
||||
|
|
|
@ -1,11 +1,10 @@
|
|||
ul.points-per-role
|
||||
<% _.each(roles, function(role) { %>
|
||||
li.ticket-role-points.total(class!="<% if(editable){ %>clickable<% } %>", data-role-id!="<%- role.id %>", title!="<%- role.name %>")
|
||||
span.points
|
||||
span.points
|
||||
<%- role.points %>
|
||||
svg.icon.icon-arrow-down
|
||||
use(xlink:href="#icon-arrow-down")
|
||||
span.role
|
||||
tg-svg(svg-icon="icon-arrow-down")
|
||||
span.role
|
||||
<%- role.name %>
|
||||
<% }); %>
|
||||
li.ticket-role-points.total
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
a.us-points(href="", title!="<%= title %>", class!="<% if (!editable) { %>not-clickable<% } %>")
|
||||
span.points-value <%= text %>
|
||||
<% if (editable) { %>
|
||||
svg.icon.icon-arrow-down(tg-check-permission="modify_us")
|
||||
use(xlink:href="#icon-arrow-down")
|
||||
tg-svg(
|
||||
svg-icon="icon-arrow-down",
|
||||
tg-check-permission="modify_us"
|
||||
)
|
||||
<% } %>
|
||||
|
|
|
@ -15,14 +15,16 @@
|
|||
span(translate="COMMENTS.DELETED_INFO",
|
||||
translate-values!="{ user: '<%- deleteCommentUser %>', date: '<%- deleteCommentDate %>'}")
|
||||
<% } %>
|
||||
.comment.wysiwyg(ng-non-bindable)
|
||||
| <%= comment %>
|
||||
.comment.wysiwyg
|
||||
div(ng-non-bindable)
|
||||
| <%= comment %>
|
||||
<% if (!deleteCommentDate && mode !== "activity" && canDeleteComment) { %>
|
||||
svg.icon.icon-trash.comment-delete(
|
||||
a.comment-delete(
|
||||
href="",
|
||||
title!="<%- deleteCommentActionTitle %>",
|
||||
data-activity-id!="<%- activityId %>"
|
||||
title!="<%- deleteCommentActionTitle %>"
|
||||
)
|
||||
use(xlink:href="#icon-trash")
|
||||
tg-svg(svg-icon="icon-trash")
|
||||
<% } %>
|
||||
<% } %>
|
||||
|
||||
|
@ -31,8 +33,7 @@
|
|||
<% if (mode != "activity") { %>
|
||||
a.changes-title(href="", title="{{'ACTIVITY.SHOW_ACTIVITY' | translate}}")
|
||||
span <%- changesText %>
|
||||
svg.icon.icon-arrow-right
|
||||
use(xlink:href="#icon-arrow-right")
|
||||
tg-svg(svg-icon="icon-arrow-right")
|
||||
<% } %>
|
||||
<% _.each(changes, function(change) { %>
|
||||
| <%= change %>
|
||||
|
|
|
@ -4,22 +4,22 @@ section.history
|
|||
<% if (commentsVisible || historyVisible) { %>
|
||||
ul.history-tabs
|
||||
<% if (commentsVisible) { %>
|
||||
li(
|
||||
class="active"
|
||||
data-section-class="history-comments"
|
||||
)
|
||||
a(href="")
|
||||
svg.icon.icon-writer
|
||||
use(xlink:href="#icon-writer")
|
||||
li
|
||||
a(
|
||||
href="",
|
||||
class="active",
|
||||
data-section-class="history-comments"
|
||||
)
|
||||
tg-svg(svg-icon="icon-writer")
|
||||
span.tab-title(translate="COMMENTS.TITLE")
|
||||
<% } %>
|
||||
<% if (historyVisible) { %>
|
||||
li(
|
||||
data-section-class="history-activity"
|
||||
)
|
||||
a(href="")
|
||||
svg.icon.icon-timeline
|
||||
use(xlink:href="#icon-timeline")
|
||||
li
|
||||
a(
|
||||
href="",
|
||||
data-section-class="history-activity"
|
||||
)
|
||||
tg-svg(svg-icon="icon-timeline")
|
||||
span.tab-title(translate="ACTIVITY.TITLE")
|
||||
<% } %>
|
||||
<% } %>
|
||||
|
|
|
@ -13,7 +13,6 @@
|
|||
data-activity-id!="<%- activityId %>"
|
||||
title="{{ 'COMMENTS.RESTORE' | translate }}"
|
||||
)
|
||||
svg.icon.icon-reload
|
||||
use(xlink:href="#icon-reload")
|
||||
tg-svg(svg-icon="icon-reload")
|
||||
span(translate="COMMENTS.RESTORE")
|
||||
<% } %>
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
svg.close.icon.icon-close(href="", title="{{'COMMON.CLOSE' | translate}}")
|
||||
use(xlink:href="#icon-close")
|
||||
tg-lightbox-close
|
||||
form
|
||||
h2.title(translate="LIGHTBOX.FEEDBACK.TITLE")
|
||||
fieldset
|
||||
|
|
|
@ -7,15 +7,14 @@
|
|||
)
|
||||
img(src!="<%- selected.photo %>")
|
||||
a.user-list-name(
|
||||
href=""
|
||||
href=""
|
||||
title!="<%- selected.full_name_display %>"
|
||||
)
|
||||
| <%-selected.full_name_display %>
|
||||
svg.icon.icon-close.remove-assigned-to(
|
||||
href=""
|
||||
title="{{'COMMON.ASSIGNED_TO.REMOVE_ASSIGNED' | translate}}"
|
||||
tg-svg.remove-assigned-to(
|
||||
svg-icon="icon-close",
|
||||
svg-title-translate="COMMON.ASSIGNED_TO.REMOVE_ASSIGNED"
|
||||
)
|
||||
use(xlink:href="#icon-close")
|
||||
<% } %>
|
||||
|
||||
<% _.each(users, function(user) { %>
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
svg.close.icon.icon-close(href="", title="{{'COMMON.CLOSE' | translate}}")
|
||||
use(xlink:href="#icon-close")
|
||||
tg-lightbox-close
|
||||
|
||||
div.form
|
||||
h2.title(translate="LIGHTBOX.ASSIGNED_TO.SELECT")
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
.attachment-preview
|
||||
svg.close.icon.icon-close(href="", title="{{'COMMON.CLOSE' | translate}}")
|
||||
use(xlink:href="#icon-close")
|
||||
tg-lightbox-close
|
||||
|
||||
a(href="{{::file.get('url')}}", title="{{::file.get('description')}}", target="_blank", download="{{::file.get('name')}}")
|
||||
img(src="{{::file.get('url')}}")
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
svg.close.icon.icon-close(href="", title="{{'COMMON.CLOSE' | translate}}")
|
||||
use(xlink:href="#icon-close")
|
||||
tg-lightbox-close
|
||||
|
||||
div.form
|
||||
h2.title
|
||||
fieldset
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
svg.close.icon.icon-close(href="", title="{{'COMMON.CLOSE' | translate}}")
|
||||
use(xlink:href="#icon-close")
|
||||
tg-lightbox-close
|
||||
|
||||
.form
|
||||
h2.title(translate="LIGHTBOX.CHANGE_OWNER.TITLE")
|
||||
|
@ -53,12 +52,12 @@ svg.close.icon.icon-close(href="", title="{{'COMMON.CLOSE' | translate}}")
|
|||
)
|
||||
|
||||
fieldset(ng-if="vm.commentOpen")
|
||||
svg.icon.icon-close(
|
||||
ng-click="vm.commentOpen = false"
|
||||
tg-svg(
|
||||
svg-icon="icon-close",
|
||||
ng-click="vm.commentOpen = false",
|
||||
href="",
|
||||
title="{{'COMMON.CLOSE' | translate}}"
|
||||
)
|
||||
use(xlink:href="#icon-close")
|
||||
label(translate="LIGHTBOX.CHANGE_OWNER.ADD_COMMENT")
|
||||
textarea(ng-model="vm.comment")
|
||||
|
||||
|
|
|
@ -1,9 +1,4 @@
|
|||
a.close(
|
||||
href=""
|
||||
title="{{'COMMON.CLOSE' | translate}}"
|
||||
)
|
||||
svg.icon.icon-close
|
||||
use(xlink:href="#icon-close")
|
||||
tg-lightbox-close
|
||||
|
||||
.content(ng-switch="key")
|
||||
.private-space(ng-switch-when="private-space")
|
||||
|
|
|
@ -1,9 +1,7 @@
|
|||
a.close(href="", title="{{'COMMON.CLOSE' | translate}}")
|
||||
svg.icon.icon-close(title="{{'COMMON.CLOSE' | translate}}")
|
||||
use(xlink:href="#icon-close")
|
||||
tg-lightbox-close
|
||||
|
||||
div.content
|
||||
svg.icon.icon-exclamation
|
||||
use(xlink:href="#icon-exclamation")
|
||||
tg-svg(svg-icon="icon-exclamation")
|
||||
|
||||
h2.title {{'LIGHTBOX.LEAVE_PROJECT_WARNING.TITLE' | translate}}
|
||||
|
||||
|
|
|
@ -1,6 +1,4 @@
|
|||
a.close(href="", title="{{'COMMON.CLOSE' | translate}}")
|
||||
svg.icon.icon-close
|
||||
use(xlink:href="#icon-close")
|
||||
tg-lightbox-close
|
||||
|
||||
.content
|
||||
h2.title(translate="ADMIN.PROJECT_PROFILE.REQUEST_OWNERSHIP_CONFIRMATION_TITLE")
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
svg.close.icon.icon-close(href="", title="{{'COMMON.CLOSE' | translate}}")
|
||||
use(xlink:href="#icon-close")
|
||||
tg-lightbox-close
|
||||
|
||||
div.form
|
||||
h2.title(translate="COMMON.WATCHERS.ADD")
|
||||
fieldset
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<% _.each(tags, function(tag) { %>
|
||||
span(class="tag", style!="<%- tag.style %>")
|
||||
span.tag-name <%- tag.name %>
|
||||
svg.icon.icon-close.remove-tag(title="{{ 'COMMON.TAGS.DELETE' | translate }}")
|
||||
use(xlink:href="#icon-close")
|
||||
a.remove-tag(href="", title="{{'COMMON.TAGS.DELETE' | translate}}")
|
||||
tg-svg(svg-icon="icon-close")
|
||||
<% }); %>
|
||||
|
|
|
@ -4,5 +4,4 @@ input.tag-input(
|
|||
placeholder="{{'COMMON.TAGS.PLACEHOLDER' | translate}}"
|
||||
)
|
||||
span.save.hidden(title="{{'COMMON.SAVE' | translate}}")
|
||||
svg.icon.icon-save
|
||||
use(xlink:href="#icon-save")
|
||||
tg-svg(svg-icon="icon-save")
|
||||
|
|
|
@ -1,11 +1,9 @@
|
|||
.tags-container
|
||||
a(href="#", class="add-tag hidden", title="{{'COMMON.TAGS.ADD' | translate}}")
|
||||
svg.icon.icon-add
|
||||
use(xlink:href="#icon-add")
|
||||
tg-svg(svg-icon="icon-add")
|
||||
span.add-tag-text(translate="COMMON.TAGS.ADD")
|
||||
|
||||
span.add-tag-input
|
||||
input(type="text", placeholder="{{'COMMON.TAGS.PLACEHOLDER' | translate}}", class="tag-input hidden")
|
||||
span.save.hidden(title="{{'COMMON.SAVE' | translate}}")
|
||||
svg.icon.icon-save
|
||||
use(xlink:href="#icon-save")
|
||||
tg-svg(svg-icon="icon-save")
|
|
@ -2,7 +2,7 @@
|
|||
span(class="tag", style!="border-left: 5px solid <%- tag.color %>;")
|
||||
span.tag-name <%- tag.name %>
|
||||
<% if (isEditable) { %>
|
||||
svg.icon.icon-close.remove-tag(title="{{ 'COMMON.TAGS.DELETE' | translate }}")
|
||||
use(xlink:href="#icon-close")
|
||||
a.remove-tag(href="", title="{{'COMMON.TAGS.DELETE' | translate}}")
|
||||
tg-svg(svg-icon="icon-close")
|
||||
<% } %>
|
||||
<% }); %>
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
.preview
|
||||
.actions
|
||||
svg.edit.icon.icon-edit(title="{{'COMMON.WYSIWYG.EDIT_BUTTON' | translate}}")
|
||||
use(xlink:href="#icon-edit")
|
||||
tg-svg.edit(
|
||||
svg-icon="icon-edit",
|
||||
svg-title-translate="COMMON.WYSIWYG.EDIT_BUTTON"
|
||||
)
|
||||
.content.wysiwyg
|
||||
| <%= data %>
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue