Skip to content

Commit a6d6026

Browse files
author
vikasrohit
authored
Merge pull request #3342 from appirio-tech/dev
Production release for Connect 2.4.15
2 parents 00cd6fb + e49e361 commit a6d6026

File tree

72 files changed

+8723
-6815
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

72 files changed

+8723
-6815
lines changed

package-lock.json

+7,279-6,311
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/actions/loadUser.js

+18-2
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,11 @@ import {
99
ROLE_CONNECT_COPILOT,
1010
ROLE_TOPCODER_USER,
1111
ROLE_CONNECT_MANAGER,
12-
ROLE_CONNECT_ADMIN
12+
ROLE_CONNECT_ADMIN,
13+
ROLE_ACCOUNT_EXECUTIVE,
14+
ROLE_BUSINESS_DEVELOPMENT_REPRESENTATIVE,
15+
ROLE_PROGRAM_MANAGER,
16+
ROLE_PRESALES, ROLE_PROJECT_MANAGER, ROLE_SOLUTION_ARCHITECT
1317
} from '../config/constants'
1418
import { getFreshToken, configureConnector, decodeToken } from 'tc-accounts'
1519
import { getUserProfile } from '../api/users'
@@ -55,7 +59,19 @@ export function loadUserSuccess(dispatch, token) {
5559
currentUser = _.assign(currentUser, profile)
5660
// determine user role
5761
let userRole
58-
if (_.indexOf(currentUser.roles, ROLE_ADMINISTRATOR) > -1) {
62+
if (_.indexOf(currentUser.roles, ROLE_BUSINESS_DEVELOPMENT_REPRESENTATIVE) > -1) {
63+
userRole = ROLE_BUSINESS_DEVELOPMENT_REPRESENTATIVE
64+
} else if (_.indexOf(currentUser.roles, ROLE_PRESALES) > -1) {
65+
userRole = ROLE_PRESALES
66+
} else if (_.indexOf(currentUser.roles, ROLE_ACCOUNT_EXECUTIVE) > -1) {
67+
userRole = ROLE_ACCOUNT_EXECUTIVE
68+
} else if (_.indexOf(currentUser.roles, ROLE_PROGRAM_MANAGER) > -1) {
69+
userRole = ROLE_PROGRAM_MANAGER
70+
} else if (_.indexOf(currentUser.roles, ROLE_PROJECT_MANAGER) > -1) {
71+
userRole = ROLE_PROJECT_MANAGER
72+
} else if (_.indexOf(currentUser.roles, ROLE_SOLUTION_ARCHITECT) > -1) {
73+
userRole = ROLE_SOLUTION_ARCHITECT
74+
} else if (_.indexOf(currentUser.roles, ROLE_ADMINISTRATOR) > -1) {
5975
userRole = ROLE_ADMINISTRATOR
6076
} else if (_.indexOf(currentUser.roles, ROLE_CONNECT_ADMIN) > -1) {
6177
userRole = ROLE_CONNECT_ADMIN

src/components/AssetsLibrary/FilesGridView.jsx

+23
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import DeleteFileLinkModal from '../LinksMenu/DeleteFileLinkModal'
1010
import EditFileAttachment from '../LinksMenu/EditFileAttachment'
1111
import SubFolder from './SubFolder'
1212
import ItemOperations from './ItemOperations'
13+
import UserTooltip from '../User/UserTooltip'
1314

1415
import FolderIcon from '../../assets/icons/v.2.5/icon-folder-small.svg'
1516

@@ -28,6 +29,7 @@ const FilesGridView = ({
2829
title,
2930
selectedUsers,
3031
onAddAttachment,
32+
assetsMembers,
3133
isSharingAttachment,
3234
discardAttachments,
3335
onChangePermissions,
@@ -78,6 +80,7 @@ const FilesGridView = ({
7880
link={ subFolderContent }
7981
renderLink={ renderLink }
8082
goBack={goBack}
83+
assetsMembers={assetsMembers}
8184
onDeletePostAttachment={onDeletePostAttachment}
8285
loggedInUser={loggedInUser}
8386
formatModifyDate={formatModifyDate}
@@ -99,6 +102,7 @@ const FilesGridView = ({
99102
<li styleName="assets-gridview-header" key="assets-gridview-header">
100103
<div styleName="flex-item-title item-type">Type</div>
101104
<div styleName="flex-item-title item-name">Name</div>
105+
<div styleName="flex-item-title item-created-by">Created By</div>
102106
<div styleName="flex-item-title item-modified">Modified</div>
103107
<div styleName="flex-item-title item-action"/>
104108
</li>
@@ -119,12 +123,22 @@ const FilesGridView = ({
119123
const canEdit = `${link.createdBy}` === `${loggedInUser.userId}`
120124

121125
const changeSubFolder = () => onChangeSubFolder(link)
126+
const owner = _.find(assetsMembers, m => m.userId === _.parseInt(link.createdBy))
122127

123128
if (Array.isArray(link.children) && link.children.length > 0) {
124129
return (
125130
<li styleName="assets-gridview-row" onClick={changeSubFolder} key={'assets-gridview-folder-' + idx}>
126131
<div styleName="flex-item item-type"><FolderIcon /></div>
127132
<div styleName="flex-item item-name hand"><p>{formatFolderTitle(link.title)}</p></div>
133+
<div styleName="flex-item item-created-by">
134+
{!owner && (<div className="user-block txt-italic">Unknown</div>)}
135+
{owner && (
136+
<div className="spacing">
137+
<div className="user-block">
138+
<UserTooltip usr={owner} id={idx} size={35} />
139+
</div>
140+
</div>)}
141+
</div>
128142
<div styleName="flex-item item-modified">{formatModifyDate(link)}</div>
129143
<div styleName="flex-item item-action"/>
130144
</li>)
@@ -161,6 +175,15 @@ const FilesGridView = ({
161175
<img width={42} height={42} src={iconPath} />
162176
</div>
163177
<div styleName="flex-item item-name"><p>{renderLink(link)}</p></div>
178+
<div styleName="flex-item item-created-by">
179+
{!owner && (<div className="user-block txt-italic">Unknown</div>)}
180+
{owner && (
181+
<div className="spacing">
182+
<div className="user-block">
183+
<UserTooltip usr={owner} id={idx} size={35} />
184+
</div>
185+
</div>)}
186+
</div>
164187
<div styleName="flex-item item-modified">{formatModifyDate(link)}</div>
165188
<div styleName="flex-item item-action">
166189
{canEdit && (

src/components/AssetsLibrary/GridView.scss

+8-1
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@
8585
}
8686
}
8787

88-
.item-modified {
88+
.item-modified, .item-created-by {
8989
-webkit-box-flex: 0;
9090
-ms-flex: none;
9191
flex: none;
@@ -134,4 +134,11 @@
134134

135135
.assets-gridview-container-active {
136136
position: relative;
137+
}
138+
139+
:global {
140+
.user-block .tooltip-container {
141+
text-align: left;
142+
line-height: 20px;
143+
}
137144
}

src/components/AssetsLibrary/LinksGridView.jsx

+27-1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import DeleteLinkModal from '../LinksMenu/DeleteLinkModal'
88
import EditLinkModal from '../LinksMenu/EditLinkModal'
99
import SubFolder from './SubFolder'
1010
import ItemOperations from './ItemOperations'
11+
import UserTooltip from '../User/UserTooltip'
1112

1213
import FolderIcon from '../../assets/icons/v.2.5/icon-folder-small.svg'
1314
import LinkIcon from '../../assets/icons/link-12.svg'
@@ -28,6 +29,7 @@ const LinksGridView = ({
2829
title,
2930
formatModifyDate,
3031
formatFolderTitle,
32+
assetsMembers,
3133
}) => {
3234
const renderLink = (link) => {
3335
if (link.onClick) {
@@ -58,8 +60,9 @@ const LinksGridView = ({
5860
link={ subFolderContent }
5961
renderLink={ renderLink }
6062
goBack={goBack}
61-
formatModifyDate={formatModifyDate}
63+
assetsMembers={assetsMembers}
6264
isLinkSubFolder
65+
formatModifyDate={formatModifyDate}
6366
/>)}
6467
{(!subFolderContent) && (
6568
<div styleName={cn({'assets-gridview-container-active': (linkToEdit >= 0 || linkToDelete >= 0)}, '')}>
@@ -69,6 +72,7 @@ const LinksGridView = ({
6972
<li styleName="assets-gridview-header" key="assets-gridview-header">
7073
<div styleName="flex-item-title item-type">Type</div>
7174
<div styleName="flex-item-title item-name">Name</div>
75+
<div styleName="flex-item-title item-created-by">Created By</div>
7276
<div styleName="flex-item-title item-modified">Modified</div>
7377
<div styleName="flex-item-title item-action"/>
7478
</li>
@@ -87,12 +91,24 @@ const LinksGridView = ({
8791
const onEditCancel = () => onEditIntent(-1)
8892
const handleEditClick = () => onEditIntent(idx)
8993
const changeSubFolder = () => onChangeSubFolder(link)
94+
const owner = _.find(assetsMembers, m => m.userId === _.parseInt(link.createdBy))
9095

9196
if (Array.isArray(link.children) && link.children.length > 0) {
9297
return (
9398
<li styleName="assets-gridview-row" onClick={changeSubFolder} key={'assets-gridview-folder-' + idx}>
9499
<div styleName="flex-item item-type"><FolderIcon /></div>
95100
<div styleName="flex-item item-name hand"><p>{formatFolderTitle(link.title)}</p></div>
101+
<div styleName="flex-item item-created-by">
102+
{!owner && !link.createdBy && (<div className="user-block"></div>)}
103+
{!owner && link.createdBy !== 'CoderBot' && (<div className="user-block txt-italic">Unknown</div>)}
104+
{!owner && link.createdBy === 'CoderBot' && (<div className="user-block">CoderBot</div>)}
105+
{owner && (
106+
<div className="spacing">
107+
<div className="user-block">
108+
<UserTooltip usr={owner} id={idx} size={35} />
109+
</div>
110+
</div>)}
111+
</div>
96112
<div styleName="flex-item item-modified">{formatModifyDate(link)}</div>
97113
<div styleName="flex-item item-action"/>
98114
</li>)
@@ -119,6 +135,16 @@ const LinksGridView = ({
119135
<li styleName="assets-gridview-row" key={'assets-gridview-item-' +idx}>
120136
<div styleName="flex-item item-type"><LinkIcon/></div>
121137
<div styleName="flex-item item-name"><p>{renderLink(link)}</p></div>
138+
<div styleName="flex-item item-created-by">
139+
{!owner && !link.createdBy && (<div className="user-block"></div>)}
140+
{!owner && link.createdBy && (<div className="user-block txt-italic">Unknown</div>)}
141+
{owner && (
142+
<div className="spacing">
143+
<div className="user-block">
144+
<UserTooltip usr={owner} id={idx} size={35} />
145+
</div>
146+
</div>)}
147+
</div>
122148
<div styleName="flex-item item-modified">{formatModifyDate(link)}</div>
123149
<div styleName="flex-item item-action">
124150
{(canEdit || canDelete) && (

src/components/AssetsLibrary/SubFolder.jsx

+17-2
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
import React from 'react'
22
import PropTypes from 'prop-types'
3+
import _ from 'lodash'
34
import cn from 'classnames'
45

56
import DeleteFileLinkModal from '../LinksMenu/DeleteFileLinkModal'
67
import ItemOperations from './ItemOperations'
8+
import UserTooltip from '../User/UserTooltip'
79
import FolderIcon from '../../assets/icons/v.2.5/icon-folder-small.svg'
810

911
import './GridView.scss'
@@ -54,8 +56,9 @@ class SubFolder extends React.Component {
5456
}
5557

5658
render() {
57-
const { link, renderLink, goBack, formatModifyDate, isLinkSubFolder } = this.props
59+
const { link, renderLink, goBack, formatModifyDate, isLinkSubFolder, assetsMembers } = this.props
5860
const { linkToDelete } = this.state
61+
5962
return (
6063
<div styleName={cn({'assets-gridview-container-active': (linkToDelete >= 0)}, '')}>
6164
{(linkToDelete >= 0) && <div styleName="assets-gridview-modal-overlay"/>}
@@ -64,17 +67,20 @@ class SubFolder extends React.Component {
6467
<li styleName="assets-gridview-header" key="assets-gridview-header">
6568
<div styleName="flex-item-title item-type">Type</div>
6669
<div styleName="flex-item-title item-name">Name</div>
70+
<div styleName="flex-item-title item-created-by">Created By</div>
6771
<div styleName="flex-item-title item-modified">Modified</div>
6872
<div styleName="flex-item-title item-action"/>
6973
</li>
7074
<li styleName="assets-gridview-row" key="assets-gridview-subfolder" onClick={goBack}>
7175
<div styleName="flex-item item-type"><FolderIcon /></div>
7276
<div styleName="flex-item item-name hand">..</div>
77+
<div styleName="flex-item item-created-by"/>
7378
<div styleName="flex-item item-modified"/>
7479
<div styleName="flex-item item-action"/>
7580
</li>
7681
{
7782
link.children.map((childLink, i) => {
83+
const owner = _.find(assetsMembers, m => m.userId === _.parseInt(childLink.createdBy))
7884
if (linkToDelete === i) {
7985
return (
8086
<li styleName="delete-confirmation-modal" key={'delete-confirmation-post-attachment-' + i}>
@@ -100,6 +106,16 @@ class SubFolder extends React.Component {
100106
return (<li styleName="assets-gridview-row" key={`childlink-${childLink.address}-${i}`}>
101107
<div styleName="flex-item item-type"><img width={42} height={42} src={ iconPath } /></div>
102108
<div styleName="flex-item item-name"><p>{renderLink(childLink)}</p></div>
109+
<div styleName="flex-item item-created-by">
110+
{!owner && childLink.createdBy !== 'CoderBot' && (<div className="user-block txt-italic">Unknown</div>)}
111+
{!owner && childLink.createdBy === 'CoderBot' && (<div className="user-block">CoderBot</div>)}
112+
{owner && (
113+
<div className="spacing">
114+
<div className="user-block">
115+
<UserTooltip usr={owner} id={i} size={35} />
116+
</div>
117+
</div>)}
118+
</div>
103119
<div styleName="flex-item item-modified">{formatModifyDate(childLink)}</div>
104120
<div styleName="flex-item item-action">
105121
{childLink.deletable && this.hasAccess(childLink.createdBy) && (
@@ -123,7 +139,6 @@ SubFolder.propTypes = {
123139
onDeletePostAttachment: PropTypes.func,
124140
goBack: PropTypes.func.isRequired,
125141
loggedInUser: PropTypes.object,
126-
formatModifyDate: PropTypes.func.isRequired,
127142
}
128143

129144
export default SubFolder

src/components/Footer/Footer.jsx

+5-4
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,11 @@ require('./Footer.scss')
1010
const Footer = () => {
1111
const currentYear = moment().format('YYYY')
1212
const otherNavigationItems = [
13-
{img: '', text: 'About', link: 'https://www.topcoder.com/about/', target: '_blank'},
14-
{img: '', text: 'Contact us', link: 'https://www.topcoder.com/contact/', target: '_blank'},
15-
{img: '', text: 'Privacy', link: 'https://www.topcoder.com/community/how-it-works/privacy-policy/', target: '_blank'},
16-
{img: '', text: 'Terms', link: 'https://connect.topcoder.com/terms', target: '_blank'}
13+
{img: '', text: 'About', link: 'https://www.topcoder.com/company/', target: '_blank'},
14+
{img: '', text: 'Contact us', link: 'https://www.topcoder.com/contact-us/', target: '_blank'},
15+
{img: '', text: 'Privacy', link: 'https://www.topcoder.com/privacy-policy/', target: '_blank'},
16+
{img: '', text: 'Terms', link: 'https://connect.topcoder.com/terms', target: '_blank'},
17+
{img: '', text: 'Our Process', link: 'https://www.topcoder.com/solutions/how-it-works/', target: '_blank'}
1718
]
1819
const isProjectDetails = /projects\/\d+/.test(window.location.pathname)
1920
const isCreateProject = window.location.pathname.startsWith(NEW_PROJECT_PATH)

src/components/FooterV2/FooterV2.jsx

+3-2
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,11 @@ import './FooterV2.scss'
55
const FooterV2 = () => (
66
<div className="footer-v2">
77
<ul className="footer-links">
8-
<li><a href="https://www.topcoder.com/about/" target="_blank">About</a></li>
9-
<li><a href="https://www.topcoder.com/contact/" target="_blank">Contact us</a></li>
8+
<li><a href="https://www.topcoder.com/company/" target="_blank">About</a></li>
9+
<li><a href="https://www.topcoder.com/contact-us/" target="_blank">Contact us</a></li>
1010
<li><a href="https://www.topcoder.com/community/how-it-works/privacy-policy/" target="_blank">Privacy</a></li>
1111
<li><a href="https://connect.topcoder.com/terms" target="_blank">Terms</a></li>
12+
<li><a href="https://www.topcoder.com/solutions/how-it-works/" target="_blank">Our Process</a></li>
1213
</ul>
1314
<div className="footer-copyright">
1415
© Topcoder { moment().format('YYYY') }

0 commit comments

Comments
 (0)