Compare commits

...

18 Commits

Author SHA1 Message Date
llaniau c3ced21cce US466 : Chgt postuler en envoyer sa candidature 2020-10-07 16:16:00 +02:00
llaniau a156050184 Import icon watch later 2020-10-05 23:05:23 +02:00
llaniau 535069bb64 Texte temp de travail en francais 2020-10-05 18:06:39 +02:00
llaniau e4603f4ca8 Amélioration employmentType 2020-10-05 17:53:58 +02:00
llaniau cab481cd2f Amélioration job posting 2020-10-05 17:21:00 +02:00
llaniau 34d1384fb7 Job Posting ajout dept, ville, ... 2020-10-05 14:05:16 +02:00
llaniau 4b2fabd4b4 Amelioration Parcours talent 2020-10-01 17:01:06 +02:00
llaniau 130fb89c5f Modif applicationServerPublicKey pour pre prod 2020-09-29 14:12:07 +02:00
llaniau eeee4d3f45 changement next.config.js pour pre prod 2020-09-29 14:08:18 +02:00
llaniau 7f2c8374a4 Video de pres (module video telephone) 2020-09-29 09:59:22 +02:00
llaniau e380dec152 Envoi message apres candidature 2020-09-24 17:10:25 +02:00
llaniau 58bf654651 applicationServerPublicKey de prod 2020-09-22 15:15:07 +02:00
llaniau ead5370495 Modif pour eviter cvtheque.talentstube.com 2020-09-22 15:12:08 +02:00
llaniau ce8f8660f3 modif title offre pour referencement 2020-09-21 18:16:32 +02:00
llaniau 28fbf3a013 lien espace recruteur 2020-09-21 16:31:16 +02:00
llaniau 726cd78bd3 MEP 21 sept 2020-09-21 16:08:41 +02:00
llaniau 70a0e47d28 Version stabilisé pre prod avant mise en prod 2020-09-21 15:51:54 +02:00
llaniau d338cfaad4 recette avant mise en prod 2020-09-21 13:16:26 +02:00
22 changed files with 254 additions and 51 deletions
@@ -4,6 +4,7 @@ import { withStyles } from '@material-ui/core/styles';
import AssignmentIcon from '@material-ui/icons/Assignment';
import RoomIcon from '@material-ui/icons/Room';
import LocationOnIcon from '@material-ui/icons/LocationOn';
import WatchLater from '@material-ui/icons/WatchLater';
import BusinessCenterIcon from '@material-ui/icons/BusinessCenter';
import Typography from '@material-ui/core/Typography';
import Business from '@material-ui/icons/Business';
@@ -12,6 +13,7 @@ const variantIcon = {
assignment: AssignmentIcon,
room: RoomIcon,
location_on: LocationOnIcon,
watch_later: WatchLater,
business_center: BusinessCenterIcon,
business: Business,
};
+8 -3
View File
@@ -5,19 +5,24 @@ const JobPosting = props => {
return (
<JobPostingJsonLd
datePosted="2020-01-06T03:37:40Z"
datePosted={props.job_date}
description={props.job_description}
hiringOrganization={{
name: props.job_brand,
sameAs: props.job_brand_link,
}}
jobLocation={{
addressLocality: props.job_location,
addressLocality: props.job_ville,
addressRegion: props.job_dept,
// postalCode: props.job_location,
streetAddress: props.job_location,
addressCountry: props.job_pays,
}}
title={props.job_title}
validThrough="2020-01-06"
validThrough={props.job_date_fin}
applicantLocationRequirements="FR"
employmentType = {props.job_contract_type + ","+props.job_temps_type }
/>
+4 -4
View File
@@ -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>
+1 -1
View File
@@ -204,7 +204,7 @@ class AccountEtape1 extends Component {
errors.message ="";
//if (!Validator.isEmail(data.currentJob)) errors.message += "Le poste actuel doit etre un email\n";
if (type=="global" || (champ=="firstname" && data.firstname=="")) errors.message += "Veuillez saisir votre prénom<br />";
if (type=="global" || (champ=="lastname" && data.lastname=="")) errors.message += " Veuillez saisir saisir votre nom<br />";
if (type=="global" || (champ=="lastname" && data.lastname=="")) errors.message += " Veuillez saisir votre nom<br />";
if (type=="global" || (champ=="phone" && data.phone=="")) errors.message += "Veuillez saisir un numéro de téléphone<br />";
if (type=="global" || (champ=="currentJob" && data.currentJob=="")) errors.message += "Veuillez saisir votre intitulé de poste actuel ou poste recherché<br />";
if (type=="global" || (champ=="zipCode" && (data.zipCode && data.zipCode!="") && !Validator.isPostalCode(data.zipCode, "FR"))) errors.message += "Le code postal n'est pas correct<br />";
+32 -2
View File
@@ -12,7 +12,7 @@ import {fetchCompanyRequest} from '../../actions/companies'
import {fetchCurrentUserRequest} from '../../actions/user'
import VideoVimeo from '../atoms/VideoVimeo'
import Router from 'next/router'
import Loader from '../templates/loader'
import LoaderVideo from '../templates/loaderVideo'
import Ar from "lodash/array"
import Snackbar from '@material-ui/core/Snackbar';
import { Alert, AlertTitle } from '@material-ui/lab';
@@ -197,7 +197,7 @@ class Etape2 extends React.Component {
<section className={classes.container}>
<Fragment>
{this.AfficherSuccess()}
{ loading ? <Loader/> : <div></div> }
{ loading ? <LoaderVideo/> : <div></div> }
<div className={classes.root}>
<Hidden xsUp>
@@ -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>
+3 -3
View File
@@ -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';
@@ -169,7 +169,7 @@ class Etape3 extends React.Component {
fontSize: '1em',
}}
>
Visionner mon CV
Visualiser mon CV
</a>
<br />
{/* <a href="https://www.permatheque.fr/PDF/mansobufukuoka-larevolutiondunseulbrindepaille.pdf" target="_blank">lien</a> */}
@@ -191,7 +191,7 @@ class Etape3 extends React.Component {
return (
<Fragment>
{ loading ?
<Loader /> :
<LoaderVideo /> :
<Fragment>
{this.AfficherSuccess()}
@@ -293,7 +293,7 @@ const AccountProfile = props => {
: {user.phone}<br/>
<LinkedInIcon className={classes.menuButton}/>
: {(user.linkedin && user.linkedin != '' && user.linkedin != 'null')
? <a href={user.linkedin} target="_blank">Lien sur mon linkendIn</a>
? <a href={user.linkedin} target="_blank">Lien sur mon linkedIn</a>
: 'Non renseigné'}<br/>
<PublicIcon className={classes.menuButton}/>
: {(user.website && user.website != '' && user.website != 'null')
@@ -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&amp;src=sdkpreparse"}
href={"https://www.facebook.com/sharer/sharer.php?u=" + publicRuntimeConfig.cvThequeUrl + "/talent/" + user.alias + "%2F&amp;src=sdkpreparse"}
class="fb-xfbml-parse-ignore"> Partager mon profil
</a>
</div>
+7 -2
View File
@@ -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}>Envoyer ma candidature</Button>
</div>
</section>
)
+2 -2
View File
@@ -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>
+2 -2
View File
@@ -452,7 +452,7 @@ class Header extends React.Component {
<Divider light={true} />
<div className={classes.linkGroup}>
<a href={publicRuntimeConfig.symphonyUrl + "/faire-offre-emploi-video"} className={classes.lightMenuItem}><ListItem classes={{ primary: classes.ListItemText }} classes={{ root: classes.rootListItemIcon }}>
<a href={publicRuntimeConfig.symphonyUrl + "/"} className={classes.lightMenuItem}><ListItem classes={{ primary: classes.ListItemText }} classes={{ root: classes.rootListItemIcon }}>
<WorkOutlineIcon className={classes.icon} />
<ListItemText primary='Connexion recruteurs'>
</ListItemText>
@@ -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} />
+68 -7
View File
@@ -58,6 +58,9 @@ const styles = theme => ({
offerInfoContainer: {
display: 'flex',
},
buttonContainer: {
alignItems: 'right',
},
infoContainer: {
display: 'flex',
flexDirection: 'column',
@@ -172,6 +175,15 @@ const styles = theme => ({
discoverTitle: {
padding: theme.spacing(3, 0),
},
voirEntreprise: {
textTransform: 'inherit',
marginLeft: theme.spacing(1),
marginRight: theme.spacing(1),
padding: theme.spacing(1.2, 2),
color: '#BBBCBD',
backgroundColor: '#F3F3F4',
},
contentText: {
fontSize: '1em',
fontWeight: '300',
@@ -247,12 +259,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,
@@ -304,15 +315,40 @@ function OffreDetail(props) {
const territoryVideoUrlTab = (offre.territories && offre.territories[0] && offre.territories[0].territory) ? offre.territories[0].territory.presentation_video.cdn_url.split('/') : '';
const territoryVideoId = territoryVideoUrlTab[2]
let descriptionSEO = ""
descriptionSEO = offre.company.brand_name + " recrute en vidéo un(e) "+offre.title
let titleSEO = ""
offre.company.brand_name ? descriptionSEO += offre.company.brand_name : ""
descriptionSEO += " recrute en vidéo un(e) "+offre.title
titleSEO = "Offre d'emploi vidéo "+offre.title
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 "
let jobVille=""
let jobDpt=""
let jobPays=""
let jobContract =""
let tempsType =""
let tempsTypeFr =""
offre.location.gmap_address.address_components[0] ? jobVille = offre.location.gmap_address.address_components[0].long_name: jobVille=""
offre.location.gmap_address.address_components[1] ? jobDpt = offre.location.gmap_address.address_components[1].long_name: jobDpt=""
offre.location.gmap_address.address_components[3] ? jobPays = offre.location.gmap_address.address_components[3].long_name: jobPays=""
// offre.location.gmap_address ? jobAdr = location.gmap_address.adr_address: jobAdr=""
offre.extra.contract_type ? jobContract = offre.extra.contract_type : jobContract =""
offre.extra.temps_type ? tempsType = offre.extra.temps_type : tempsType =""
if(tempsType=="PART_TIME"){
tempsTypeFr="Temps partiel"
}else if(tempsType=="FULL_TIME") {
tempsTypeFr="Plein temps"
}else if(tempsType=="MIX_TIME") {
}
return (
<Fragment>
{/* {offre.public_tag.map((label, index) => {
descriptionSEO += label+", "
})} */}
<OgHead seo_title={offre.title}
<OgHead seo_title={titleSEO}
seo_description={descriptionSEO}
seo_url={socialShareUrl}
image={imgUrlDesktop}
@@ -323,7 +359,14 @@ function OffreDetail(props) {
job_brand_link= {entrepriseLink}
job_title = {offre.title}
job_location = {offre.location.gmap_address.formatted_address}
job_ville = {jobVille}
job_dept = {jobDpt}
job_pays = {jobPays}
job_adr = {offre.location.gmap_address.formatted_address}
job_date = {offre.published_at}
job_date_fin = {offre.unpublished_at}
job_temps_type= {tempsType}
job_contract_type= {jobContract}
></JobPosting>
{offre.video && (
<Fragment>
@@ -355,14 +398,31 @@ function OffreDetail(props) {
{/* ville */}
</div>
</div>
<div className={classes.buttonContainer}>
{!!!offre.is_promoted && (
<Link href={`/Entreprise/${offre.company.id}-${_.kebabCase(offre.company.brand_name)}`} >
<Button
variant="contained"
className={classes.voirEntreprise + ' cypButtonApply'}
>Voir l'entreprise</Button>
</Link>
)}
{!!!offre.is_promoted && (
<Link href={`/Reponse?adId=${offre.id}`}>
<Button
variant="contained"
className={classes.button + ' cypButtonApply'}
>Postuler</Button>
</Link>
)}
</div>
</section>
</Hidden>
@@ -406,6 +466,7 @@ function OffreDetail(props) {
<Hidden smDown>
<section className={classes.IconTextContainerDesktop}>
<IconTextInline classes={{ icon: classes.iconTextIcon, text: classes.iconTextText }} variant="assignment" text={offre.extra.contract_type} />
{tempsTypeFr ?<IconTextInline classes={{ icon: classes.iconTextIcon, text: classes.iconTextText }} variant="watch_later" text={tempsTypeFr } />:""}
<IconTextInline classes={{ icon: classes.iconTextIcon, text: classes.iconTextText }} variant="location_on" text={offre.location.gmap_address.formatted_address} />
{offre.beneficiaire && (<IconTextInline classes={{ icon: classes.iconTextIcon, text: classes.iconTextText }} variant="business" text={offre.beneficiaire} /> )}
</section>
@@ -449,8 +510,8 @@ function OffreDetail(props) {
{offre.company.presentation_video && !offre.is_promoted && (
<div className={classes.container + ' ' + classes.discoverContainerCompany}>
<section>
<Typography gutterBottom className={classes.title + ' ' + classes.discoverTitle} align="center">
Découvrir l'entreprise <span className={classes.primary}>{offre.company.brand_name && offre.company.brand_name}</span>
<Typography gutterBottom className={classes.title + ' ' + classes.voirEntreprise} align="center">
Voir l'entreprise <span className={classes.primary}>{offre.company.brand_name && offre.company.brand_name}</span>
</Typography>
<a href={entrepriseLink}>
+4 -4
View File
@@ -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>
+19 -2
View File
@@ -10,6 +10,7 @@ import withWidth, { isWidthUp } from '@material-ui/core/withWidth'
import Header from '../organisms/Header'
import {AppBar,CssBaseline,Container,Toolbar,IconButton,Typography} from "@material-ui/core";
import Hidden from '@material-ui/core/Hidden';
import Link from 'next/link'
const styles = theme => ({
RootContainer: {
@@ -65,12 +66,21 @@ 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,
},
voirOffre: {
textTransform: 'inherit',
marginLeft: theme.spacing(1),
marginRight: theme.spacing(1),
padding: theme.spacing(1.2, 2),
color: '#BBBCBD',
backgroundColor: '#F3F3F4',
},
})
function LayoutCompany(props) {
@@ -105,6 +115,13 @@ function LayoutCompany(props) {
<Hidden mdUp>
<div id="F" className={classes.foot}>
<Link href="#discover" >
<Button
variant="contained"
className={classes.voirOffre + ' cypButtonApply'}
>Voir les offres</Button>
</Link>
<Button
variant="contained"
className={classes.button}
+19 -1
View File
@@ -8,6 +8,7 @@ import ArrowLeft from '@material-ui/icons/KeyboardArrowLeft';
import Header from '../organisms/Header'
import withWidth, { isWidthUp } from '@material-ui/core/withWidth'
import Hidden from '@material-ui/core/Hidden';
import Link from 'next/link'
const styles = theme => ({
foot: {
@@ -62,11 +63,20 @@ const styles = theme => ({
color: theme.palette.secondary.main,
backgroundColor: theme.palette.primary.important,
},
voirEntreprise: {
textTransform: 'inherit',
marginLeft: theme.spacing(1),
marginRight: theme.spacing(1),
padding: theme.spacing(1.2, 2),
color: '#BBBCBD',
backgroundColor: '#F3F3F4',
},
})
function LayoutOffre(props) {
const { classes, offreId, isProvided } = props;
const { classes, offreId, offre, isProvided } = props;
const contentClass = (!isProvided) ? classes.contentDefault : classes.contentProvided
return (
@@ -91,6 +101,14 @@ function LayoutOffre(props) {
<div id="F" className={classes.foot}>
{/* <div className={classes.inner}>
<div className={classes.grow} /> */}
<Link href={`/Entreprise/${offre.company.id}-${_.kebabCase(offre.company.brand_name)}`} >
<Button
variant="contained"
className={classes.voirEntreprise + ' cypButtonApply'}
>Voir l'entreprise</Button>
</Link>
<Button
variant="contained"
className={classes.button + ' cypButtonApply'}
+1 -1
View File
@@ -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
View File
@@ -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'
}
}]
],
+1 -1
View File
@@ -29,7 +29,7 @@ export default function HorizontalNonLinearStepper() {
return (
<Layout>
<Head>
<title key="title">Profile Talents Tube</title>
<title key="title">Profil Talents Tube</title>
<meta key="robots" name="robots" content="noindex, nofollow"></meta>
</Head>
<div >
+25 -2
View File
@@ -278,13 +278,25 @@ 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,
alignSelf: 'center',
},
voirOffre: {
textTransform: 'inherit',
marginLeft: theme.spacing(1),
marginRight: theme.spacing(1),
padding: theme.spacing(1.2, 2),
color: '#BBBCBD',
backgroundColor: '#F3F3F4',
},
buttonContainer: {
alignItems: 'right',
},
chip: {
color: theme.palette.secondary.main,
backgroundColor: theme.palette.primary.main,
@@ -415,14 +427,24 @@ class Entreprise extends React.Component {
:
(<Chip label={nbOffre} className={classes.chip + ' ' + classes.chipHeader} />)
}
{/* ville */}
</div>
</div>
<div className={classes.buttonContainer}>
<Button
variant="contained"
className={classes.button}
onClick={() => Router.push(`/Reponse?companyId=${company.id}`)}
>Candidature spontanée</Button>
<Link href="#discover" >
<Button
variant="contained"
className={classes.voirOffre + ' cypButtonApply'}
>Voir les offres</Button>
</Link>
</div>
</section>
</Hidden>
{company.presentation_video && <VideoVimeo videoId={Ar.last(_.split(company.presentation_video.cdn_url, '/'))} autoplay='1' />}
@@ -504,6 +526,7 @@ class Entreprise extends React.Component {
className={classes.button}
onClick={() => Router.push(`/Reponse?companyId=${company.id}`)}
>Candidature spontanée</Button>
<Typography className={classes.contentCondition}>
ou
</Typography>
+1 -1
View File
@@ -31,7 +31,7 @@ class Offre extends React.Component {
const { classes, offre } = this.props;
return (
<LayoutOffre backLink="/Offres" offreId={offre.id} isProvided={offre.is_promoted}>
<LayoutOffre backLink="/Offres" offreId={offre.id} offre={offre} isProvided={offre.is_promoted}>
<OffreDetail offre={offre}/>
</LayoutOffre>
);
+4 -3
View File
@@ -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 }
+6 -3
View File
@@ -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>