conditional backlog joyride step if the user has perms
parent
ef8053ddd6
commit
50db211c86
|
@ -1,126 +1,132 @@
|
|||
joyRides = {
|
||||
dashboard: () ->
|
||||
return [
|
||||
{
|
||||
element: '.project-list > section:not(.ng-hide)',
|
||||
position: 'left',
|
||||
joyride: {
|
||||
title: @translate.instant('JOYRIDE.DASHBOARD.STEP1.TITLE'),
|
||||
text: @translate.instant('JOYRIDE.DASHBOARD.STEP1.TEXT')
|
||||
}
|
||||
},
|
||||
{
|
||||
element: '.working-on-container',
|
||||
position: 'right',
|
||||
joyride: {
|
||||
title: @translate.instant('JOYRIDE.DASHBOARD.STEP2.TITLE'),
|
||||
text: @translate.instant('JOYRIDE.DASHBOARD.STEP2.TEXT')
|
||||
}
|
||||
},
|
||||
{
|
||||
element: '.watching-container',
|
||||
position: 'right',
|
||||
joyride: {
|
||||
title: @translate.instant('JOYRIDE.DASHBOARD.STEP3.TITLE')
|
||||
text: [
|
||||
@translate.instant('JOYRIDE.DASHBOARD.STEP3.TEXT1'),
|
||||
@translate.instant('JOYRIDE.DASHBOARD.STEP3.TEXT2')
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
element: '.project-list .see-more-projects-btn',
|
||||
position: 'bottom',
|
||||
joyride: {
|
||||
title: @translate.instant('JOYRIDE.DASHBOARD.STEP4.TITLE')
|
||||
text: [
|
||||
@translate.instant('JOYRIDE.DASHBOARD.STEP4.TEXT1'),
|
||||
@translate.instant('JOYRIDE.DASHBOARD.STEP4.TEXT2')
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
backlog: () ->
|
||||
return [
|
||||
{
|
||||
element: '.summary',
|
||||
position: 'bottom',
|
||||
joyride: {
|
||||
title: @translate.instant('JOYRIDE.BACKLOG.STEP1.TITLE')
|
||||
text: [
|
||||
@translate.instant('JOYRIDE.BACKLOG.STEP1.TEXT1'),
|
||||
@translate.instant('JOYRIDE.BACKLOG.STEP1.TEXT2')
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
element: '.backlog-table-empty',
|
||||
position: 'bottom',
|
||||
joyride: {
|
||||
title: @translate.instant('JOYRIDE.BACKLOG.STEP2.TITLE')
|
||||
text: @translate.instant('JOYRIDE.BACKLOG.STEP2.TEXT')
|
||||
}
|
||||
},
|
||||
{
|
||||
element: '.sprints',
|
||||
position: 'left',
|
||||
joyride: {
|
||||
title: @translate.instant('JOYRIDE.BACKLOG.STEP3.TITLE')
|
||||
text: @translate.instant('JOYRIDE.BACKLOG.STEP3.TEXT')
|
||||
}
|
||||
},
|
||||
{
|
||||
element: '.new-us',
|
||||
position: 'rigth',
|
||||
joyride: {
|
||||
title: @translate.instant('JOYRIDE.BACKLOG.STEP4.TITLE')
|
||||
text: @translate.instant('JOYRIDE.BACKLOG.STEP4.TEXT')
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
kanban: () ->
|
||||
return [
|
||||
{
|
||||
element: '.kanban-table-inner',
|
||||
position: 'bottom',
|
||||
joyride: {
|
||||
title: @translate.instant('JOYRIDE.KANBAN.STEP1.TITLE')
|
||||
text: @translate.instant('JOYRIDE.KANBAN.STEP1.TEXT')
|
||||
}
|
||||
},
|
||||
{
|
||||
element: '.card-placeholder',
|
||||
position: 'right',
|
||||
joyride: {
|
||||
title: @translate.instant('JOYRIDE.KANBAN.STEP2.TITLE')
|
||||
text: @translate.instant('JOYRIDE.KANBAN.STEP2.TEXT')
|
||||
}
|
||||
},
|
||||
{
|
||||
element: '.icon-plus',
|
||||
position: 'bottom',
|
||||
joyride: {
|
||||
title: @translate.instant('JOYRIDE.KANBAN.STEP3.TITLE')
|
||||
text: [
|
||||
@translate.instant('JOYRIDE.KANBAN.STEP3.TEXT1'),
|
||||
@translate.instant('JOYRIDE.KANBAN.STEP3.TEXT2'),
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
|
||||
class JoyRideService extends taiga.Service
|
||||
@.$inject = [
|
||||
'$translate'
|
||||
'$translate',
|
||||
'tgCheckPermissionsService'
|
||||
]
|
||||
|
||||
constructor: (@translate) ->
|
||||
constructor: (@translate, @checkPermissionsService) ->
|
||||
|
||||
getConfig: () ->
|
||||
return {
|
||||
dashboard: () =>
|
||||
return [
|
||||
{
|
||||
element: '.project-list > section:not(.ng-hide)',
|
||||
position: 'left',
|
||||
joyride: {
|
||||
title: @translate.instant('JOYRIDE.DASHBOARD.STEP1.TITLE'),
|
||||
text: @translate.instant('JOYRIDE.DASHBOARD.STEP1.TEXT')
|
||||
}
|
||||
},
|
||||
{
|
||||
element: '.working-on-container',
|
||||
position: 'right',
|
||||
joyride: {
|
||||
title: @translate.instant('JOYRIDE.DASHBOARD.STEP2.TITLE'),
|
||||
text: @translate.instant('JOYRIDE.DASHBOARD.STEP2.TEXT')
|
||||
}
|
||||
},
|
||||
{
|
||||
element: '.watching-container',
|
||||
position: 'right',
|
||||
joyride: {
|
||||
title: @translate.instant('JOYRIDE.DASHBOARD.STEP3.TITLE')
|
||||
text: [
|
||||
@translate.instant('JOYRIDE.DASHBOARD.STEP3.TEXT1'),
|
||||
@translate.instant('JOYRIDE.DASHBOARD.STEP3.TEXT2')
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
element: '.project-list .see-more-projects-btn',
|
||||
position: 'bottom',
|
||||
joyride: {
|
||||
title: @translate.instant('JOYRIDE.DASHBOARD.STEP4.TITLE')
|
||||
text: [
|
||||
@translate.instant('JOYRIDE.DASHBOARD.STEP4.TEXT1'),
|
||||
@translate.instant('JOYRIDE.DASHBOARD.STEP4.TEXT2')
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
backlog: () =>
|
||||
steps = [
|
||||
{
|
||||
element: '.summary',
|
||||
position: 'bottom',
|
||||
joyride: {
|
||||
title: @translate.instant('JOYRIDE.BACKLOG.STEP1.TITLE')
|
||||
text: [
|
||||
@translate.instant('JOYRIDE.BACKLOG.STEP1.TEXT1'),
|
||||
@translate.instant('JOYRIDE.BACKLOG.STEP1.TEXT2')
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
element: '.backlog-table-empty',
|
||||
position: 'bottom',
|
||||
joyride: {
|
||||
title: @translate.instant('JOYRIDE.BACKLOG.STEP2.TITLE')
|
||||
text: @translate.instant('JOYRIDE.BACKLOG.STEP2.TEXT')
|
||||
}
|
||||
},
|
||||
{
|
||||
element: '.sprints',
|
||||
position: 'left',
|
||||
joyride: {
|
||||
title: @translate.instant('JOYRIDE.BACKLOG.STEP3.TITLE')
|
||||
text: @translate.instant('JOYRIDE.BACKLOG.STEP3.TEXT')
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
if @checkPermissionsService.check('add_us')
|
||||
steps.push({
|
||||
element: '.new-us',
|
||||
position: 'rigth',
|
||||
joyride: {
|
||||
title: @translate.instant('JOYRIDE.BACKLOG.STEP4.TITLE')
|
||||
text: @translate.instant('JOYRIDE.BACKLOG.STEP4.TEXT')
|
||||
}
|
||||
})
|
||||
|
||||
return steps
|
||||
|
||||
kanban: () =>
|
||||
return [
|
||||
{
|
||||
element: '.kanban-table-inner',
|
||||
position: 'bottom',
|
||||
joyride: {
|
||||
title: @translate.instant('JOYRIDE.KANBAN.STEP1.TITLE')
|
||||
text: @translate.instant('JOYRIDE.KANBAN.STEP1.TEXT')
|
||||
}
|
||||
},
|
||||
{
|
||||
element: '.card-placeholder',
|
||||
position: 'right',
|
||||
joyride: {
|
||||
title: @translate.instant('JOYRIDE.KANBAN.STEP2.TITLE')
|
||||
text: @translate.instant('JOYRIDE.KANBAN.STEP2.TEXT')
|
||||
}
|
||||
},
|
||||
{
|
||||
element: '.icon-plus',
|
||||
position: 'bottom',
|
||||
joyride: {
|
||||
title: @translate.instant('JOYRIDE.KANBAN.STEP3.TITLE')
|
||||
text: [
|
||||
@translate.instant('JOYRIDE.KANBAN.STEP3.TEXT1'),
|
||||
@translate.instant('JOYRIDE.KANBAN.STEP3.TEXT2'),
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
get: (name) ->
|
||||
joyRides = @.getConfig()
|
||||
joyRide = joyRides[name].call(this)
|
||||
|
||||
return _.map joyRide, (item) ->
|
||||
|
|
|
@ -9,6 +9,15 @@ describe "tgJoyRideService", ->
|
|||
|
||||
provide.value "$translate", mocks.translate
|
||||
|
||||
_mockCheckPermissionsService = () ->
|
||||
mocks.checkPermissionsService = {
|
||||
check: sinon.stub()
|
||||
}
|
||||
|
||||
mocks.checkPermissionsService.check.returns(true)
|
||||
|
||||
provide.value "tgCheckPermissionsService", mocks.checkPermissionsService
|
||||
|
||||
_inject = (callback) ->
|
||||
inject (_tgJoyRideService_) ->
|
||||
joyRideService = _tgJoyRideService_
|
||||
|
@ -18,6 +27,7 @@ describe "tgJoyRideService", ->
|
|||
module ($provide) ->
|
||||
provide = $provide
|
||||
_mockTranslate()
|
||||
_mockCheckPermissionsService()
|
||||
return null
|
||||
|
||||
_setup = ->
|
||||
|
@ -30,7 +40,7 @@ describe "tgJoyRideService", ->
|
|||
|
||||
it "get joyride by category", () ->
|
||||
example = {
|
||||
element: '.home-project-list',
|
||||
element: '.project-list > section:not(.ng-hide)',
|
||||
position: 'left',
|
||||
joyride: {
|
||||
title: 'test',
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
taiga = @.taiga
|
||||
|
||||
class ChekcPermissionsService
|
||||
@.$inject = [
|
||||
"tgProjectService"
|
||||
]
|
||||
|
||||
constructor: (@projectService) ->
|
||||
|
||||
check: (permission) ->
|
||||
return @projectService.project.get('my_permissions').indexOf(permission) != -1
|
||||
|
||||
angular.module("taigaCommon").service("tgCheckPermissionsService", ChekcPermissionsService)
|
|
@ -0,0 +1,44 @@
|
|||
describe "tgCheckPermissionsService", ->
|
||||
checkPermissionsService = provide = null
|
||||
mocks = {}
|
||||
|
||||
_mockProjectService = () ->
|
||||
mocks.projectService = {
|
||||
project: sinon.stub()
|
||||
}
|
||||
|
||||
provide.value "tgProjectService", mocks.projectService
|
||||
|
||||
_inject = () ->
|
||||
inject (_tgCheckPermissionsService_) ->
|
||||
checkPermissionsService = _tgCheckPermissionsService_
|
||||
|
||||
_mocks = () ->
|
||||
module ($provide) ->
|
||||
provide = $provide
|
||||
_mockProjectService()
|
||||
|
||||
return null
|
||||
|
||||
beforeEach ->
|
||||
module "taigaCommon"
|
||||
_mocks()
|
||||
_inject()
|
||||
|
||||
it "the user has perms", () ->
|
||||
mocks.projectService.project = Immutable.fromJS({
|
||||
my_permissions: ['add_us']
|
||||
})
|
||||
|
||||
perm = checkPermissionsService.check('add_us')
|
||||
|
||||
expect(perm).to.be.true
|
||||
|
||||
it "the user hasn't perms", () ->
|
||||
mocks.projectService.project = Immutable.fromJS({
|
||||
my_permissions: []
|
||||
})
|
||||
|
||||
perm = checkPermissionsService.check('add_us')
|
||||
|
||||
expect(perm).to.be.false
|
Loading…
Reference in New Issue