Compare commits
9 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 130fb89c5f | |||
| eeee4d3f45 | |||
| 7f2c8374a4 | |||
| e380dec152 | |||
| 58bf654651 | |||
| ead5370495 | |||
| ce8f8660f3 | |||
| 28fbf3a013 | |||
| 726cd78bd3 |
@@ -18,6 +18,7 @@ const JobPosting = props => {
|
||||
title={props.job_title}
|
||||
validThrough="2020-01-06"
|
||||
applicantLocationRequirements="FR"
|
||||
employmentType = "FULL_TIME"
|
||||
/>
|
||||
|
||||
|
||||
|
||||
@@ -24,10 +24,10 @@ const OgHead = props => {
|
||||
<meta name="twitter:title" content={props.seo_title}/>
|
||||
<meta name="twitter:description" content={props.seo_title}/>
|
||||
<meta name="twitter:image" content={props.image}/>
|
||||
<meta http-equiv='cache-control' content='no-store,no-cache'></meta>
|
||||
<meta http-equiv='expires' content='0'></meta>
|
||||
<meta http-equiv='pragma' content='no-cache'></meta>
|
||||
<link rel="canonical" href={ props.seo_url} />
|
||||
<meta httpEquiv='cache-control' content='no-store,no-cache'></meta>
|
||||
<meta httpEquiv='expires' content='0'></meta>
|
||||
<meta httpEquiv='pragma' content='no-cache'></meta>
|
||||
{/* <link rel="canonical" href={ props.seo_url} /> */}
|
||||
|
||||
</Head>
|
||||
|
||||
|
||||
@@ -210,9 +210,39 @@ class Etape2 extends React.Component {
|
||||
alignItems="center"
|
||||
spacing={2}>
|
||||
<Grid item xs={12} sm={12} md={12} lg={6} lg={6}>
|
||||
|
||||
|
||||
|
||||
{ /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) ?
|
||||
(
|
||||
<Fragment>
|
||||
<input
|
||||
type="file" accept="video/*" capture="camcorder"
|
||||
className={classes.input}
|
||||
style={{ display: 'none' }}
|
||||
id="record-button-file"
|
||||
multiple
|
||||
onChange={this.inputCamRecorderChange}
|
||||
/>
|
||||
<label htmlFor="record-button-file">
|
||||
<Button component="span" className={classes.captureButton} classes={{ root: classes.rootButton }}>
|
||||
<img alt="talents-tube" src='/static/images/capture.svg' className={classes.iconButton} />
|
||||
<Typography align="left" className={classes.textButton}>
|
||||
Je <span className={classes.underlined}>réalise</span> ma vidéo de présentation
|
||||
</Typography>
|
||||
<KeyboardArrowRightIcon className={ classes.InputKeyboardArrowRightIcon }/>
|
||||
</Button>
|
||||
</label>
|
||||
</Fragment>
|
||||
):
|
||||
(
|
||||
|
||||
|
||||
<div className={classes.recorderContainer}>
|
||||
<Recorder uploader={this.props.uploadMediaPres} titreBouton="Remplacer ma vidéo"/>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
</Grid>
|
||||
<Grid item xs={12} sm={12} md={12} lg={6} xl={6}>
|
||||
<div>
|
||||
|
||||
@@ -8,7 +8,7 @@ import { makeStyles } from '@material-ui/styles';
|
||||
import { Button, Typography, Divider, Hidden } from '@material-ui/core';
|
||||
import KeyboardArrowRightIcon from '@material-ui/icons/KeyboardArrowRight';
|
||||
import KeyboardArrowDownIcon from '@material-ui/icons/KeyboardArrowDown';
|
||||
import Loader from '../../components/templates/loader'
|
||||
import LoaderVideo from '../../components/templates/loaderVideo'
|
||||
import Snack from '../../components/atoms/snack';
|
||||
import Snackbar from '@material-ui/core/Snackbar';
|
||||
import { Alert, AlertTitle } from '@material-ui/lab';
|
||||
@@ -191,7 +191,7 @@ class Etape3 extends React.Component {
|
||||
return (
|
||||
<Fragment>
|
||||
{ loading ?
|
||||
<Loader /> :
|
||||
<LoaderVideo /> :
|
||||
<Fragment>
|
||||
{this.AfficherSuccess()}
|
||||
|
||||
|
||||
@@ -321,13 +321,13 @@ const AccountProfile = props => {
|
||||
<DuoIcon className={classes.menuButton}/>
|
||||
: {(user.alias && user.alias != '' && user.alias != 'null')
|
||||
? <a
|
||||
href={publicRuntimeConfig.cvThequeUrl + "talent/" + user.alias}
|
||||
href={publicRuntimeConfig.cvThequeUrl + "/talent/" + user.alias}
|
||||
target="_blank">Voir mon profil TalentsTube
|
||||
</a>
|
||||
: 'Non renseigné'}<br/>
|
||||
<div
|
||||
class="fb-share-button"
|
||||
data-href={publicRuntimeConfig.cvThequeUrl + "talent/" + user.alias}
|
||||
data-href={publicRuntimeConfig.cvThequeUrl + "/talent/" + user.alias}
|
||||
data-layout="button_count"
|
||||
data-size="small">
|
||||
|
||||
@@ -335,7 +335,7 @@ const AccountProfile = props => {
|
||||
:
|
||||
<a
|
||||
target="_blank"
|
||||
href={"https://www.facebook.com/sharer/sharer.php?u=" + publicRuntimeConfig.cvThequeUrl + "talent/" + user.alias + "%2F&src=sdkpreparse"}
|
||||
href={"https://www.facebook.com/sharer/sharer.php?u=" + publicRuntimeConfig.cvThequeUrl + "/talent/" + user.alias + "%2F&src=sdkpreparse"}
|
||||
class="fb-xfbml-parse-ignore"> Partager mon profil
|
||||
</a>
|
||||
</div>
|
||||
|
||||
@@ -160,7 +160,12 @@ class Answer extends Component {
|
||||
|
||||
//TODO:maybe add this two in a single transactionnal saga
|
||||
this.props.updateUserRequest(data)
|
||||
|
||||
//TODO: faire appel à une méthode qui va encoyer le mail a l'entreprise
|
||||
|
||||
// this.props.companyMails.map((user) =>
|
||||
// //TODO Envoyer un mail a chaque user
|
||||
// console.log(user.email)
|
||||
// )
|
||||
this.props.postAdAnswerRequest(
|
||||
{
|
||||
adId: this.props.adId,
|
||||
@@ -308,7 +313,7 @@ class Answer extends Component {
|
||||
/>
|
||||
</form>
|
||||
<div id="F" className={classes.foot}>
|
||||
<Button variant="contained" className={classes.button + ' cypButtonSendApplication'} onClick={this.onSubmit}>Postuler</Button>
|
||||
<Button variant="contained" className={classes.button + ' cypButtonSendApplication'} onClick={this.onSubmit}>Postuler</Button>
|
||||
</div>
|
||||
</section>
|
||||
)
|
||||
|
||||
@@ -257,9 +257,9 @@ function Footer(props) {
|
||||
<Typography gutterBottom color="secondary" component="p" className={classes.textContainer}>
|
||||
02.30.05.06.31
|
||||
</Typography>
|
||||
<Typography gutterBottom color="secondary" component="p" className={classes.textContainer}>
|
||||
{/* <Typography gutterBottom color="secondary" component="p" className={classes.textContainer}>
|
||||
contact@talentstube.com
|
||||
</Typography>
|
||||
</Typography> */}
|
||||
</section>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -605,7 +605,7 @@ class Header extends React.Component {
|
||||
</section>
|
||||
<section className={classes.appBarDesktopSection + ' ' + classes.appBarDesktopSection3}>
|
||||
|
||||
<a href={publicRuntimeConfig.symphonyUrl + "/faire-offre-emploi-video"} className={classes.desktopMenuItem}>
|
||||
<a href={publicRuntimeConfig.symphonyUrl + "/"} className={classes.desktopMenuItem}>
|
||||
<ListItemText primary='Espace recruteurs'>
|
||||
</ListItemText>
|
||||
<ArrowForward className={classes.icon} />
|
||||
|
||||
@@ -247,12 +247,11 @@ const styles = theme => ({
|
||||
},
|
||||
button: {
|
||||
textTransform: 'inherit',
|
||||
marginLeft: theme.spacing(8),
|
||||
marginRight: theme.spacing(8),
|
||||
marginLeft: theme.spacing(1),
|
||||
marginRight: theme.spacing(1),
|
||||
padding: theme.spacing(1.2, 2),
|
||||
color: theme.palette.secondary.main,
|
||||
backgroundColor: theme.palette.primary.important,
|
||||
alignSelf: 'center',
|
||||
},
|
||||
chip: {
|
||||
color: theme.palette.secondary.main,
|
||||
@@ -311,7 +310,7 @@ function OffreDetail(props) {
|
||||
offre.location.gmap_address.formatted_address ? descriptionSEO += ", "+offre.location.gmap_address.formatted_address : ""
|
||||
offre.location.gmap_address.formatted_address ? titleSEO += ", "+offre.location.gmap_address.formatted_address : ""
|
||||
offre.company.brand_name ? titleSEO += " - "+offre.company.brand_name : ""
|
||||
|
||||
titleSEO += " | Talents Tube "
|
||||
return (
|
||||
<Fragment>
|
||||
{/* {offre.public_tag.map((label, index) => {
|
||||
@@ -367,7 +366,21 @@ function OffreDetail(props) {
|
||||
variant="contained"
|
||||
className={classes.button + ' cypButtonApply'}
|
||||
>Postuler</Button>
|
||||
|
||||
</Link>
|
||||
|
||||
|
||||
)}
|
||||
{!!!offre.is_promoted && (
|
||||
<Link href={`/Entreprise/${offre.company.id}-${_.kebabCase(offre.company.brand_name)}`} >
|
||||
<Button
|
||||
variant="contained"
|
||||
className={classes.button + ' cypButtonApply'}
|
||||
>Découvrir</Button>
|
||||
|
||||
</Link>
|
||||
|
||||
|
||||
)}
|
||||
</section>
|
||||
</Hidden>
|
||||
|
||||
@@ -51,17 +51,17 @@ export default function SocialShare(props) {
|
||||
|
||||
return (
|
||||
<div className={classes.root}>
|
||||
<a href={"https://www.facebook.com/sharer/sharer.php?u=" + encodeURIComponent(props.url)}>
|
||||
<a href={"https://www.facebook.com/sharer/sharer.php?u=" + encodeURIComponent(props.url)} target="_blank">
|
||||
<Icon className={clsx(classes.icon, classes.FacebookIcon, 'fab fa-facebook-f')} color="secondary" />
|
||||
</a>
|
||||
<a href={"http://twitter.com/share?url=" + encodeURIComponent(props.url)}>
|
||||
<a href={"http://twitter.com/share?url=" + encodeURIComponent(props.url)} target="_blank">
|
||||
<Icon className={clsx(classes.icon, classes.TwitterIcon, 'fab fa-twitter')} color="secondary" />
|
||||
</a>
|
||||
<a href={"https://www.linkedin.com/shareArticle?mini=true&url=" + encodeURIComponent(props.url + "&title=Talent's Tube")}>
|
||||
<a href={"https://www.linkedin.com/shareArticle?mini=true&url=" + encodeURIComponent(props.url + "&title=Talent's Tube")} target="_blank">
|
||||
<Icon className={clsx(classes.icon, classes.LinkedinIcon, 'fab fa-linkedin-in')} color="secondary" />
|
||||
</a>
|
||||
{/* change because of https://github.com/zeit/next.js/blob/master/errors/invalid-href-passed.md */}
|
||||
<a href={"mailto:?subject=Offre d'emploi Talent's Tube&body=Regardez cette offre : " + props.url} >
|
||||
<a href={"mailto:?subject=Offre d'emploi Talent's Tube&body=Regardez cette offre : " + props.url} target="_blank"s>
|
||||
<Icon className={clsx(classes.icon, classes.MailIcon, 'fas fa-envelope')} color="secondary" />
|
||||
</a>
|
||||
</div>
|
||||
|
||||
@@ -20,7 +20,7 @@ class Loader extends React.Component {
|
||||
render() {
|
||||
const { classes } = this.props;
|
||||
return (
|
||||
<div className={classes.loader + ' ' + 'alert alert-info'}><CircularProgress color="primary" />Chargement... <br/>Le temps de chargement peut varier de quelques secondes à <b>plusieurs minutes</b> en fonction de la qualité de votre connexion internet.<br/></div>
|
||||
<div className={classes.loader + ' ' + 'alert alert-info'}><CircularProgress color="primary" />Chargement... </div>
|
||||
)
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
import React, { Fragment } from 'react'
|
||||
import CircularProgress from '@material-ui/core/CircularProgress'
|
||||
import { withStyles } from '@material-ui/core/styles'
|
||||
const styles = theme => ({
|
||||
loader: {
|
||||
display: 'flex',
|
||||
flexDirection: 'column',
|
||||
alignItems: 'center',
|
||||
textAlign: 'center',
|
||||
justifyContent: 'center',
|
||||
fontFamily: 'Dosis',
|
||||
fontWeight: '500',
|
||||
fontSize: '1em',
|
||||
padding: theme.spacing(6,0),
|
||||
color: theme.palette.primary.main,
|
||||
},
|
||||
})
|
||||
|
||||
class LoaderVideo extends React.Component {
|
||||
render() {
|
||||
const { classes } = this.props;
|
||||
return (
|
||||
<div className={classes.loader + ' ' + 'alert alert-info'}><CircularProgress color="primary" />Chargement... <br/>Le temps de chargement peut varier de quelques secondes à <b>plusieurs minutes</b> en fonction de la qualité de votre connexion internet.<br/></div>
|
||||
)
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
export default withStyles(styles)(LoaderVideo)
|
||||
+12
-3
@@ -40,10 +40,18 @@ module.exports = withPlugins(
|
||||
}],
|
||||
[{
|
||||
publicRuntimeConfig: {
|
||||
symphonyUrl: 'https://pp.talentstube.com',
|
||||
//symphonyUrl: 'http://localhost/app_dev.php',
|
||||
//blogUrl: 'https://blog.talentstube.com',
|
||||
//frontServerUrl: 'http://localhost:3000',
|
||||
//cvThequeUrl: 'https://recruteur.talentstube.com',
|
||||
//symphonyUrl: 'https://recruteur.talentstube.com',
|
||||
//blogUrl: 'https://blog.talentstube.com',
|
||||
//frontServerUrl: 'https://www.talentstube.com',
|
||||
//cvThequeUrl: 'https://recruteur.talentstube.com',
|
||||
symphonyUrl: 'https://pp.talentstube.com/',
|
||||
blogUrl: 'https://blog.talentstube.com',
|
||||
frontServerUrl: 'https://pp.app.talentstube.com',
|
||||
cvThequeUrl: 'https://cvtheque.talentstube.com/',
|
||||
frontServerUrl: 'https://pp.app.talentstube.com/',
|
||||
cvThequeUrl: 'https://recruteur.talentstube.com',
|
||||
adListDefaultUrl: '/statique/images/default/default_picture_company.svg',
|
||||
cachedMediaUrl: '/media/cache/profile_thumb/uploads/img/',
|
||||
postedContentUrl: '/uploads/img/',
|
||||
@@ -52,6 +60,7 @@ module.exports = withPlugins(
|
||||
"siteKey": "6LdyqLwUAAAAADKI5uC7d5W9VqVgzd8VEmMU2Yi-"
|
||||
},
|
||||
applicationServerPublicKey: 'BNFyiyPiLH97Dgc0m1vXluUNaCN6y3Hkgd4YcqS2lVkP8my3tq2D5gM5g7cY6R4VxC7GljSzkLRu+k+oO+2TtjU='
|
||||
//applicationServerPublicKey: 'BG2lV673DvB67dzEwX9GKfds3sXaEdtZo2oWO1cO2xUdTJAFZ_rV_UrP1nHQz-F8LJNO9HxG0kmQRIb54JL1ZCA'
|
||||
}
|
||||
}]
|
||||
],
|
||||
|
||||
@@ -278,8 +278,8 @@ const styles = theme => ({
|
||||
},
|
||||
button: {
|
||||
textTransform: 'inherit',
|
||||
marginLeft: theme.spacing(4),
|
||||
marginRight: theme.spacing(4),
|
||||
marginLeft: theme.spacing(1),
|
||||
marginRight: theme.spacing(1),
|
||||
padding: theme.spacing(1.2, 2),
|
||||
color: theme.palette.secondary.main,
|
||||
backgroundColor: theme.palette.primary.important,
|
||||
@@ -415,6 +415,7 @@ class Entreprise extends React.Component {
|
||||
:
|
||||
(<Chip label={nbOffre} className={classes.chip + ' ' + classes.chipHeader} />)
|
||||
}
|
||||
|
||||
{/* ville */}
|
||||
</div>
|
||||
</div>
|
||||
@@ -423,6 +424,13 @@ class Entreprise extends React.Component {
|
||||
className={classes.button}
|
||||
onClick={() => Router.push(`/Reponse?companyId=${company.id}`)}
|
||||
>Candidature spontanée</Button>
|
||||
<Link href="#discover" >
|
||||
<Button
|
||||
variant="contained"
|
||||
className={classes.button + ' cypButtonApply'}
|
||||
>Offres</Button>
|
||||
|
||||
</Link>
|
||||
</section>
|
||||
</Hidden>
|
||||
{company.presentation_video && <VideoVimeo videoId={Ar.last(_.split(company.presentation_video.cdn_url, '/'))} autoplay='1' />}
|
||||
@@ -504,6 +512,13 @@ class Entreprise extends React.Component {
|
||||
className={classes.button}
|
||||
onClick={() => Router.push(`/Reponse?companyId=${company.id}`)}
|
||||
>Candidature spontanée</Button>
|
||||
<Link href="#discover" >
|
||||
<Button
|
||||
variant="contained"
|
||||
className={classes.button + ' cypButtonApply'}
|
||||
>Offres</Button>
|
||||
|
||||
</Link>
|
||||
<Typography className={classes.contentCondition}>
|
||||
ou
|
||||
</Typography>
|
||||
|
||||
@@ -9,7 +9,7 @@ import { fetchJobRequest } from '../actions/ads'
|
||||
import { fetchCompanyRequest } from '../actions/companies'
|
||||
import { fetchCurrentUserRequest } from '../actions/user'
|
||||
import { uploadMedia } from '../actions/media'
|
||||
import Loader from './../components/templates/loader'
|
||||
import LoaderVideo from './../components/templates/loaderVideo'
|
||||
import Answer from '../components/organisms/Answer'
|
||||
import LayoutBack from '../components/templates/LayoutBack'
|
||||
import { withStyles } from '@material-ui/core/styles'
|
||||
@@ -286,7 +286,7 @@ class Reponse extends React.Component {
|
||||
</Head>
|
||||
{/* https://codesandbox.io/s/ii0us */}
|
||||
{ loading ?
|
||||
<Loader /> :
|
||||
<LoaderVideo /> :
|
||||
<Fragment>
|
||||
|
||||
<section className={classes.headerContainer}>
|
||||
@@ -407,7 +407,8 @@ class Reponse extends React.Component {
|
||||
(
|
||||
<Answer mediaId={!!this.props.media && this.props.media.id}
|
||||
companyId={!!offre.company ? offre.company.id : !!company.brand_name ? company.id : null}
|
||||
adId={offre.id}>
|
||||
adId={offre.id}
|
||||
>
|
||||
</Answer>
|
||||
)}
|
||||
<Snack variant="error" message={!!!_.isEmpty(this.state.errors) && this.state.errors.message }
|
||||
|
||||
@@ -65,13 +65,16 @@ class VerifyEmail extends Component {
|
||||
<div className={classes.container}>
|
||||
<Typography gutterBottom align="center" className={classes.title}>
|
||||
Consultez vos e-mails
|
||||
</Typography>
|
||||
</Typography>
|
||||
<Typography gutterBottom align="left" className={classes.text}>
|
||||
Un e-mail a été envoyé à l'adresse <span className={classes.email}>{email}</span>
|
||||
</Typography>
|
||||
<Typography gutterBottom align="left" className={classes.text}>
|
||||
Cliquez sur le lien dans l'e-mail que nous vous avons envoyé pour activer votre compte.
|
||||
</Typography>
|
||||
</Typography>
|
||||
<Typography gutterBottom align="left" className={classes.text}>
|
||||
N'oubliez pas de consulter vos spams, si vous ne trouvez pas le lien d'activation dans votre boite de réception.
|
||||
</Typography>
|
||||
<section className={classes.bottomContainer}>
|
||||
<Typography gutterBottom align="center" className={classes.bottomText}>
|
||||
Cliquez sur suivant pour continuer votre candidature
|
||||
@@ -83,7 +86,7 @@ class VerifyEmail extends Component {
|
||||
onClick={() => Router.push('/Login')}
|
||||
>
|
||||
Suivant
|
||||
</Button>
|
||||
</Button>
|
||||
</section>
|
||||
</div>
|
||||
</Layout>
|
||||
|
||||
Reference in New Issue
Block a user