Skip to content

Commit c57652c

Browse files
authored
Merge pull request #4885 from topcoder-platform/develop
Release 2020-09-10
2 parents d2a32f9 + 16bd8dc commit c57652c

File tree

17 files changed

+104
-17
lines changed

17 files changed

+104
-17
lines changed

.circleci/config.yml

+2-4
Original file line numberDiff line numberDiff line change
@@ -230,6 +230,7 @@ workflows:
230230
filters:
231231
branches:
232232
only:
233+
- milestone-20200917
233234
- develop
234235
# This is alternate dev env for parallel testing
235236
- "build-test":
@@ -238,14 +239,13 @@ workflows:
238239
branches:
239240
only:
240241
- feature-contentful
241-
- hot-fix
242242
# This is alternate dev env for parallel testing
243243
- "build-qa":
244244
context : org-global
245245
filters:
246246
branches:
247247
only:
248-
- hot-fix
248+
- community-app-tests-poc
249249
# This is beta env for production soft releases
250250
- "build-prod-beta":
251251
context : org-global
@@ -260,8 +260,6 @@ workflows:
260260
filters:
261261
branches:
262262
only:
263-
- milestone-v1.3
264-
- milestone-20200910
265263
- develop
266264
# Production builds are exectuted
267265
# when PR is merged to the master

config/default.js

+1
Original file line numberDiff line numberDiff line change
@@ -409,4 +409,5 @@ module.exports = {
409409
TC_EDU_SEARCH_BAR_MAX_RESULTS_EACH_GROUP: 3,
410410
POLICY_PAGES_PATH: '/policy',
411411
GIGS_PAGES_PATH: '/gigs',
412+
START_PAGE_PATH: '/start',
412413
};

package-lock.json

+3-3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/assets/images/gig-blob.svg

+23
Loading

src/assets/images/img-gig-work.png

254 KB
Loading

src/shared/components/Contentful/Modal/index.jsx

+5-1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import { errors } from 'topcoder-react-lib';
1414
import { themr } from 'react-css-super-themr';
1515
import classnames from 'classnames';
1616

17+
import defaultModalTheme from 'components/Leaderboard/ChallengeHistoryModal/styles.scss';
1718
import defaultStyle from './style.scss';
1819

1920
const { fireErrorMessage } = errors;
@@ -102,7 +103,10 @@ class ContentfulModal extends React.Component {
102103
className: classnames(theme.modalTrigger, child.props.className),
103104
}))}
104105
{isOpen && (
105-
<Modal onCancel={this.onCloseModal}>
106+
<Modal
107+
onCancel={this.onCloseModal}
108+
theme={defaultModalTheme}
109+
>
106110
<div
107111
className={theme.dismissButton}
108112
onClick={this.onCloseModal}

src/shared/components/GUIKit/JobListCard/style.scss

+1-1
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@
4949
}
5050

5151
&:first-child {
52-
width: 200px;
52+
width: 250px;
5353
}
5454

5555
&:nth-child(2) {

src/shared/components/Gigs/GigDetails.jsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ export default function GigDetails(props) {
137137
</li>
138138
<li>
139139
<img src={iconLabel2} alt="label 2" />
140-
<div><strong>Subscribe to our <a target="_blank" rel="noreferrer" href="https://www.topcoder.com/community/taas">Gig notifications email.</a>.</strong> We’ll send you a weekly update on gigs available so you don’t miss a beat.</div>
140+
<div><strong>Subscribe to our <a target="_blank" rel="noreferrer" href="https://www.topcoder.com/community/taas">Gig notifications email</a>.</strong> We’ll send you a weekly update on gigs available so you don’t miss a beat.</div>
141141
</li>
142142
<li>
143143
<img src={iconLabel3} alt="label 3" />

src/shared/components/Gigs/style.scss

+3
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,7 @@
142142

143143
img {
144144
margin-right: 16px;
145+
min-width: 40px;
145146
}
146147

147148
&:last-child {
@@ -163,6 +164,7 @@
163164
font-weight: 600;
164165
font-family: Barlow, sans-serif;
165166
margin-top: 20px;
167+
line-height: 20px;
166168
}
167169
}
168170

@@ -189,6 +191,7 @@
189191
.skills {
190192
display: flex;
191193
align-items: center;
194+
line-height: 21px;
192195
/* stylelint-disable */
193196
img {
194197
margin-right: 8px;

src/shared/containers/EDU/Home.jsx

+8
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import DesignTrackIcon from 'assets/images/track-design.svg';
1313
import MMTrackIcon from 'assets/images/track-MM.svg';
1414
import AlgoTrackIcon from 'assets/images/track-ALGO.svg';
1515
import TCTrackIcon from 'assets/images/tc-logo-icon.svg';
16+
import GigWorkTrackIcon from 'assets/images/gig-blob.svg';
1617
// CSS
1718
import homeTheme from './styles/home.scss';
1819

@@ -95,6 +96,13 @@ export default class EDUHome extends React.Component {
9596
</div>
9697
<TrackCards theme={homeTheme} track="QA" />
9798
</div>
99+
<div className={homeTheme.trackWrapp}>
100+
<div className={homeTheme.trackInfos}>
101+
<div className={homeTheme.trackIconGigs}><GigWorkTrackIcon /></div>
102+
<TrackInfoInner track="Gig Work" theme={homeTheme} taxonomy={taxonomy} />
103+
</div>
104+
<TrackCards theme={homeTheme} track="Gig Work" />
105+
</div>
98106
<div className={homeTheme.trackWrapp}>
99107
<div className={homeTheme.trackInfos}>
100108
<div className={homeTheme.trackIconTC}><TCTrackIcon /></div>

src/shared/containers/EDU/Tracks.jsx

+3
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import DS from 'assets/images/img-data-science.png';
2121
import Algo from 'assets/images/img-algorithm.png';
2222
import QA from 'assets/images/img-QA.png';
2323
import Topcoder from 'assets/images/img-Topcoder.png';
24+
import GigWork from 'assets/images/img-gig-work.png';
2425
// Partials
2526
import ResultTabs from './partials/ResultTabs';
2627
// CSS
@@ -33,6 +34,7 @@ const TRACK_BANNER_BACK_COLORS = {
3334
'Competitive Programming': '#FFA45D',
3435
QA: '#8AFB8A',
3536
Topcoder: '#2A2A2A',
37+
'Gig Work': '#ef476f',
3638
};
3739
const TRACK_IMAGES = {
3840
Development: Dev,
@@ -41,6 +43,7 @@ const TRACK_IMAGES = {
4143
'Competitive Programming': Algo,
4244
QA,
4345
Topcoder,
46+
'Gig Work': GigWork,
4447
};
4548

4649
export default class EDUTracks extends React.Component {

src/shared/containers/EDU/styles/home.scss

+8
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,14 @@
181181
height: 71px;
182182
}
183183

184+
.trackIconGigs {
185+
display: flex;
186+
justify-content: center;
187+
align-items: center;
188+
width: 74px;
189+
height: 75px;
190+
}
191+
184192
.trackIconTC {
185193
background-repeat: no-repeat;
186194
background-size: cover;

src/shared/containers/Gigs/RecruitCRMJobs.jsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ class RecruitCRMJobsContainer extends React.Component {
2222
this.state = {
2323
term: '',
2424
page: 0,
25-
sortBy: 'updated_on',
25+
sortBy: 'created_on',
2626
};
2727

2828
this.onSearch = this.onSearch.bind(this);

src/shared/routes/StartPage.jsx

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
/**
2+
* The loader of Gigs page webpack chunks.
3+
*/
4+
import React from 'react';
5+
6+
import LoadingPagePlaceholder from 'components/LoadingPagePlaceholder';
7+
import { AppChunk } from 'topcoder-react-utils';
8+
9+
export default function GigsPagesRoute(props) {
10+
return (
11+
<AppChunk
12+
chunkName="policyPages/chunk"
13+
renderClientAsync={() => import(/* webpackChunkName: "gigsPages/chunk" */ 'containers/GigsPages')
14+
.then(({ default: GigsPagesContainer }) => (
15+
<GigsPagesContainer {...props} />
16+
))
17+
}
18+
renderPlaceholder={() => <LoadingPagePlaceholder />}
19+
/>
20+
);
21+
}

src/shared/routes/index.jsx

+15
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@
33
*/
44

55
import CommunityLoader from 'containers/tc-communities/Loader';
6+
import ContentfulRoute from 'components/Contentful/Route';
67
import Content from 'components/Content';
8+
import Footer from 'components/TopcoderFooter';
79
import React from 'react';
810

911
import {
@@ -103,6 +105,19 @@ function Routes({ communityId }) {
103105
exact
104106
path={`${config.GIGS_PAGES_PATH}/:id?`}
105107
/>
108+
<Route
109+
render={() => (
110+
<React.Fragment>
111+
<ContentfulRoute
112+
baseUrl={config.START_PAGE_PATH}
113+
id="vpcfRkUPoTtxXoEIBvCRl"
114+
/>
115+
<Footer />
116+
</React.Fragment>
117+
)}
118+
exact
119+
path={config.START_PAGE_PATH}
120+
/>
106121
<Topcoder />
107122
</Switch>
108123
</div>

src/shared/services/contentful.js

+2-4
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,11 @@ if (isomorphy.isServerSide()) {
2121
/* eslint-enable global-require */
2222
}
2323

24-
const LOCAL_MODE = Boolean(config.CONTENTFUL.LOCAL_MODE);
25-
2624
// Education Center Taxonomy
2725
const EDU_TAXONOMY_ID = '15caxocitaxyK65K9oSd91';
2826
// The keys for subcategory lists/references
2927
// If need to add new track add its fieldID here to be autopickuped
30-
const EDU_TRACK_KEYS = ['dataScience', 'competitiveProgramming', 'design', 'development', 'qualityAssurance', 'topcoder'];
28+
const EDU_TRACK_KEYS = ['dataScience', 'competitiveProgramming', 'design', 'development', 'qualityAssurance', 'topcoder', 'gigWork'];
3129

3230
const EDU_ARTICLE_TYPES = ['Article', 'Video', 'Forum post'];
3331

@@ -37,7 +35,7 @@ const EDU_ARTICLE_TYPES = ['Article', 'Video', 'Forum post'];
3735

3836
/* Holds the base URL of Community App endpoints that proxy HTTP request to
3937
* Contentful APIs. */
40-
const PROXY_ENDPOINT = `${LOCAL_MODE ? '' : config.URL.APP}/api/cdn/public/contentful`;
38+
const PROXY_ENDPOINT = '/api/cdn/public/contentful';
4139
/* At the client-side only, it holds the cached index of published Contentful
4240
* assets and content. Do not use it directly, use getIndex() function below
4341
* instead (it takes care about updating this when necessary). */

src/shared/utils/contentful.js

+7-2
Original file line numberDiff line numberDiff line change
@@ -122,17 +122,22 @@ export function menuItemBuilder(baseUrl, item) {
122122
export function tracksTreeBuilder(EDUTaxonomy, query) {
123123
const tax = _.isArray(query.tax) ? query.tax : [query.tax];
124124
let id = 0;
125-
return _.sortBy(
125+
const res = _.sortBy(
126126
_.map(EDUTaxonomy, (categories, track) => ({
127127
title: track,
128128
id: id++,
129129
items: _.sortBy(_.map(categories, cat => ({
130-
title: cat.name, id: id++, items: [], track, selected: _.indexOf(tax, cat.name) !== -1,
130+
title: cat.name,
131+
id: id++,
132+
items: [],
133+
track,
134+
selected: _.indexOf(tax, cat.name) !== -1 && track === query.track,
131135
})), ['title']),
132136
selected: query.track === track,
133137
})),
134138
['title'],
135139
);
140+
return res;
136141
}
137142

138143
export default undefined;

0 commit comments

Comments
 (0)