@@ -9,13 +9,17 @@ import {
99 filterTopicAndPostChangedNotifications ,
1010 filterFileAndLinkChangedNotifications ,
1111} from '../../../../routes/notifications/helpers/notifications'
12+ import { getProjectRoleForCurrentUser } from '../../../../helpers/projectHelper'
1213import ProjectListTimeSortColHeader from './ProjectListTimeSortColHeader'
1314import ProjectListFilterColHeader from './ProjectListFilterColHeader'
1415import GridView from '../../../../components/Grid/GridView'
1516import UserTooltip from '../../../../components/User/UserTooltip'
1617import {
1718 PROJECTS_LIST_PER_PAGE , SORT_OPTIONS , PROJECT_STATUS_COMPLETED , DATE_TO_USER_FIELD_MAP , PHASE_STATUS_REVIEWED ,
18- PHASE_STATUS_ACTIVE , PROJECT_STATUS_ACTIVE , TOOLTIP_DEFAULT_DELAY
19+ PHASE_STATUS_ACTIVE , PROJECT_STATUS_ACTIVE , TOOLTIP_DEFAULT_DELAY ,
20+ ROLE_ADMINISTRATOR , ROLE_CONNECT_ADMIN ,
21+ PROJECT_ROLE_COPILOT , PROJECT_ROLE_MANAGER , PROJECT_ROLE_PROGRAM_MANAGER ,
22+ PROJECT_ROLE_PROJECT_MANAGER , PROJECT_ROLE_SOLUTION_ARCHITECT ,
1923} from '../../../../config/constants'
2024import { getProjectTemplateByKey } from '../../../../helpers/templates'
2125import TextTruncate from 'react-text-truncate'
@@ -36,7 +40,7 @@ const EnhancedProjectStatus = editableProjectStatus(ProjectStatus)
3640const ProjectsGridView = props => {
3741 const { projects, members, totalCount, criteria, pageNum, sortHandler, currentUser, onPageChange,
3842 error, isLoading, infiniteAutoload, setInfiniteAutoload, projectsStatus, onChangeStatus,
39- applyFilters, projectTemplates, notifications, newProjectLink, setFilter, isCustomer , callInviteRequest,
43+ applyFilters, projectTemplates, notifications, newProjectLink, setFilter, callInviteRequest,
4044 isAcceptingInvite } = props
4145
4246 const currentSortField = _ . get ( criteria , 'sort' , '' )
@@ -237,7 +241,17 @@ const ProjectsGridView = props => {
237241 sortable : false ,
238242 classes : 'item-status' ,
239243 renderText : item => {
240- const canEdit = item . status !== PROJECT_STATUS_COMPLETED && ! isCustomer
244+ const isSuperUser = _ . intersection ( [ ROLE_ADMINISTRATOR , ROLE_CONNECT_ADMIN ] , currentUser . roles ) . length > 0
245+ const userProjectRole = getProjectRoleForCurrentUser ( { project : item , currentUserId : currentUser . userId } )
246+ const statusEditRoles = [
247+ PROJECT_ROLE_COPILOT ,
248+ PROJECT_ROLE_MANAGER ,
249+ PROJECT_ROLE_PROGRAM_MANAGER ,
250+ PROJECT_ROLE_PROJECT_MANAGER ,
251+ PROJECT_ROLE_SOLUTION_ARCHITECT
252+ ]
253+ const canEdit = item . status !== PROJECT_STATUS_COMPLETED && ( isSuperUser || _ . includes ( statusEditRoles , userProjectRole ) )
254+
241255 const hasReviewedOrActivePhases = ! ! _ . find ( item . phases , ( phase ) => _ . includes ( [ PHASE_STATUS_REVIEWED , PHASE_STATUS_ACTIVE ] , phase . status ) )
242256 const isProjectActive = item . status === PROJECT_STATUS_ACTIVE
243257 const isV3Project = item . version === 'v3'
0 commit comments