Compare commits

...

20 Commits

Author SHA1 Message Date
llaniau 580175126b Sitemap 2021-05-17 11:02:39 +02:00
llaniau 41b89bf4b8 MEP V2.10.3 2021-05-17 10:53:12 +02:00
llaniau f205b571bc pb parametrage livraison 2021-05-12 17:20:11 +02:00
llaniau 57ba629402 Bug244, 245, 247, 249 2021-05-10 10:04:08 +02:00
llaniau 6a5657f4ad ancres 2021-05-03 23:03:49 +02:00
llaniau dc0c27d07b faute d'orthographe sur a traiter 2021-05-03 22:06:08 +02:00
llaniau 8deda05a55 US 549/550 2021-05-03 16:45:07 +02:00
llaniau 3702f07f44 US550 : page profil 2021-05-03 13:25:59 +02:00
llaniau 9844a43312 Init V2.10.1 2021-04-26 11:29:46 +02:00
llaniau 9a73c59197 sitemap 2021-04-26 09:01:27 +02:00
llaniau 46950b15d7 Activation referencement 2021-04-19 14:01:37 +02:00
llaniau 48e4108270 sitemap 2021-04-19 10:11:38 +02:00
llaniau 0c70c93d99 MEP V2.9.2 2021-04-19 10:02:44 +02:00
llaniau bae6713dac Bug 239 2021-04-12 20:16:15 +02:00
llaniau 4dc3e224fc Api pole emploi, reglage corentin 2021-04-08 13:02:47 +02:00
llaniau 48a9ca5fe9 US 487 : Api pole emploi app 2021-03-31 19:23:45 +02:00
llaniau 60f8f4e71e Init V2.9.1 pre prod 2021-03-30 15:31:33 +02:00
llaniau b4b2bcd95e Desactiver nofollow 2021-03-30 09:52:17 +02:00
llaniau 5706decd1e MEP V2.8.3 2021-03-29 15:38:27 +02:00
llaniau 47acace2e7 Correctif suite a recette V2.8.2 2021-03-29 14:32:19 +02:00
19 changed files with 1569 additions and 732 deletions
+2
View File
@@ -11,6 +11,7 @@ import Typography from '@material-ui/core/Typography';
import WatchLater from '@material-ui/icons/WatchLater';
import Home from '@material-ui/icons/Home';
import People from '@material-ui/icons/People';
import Place from '@material-ui/icons/Place';
const variantIcon = {
assignment: AssignmentIcon,
@@ -21,6 +22,7 @@ const variantIcon = {
watch_later: WatchLater,
home: Home,
people: People,
place: Place,
};
const styles = theme => ({
@@ -10,6 +10,7 @@ import BusinessCenterIcon from '@material-ui/icons/BusinessCenter';
import People from '@material-ui/icons/People';
import Typography from '@material-ui/core/Typography';
import Business from '@material-ui/icons/Business';
import Place from '@material-ui/icons/Place';
const variantIcon = {
assignment: AssignmentIcon,
@@ -20,6 +21,7 @@ const variantIcon = {
business_center: BusinessCenterIcon,
business: Business,
people: People,
place: Place,
};
const styles = theme => ({
+3 -3
View File
@@ -29,9 +29,9 @@ const OgHead = props => {
<meta name="twitter:description" content={props.seo_description}/>
<meta name="twitter:image" content={props.image}/>
if (urlEnv=="development") {
<meta name="robots" content="noindex, nofollow"></meta>
}
{/* A ENLEVER EN PROD */}
{/* <meta name="robots" content="noindex, nofollow"></meta> */}
{/* <meta httpEquiv='cache-control' content='no-store,no-cache'></meta>
<meta httpEquiv='expires' content='0'></meta>
File diff suppressed because it is too large Load Diff
+181 -116
View File
@@ -20,6 +20,7 @@ import ReactHtmlParser, { processNodes, convertNodeToElement, htmlparser2 } from
import Grid from '@material-ui/core/Grid';
import Container from '@material-ui/core/Container';
import Hidden from '@material-ui/core/Hidden';
import Movie from '@material-ui/icons/Movie';
const styles = theme => ({
container: {
@@ -58,8 +59,8 @@ const styles = theme => ({
height: "100%"
},
conseilButton: {
color: "#ffffff",
backgroundColor: "#25D89A",
color: "#1e2327",
backgroundColor: "#fff",
padding: theme.spacing(3, 2),
margin: theme.spacing(1),
width: "100%",
@@ -67,11 +68,12 @@ const styles = theme => ({
boxShadow: '0 6px 10px 0 rgba(0, 0, 0, 0.14), 0 1px 18px 0 rgba(0, 0, 0, 0.12), 0 3px 5px -1' +
'px rgba(0, 0, 0, 0.14)',
'&:hover': {
color: "#ffffff",
backgroundColor: "#25D89A",
color: "#1e2327",
backgroundColor: "#fff",
}
},
captureButton: {
width:"100%",
color: theme.palette.secondary.main,
backgroundColor: theme.palette.primary.main,
padding: theme.spacing(5, 2),
@@ -82,8 +84,8 @@ const styles = theme => ({
},
},
importButton: {
color: theme.palette.primary.main,
backgroundColor: theme.palette.secondary.main,
color: "#1e2327",
backgroundColor: "#fff",
padding: theme.spacing(3, 2),
margin: theme.spacing(1),
width: "100%",
@@ -91,8 +93,8 @@ const styles = theme => ({
boxShadow: '0 6px 10px 0 rgba(0, 0, 0, 0.14), 0 1px 18px 0 rgba(0, 0, 0, 0.12), 0 3px 5px -1' +
'px rgba(0, 0, 0, 0.14)',
'&:hover': {
color: theme.palette.primary.main,
backgroundColor: theme.palette.secondary.main,
color: "#1e2327",
backgroundColor: "#fff",
}
},
InputKeyboardArrowDownIconBlank: {
@@ -102,12 +104,21 @@ const styles = theme => ({
},
InputKeyboardArrowDownIcon: {
fontSize: '2.5em',
color: "#1689FB",
color: "#1e2327",
textAlign: "right"
},
buttons :{
display: "inline-table",
}
},
grille :{
paddingTop:theme.spacing(4),
width: "100%",
marginBottom:"30px",
borderRadius: "5px",
border: "1px solid #1E2327",
color:theme.palette.primary.dark
},
});
const Recorder = dynamic(() => import ('../organisms/Recorder'), {ssr: false})
class Etape2 extends React.Component {
@@ -117,7 +128,8 @@ class Etape2 extends React.Component {
data: {},
openSnack: false,
errors: {},
success : {}
success : {},
openStudio : false
};
@@ -146,9 +158,9 @@ class Etape2 extends React.Component {
video: nextProps.video
})
//window.location.reload(false);
if (nextProps.media.status === 'success') {
if (nextProps.media.statusPres === 'success') {
const success = {};
success.message ="Vidéo mise à jour";
success.message ="Profil mise à jour.";
this.setState({ success });
this.setActiveStep(1);
}
@@ -158,7 +170,7 @@ class Etape2 extends React.Component {
this.setState({activeStep: step})
}
inputFilesystemChange = (e) => {
inputFilesystemChangePres = (e) => {
this.uploadMediaPres(e)
}
@@ -168,14 +180,15 @@ class Etape2 extends React.Component {
uploadMediaPres = (e) => {
var file = e.target.files[0]
console.log ("envoi de video pres")
const data = new FormData()
data.append('upload', file)
//this.setState({ videoPres: videoPres })
console.log("VIDEO PRES OK");
this
.props
.uploadMediaPres(data)
.uploadMediaPres(data);
}
AfficherSuccess() {
@@ -196,6 +209,16 @@ class Etape2 extends React.Component {
handleClose = (event, reason) => {
this.setState({openSnack: false});
}
realise =() =>{
console.log("realise");
this.setState({ openStudio: true});
}
retour =() =>{
console.log("retour");
this.setState({ openStudio: false});
}
render() {
const {classes, company} = this.props;
@@ -206,126 +229,168 @@ class Etape2 extends React.Component {
} else {
video = "";
}
if (typeof global.navigator === 'undefined') global.navigator = {};
if (typeof global.maps === 'undefined') global.maps = {};
return (
<section className={classes.container}>
<Fragment>
{this.AfficherSuccess()}
{ loading ? <LoaderVideo textePrincipal="Votre vidéo est en cours denvoi..." texteSecondaire="Veuillez rester sur la page pendant le chargement qui peut durer plusieurs minutes."/> : <div></div> }
<Grid
container
direction="row"
justify="space-between"
alignItems="flex-start"
className={classes.grille}
justify="center"
alignItems="center">
<Grid item lg={12} md={12} xl={12} xs={12} >
<div id="video">
<div className={classes.root}>
<Hidden xsUp>
&nbsp;
</Hidden>
<Container maxWidth="md">
<Typography
align="center"
gutterBottom
variant="headline"
variant="h6"
component="h2"
className={classes.h6}>
<Movie className={classes.menuIcon}></Movie> Vidéo de présentation
</Typography>
<Typography
align="center">Donnez envie au recruteur de vous rencontrer grâce à la vidéo !</Typography>
</div>
<Fragment>
{this.AfficherSuccess()}
{ loading ? <LoaderVideo textePrincipal="Votre vidéo est en cours denvoi..." texteSecondaire="Veuillez rester sur la page pendant le chargement qui peut durer plusieurs minutes."/> : <div></div> }
<Grid container
justify="center"
alignItems="center"
spacing={2}
className={classes.buttons}>
<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 className={classes.root}>
<Hidden xsUp>
&nbsp;
</Hidden>
<Container maxWidth="md">
<Grid container
justify="center"
alignItems="center"
spacing={2}
className={classes.buttons}>
<Grid item xs={12} sm={12} md={12} lg={12} xl={12}>
</div>
)
}
</Grid>
<Grid item xs={12} sm={12} md={12} lg={6} xl={6}>
<div>
<label htmlFor="import-conseil">
<Button
component="span"
className={classes.conseilButton}
classes={{
root: classes.rootButton}}
onClick={() => Router.push(`/Conseils`)}>
<img
alt="talents-tube"
src='/statique/images/conseils-talentstube.svg'
className={classes.iconButton}/>
<Typography align="left" className={classes.textButton}>
<span className={classes.underlined}>Comment</span> créer ma vidéo
</Typography>
<KeyboardArrowDownIcon className={classes.InputKeyboardArrowDownIconBlank}/>
</Button>
</label>
</div>
<div>
{ /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) ?
(
<Fragment >
<input
type="file"
accept="video/*"
className={classes.input + ' cypButtonImportVid'}
style={{display: 'none'}}
id="import-button-file"
onChange={this.inputFilesystemChange}/>
<label htmlFor="import-button-file">
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>
):
(
<Fragment>
{this.state.openStudio == false ?
<Button component="span" className={classes.captureButton} classes={{ root: classes.rootButton }} onClick={this.realise}>
<img alt="talents-tube" src='/statique/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>
:
<div className={classes.recorderContainer}>
<Button onClick={this.retour}>Retour au menu</Button>
<Recorder uploader={this.props.uploadMediaPres} titreBouton="Remplacer ma vidéo" retour="home" />
</div>
}
</Fragment>
)
}
</Grid>
<Grid item xs={12} sm={12} md={12} lg={12} xl={12}>
<div>
<input
type="file"
accept="video/*"
className={classes.input + ' cypButtonImportVid'}
style={{display: 'none'}}
id="import-button-file-pres"
onChange={this.inputFilesystemChangePres}/>
<label htmlFor="import-button-file-pres">
<Button
component="span"
className={classes.importButton}
classes={{
root: classes.rootButton}}>
<img
alt="talents-tube"
src='/statique/images/Import.svg'
className={classes.iconButton}/>
<Typography align="left" className={classes.textButton}>
J'<span className={classes.underlined}>importe</span> ma vidéo de présentation
</Typography>
<KeyboardArrowDownIcon className={classes.InputKeyboardArrowDownIcon}/>
</Button>
</label>
</div>
<div>
<label htmlFor="import-conseil">
<Button
component="span"
className={classes.importButton}
classes={{
root: classes.rootButton}}>
root: classes.rootButton}}
onClick={() => Router.push(`/Conseils`)}>
<img
alt="talents-tube"
src='/statique/images/Import.svg'
src='/statique/images/comment-faire-une-video-reponse.svg'
className={classes.iconButton}/>
<Typography align="left" className={classes.textButton}>
J'<span className={classes.underlined}>importe</span> ma vidéo de présentation
<span className={classes.underlined}>Comment</span> créer ma vidéo de présentation
</Typography>
<KeyboardArrowDownIcon className={classes.InputKeyboardArrowDownIcon}/>
</Button>
</label>
</div>
</Grid>
<Hidden xsUp>
&nbsp;
</Hidden>
</Grid>
<Hidden xsUp>
&nbsp;
</Hidden>
<Grid item xs={12} sm={12} md={12} lg={12} xl={12}>
<div className={classes.videoPresentation}>
{video}
</div>
<Grid item xs={12} sm={12} md={12} lg={12} xl={12}>
<div className={classes.videoPresentation}>
{video}
</div>
</Grid>
</Grid>
</Container>
</div>
{/* <div className={classes.textContainer}>
</Grid>
</Container>
</div>
{/* <div className={classes.textContainer}>
</div> */}
</Fragment>
</section>
</div> */}
</Fragment>
</Grid>
</Grid>
);
}
+143 -70
View File
@@ -17,8 +17,9 @@ import getConfig from 'next/config'
import Card from '@material-ui/core/Card';
import CardActions from '@material-ui/core/CardActions';
import CardContent from '@material-ui/core/CardContent';
import Description from '@material-ui/icons/Description';
import Grid from '@material-ui/core/Grid';
import Container from '@material-ui/core/Container';
const styles = theme => ({
root: {
display: 'flex',
@@ -40,21 +41,61 @@ const styles = theme => ({
},
InputKeyboardArrowDownIcon: {
fontSize: '2.5em',
color: theme.palette.primary.main,
color: theme.palette.primary.dark,
},
importButton: {
color: theme.palette.primary.main,
backgroundColor: theme.palette.secondary.main,
color: "#1e2327",
backgroundColor: "#fff",
padding: theme.spacing(3, 2),
margin: theme.spacing(1),
width: "370px",
width: "100%",
textAlign: "right",
boxShadow: '0 6px 10px 0 rgba(0, 0, 0, 0.14), 0 1px 18px 0 rgba(0, 0, 0, 0.12), 0 3px 5px -1' +
'px rgba(0, 0, 0, 0.14)',
'&:hover': {
color: theme.palette.primary.main,
backgroundColor: theme.palette.secondary.main,
color: "#1e2327",
backgroundColor: "#fff",
}
},
grille :{
paddingTop:theme.spacing(4),
paddingRight:"30px",
width: "100%",
marginBottom:"30px",
borderRadius: "5px",
border: "1px solid #1E2327",
color:theme.palette.primary.dark
},
grille2 :{
margin:'10px',
width: "100%",
marginBottom:"30px",
},
button: {
width:"200px",
textTransform: 'inherit',
margin: theme.spacing(0, 8),
padding: theme.spacing(1.2, 2),
[theme.breakpoints.up('sm')]: {
margin: 'auto',
},
},
boutonMobile:{
width:"200px",
textAlign :"center",
color: theme.palette.secondary.main,
backgroundColor: theme.palette.primary.important,
margin : "0px !important"
},
lien:{
textDecoration:'none',
color:'#fff'
},
centered:{
textAlign:"center"
}
});
@@ -90,12 +131,12 @@ class Etape3 extends React.Component {
openSnack: !!!_.isEmpty(nextProps.errors),
errors: !!!nextProps.errors ? { errors: { message: "" } } : nextProps.errors,
})
this.state.cvLink = nextProps.cvLink;
if (nextProps.loading) {
if (nextProps.mediaCv.statusCv === 'success') {
const success = {};
success.message ="CV mis à jour";
success.message ="Profil mis à jour";
console.log("CV mis à jour!!!")
if(this.state.cvLink) console.log(this.state.cvLink)
if(nextProps.mediaCv) console.log(nextProps.mediaCv.message)
this.setState({ success });
}
@@ -103,7 +144,7 @@ class Etape3 extends React.Component {
}
inputFilesystemChange = (e) => {
inputFilesystemChangeCv = (e) => {
this.uploadMediaCv(e)
}
@@ -112,7 +153,7 @@ class Etape3 extends React.Component {
const data = new FormData()
data.append('upload', file)
console.log ("envoi de cv")
this.props.uploadMediaCv(data)
}
@@ -122,6 +163,7 @@ class Etape3 extends React.Component {
return "";
} else if (this.state.success.length != 0 && this.state.success.message != "") {
return (
<Snackbar open={open} autoHideDuration={1000} onClose={() => this.setState({open: false})}>
<Alert onClose={() => this.setState({open: false})} severity="success">
{ReactHtmlParser(this.state.success.message)}
@@ -132,7 +174,7 @@ class Etape3 extends React.Component {
return "";
}
AfficherLienCv() {
AfficherLienCv(classes) {
console.log("afficher lien");
if (this.state.cvLink !="") {
@@ -144,39 +186,26 @@ class Etape3 extends React.Component {
<Hidden>&nbsp;</Hidden>
<Hidden>&nbsp;</Hidden>
<Card variant="" style={{
width:370+"px",
boxShadow: '0 6px 10px 0 rgba(0, 0, 0, 0.14), 0 1px 18px 0 rgba(0, 0, 0, 0.12), 0 3px 5px -1' +
'px rgba(0, 0, 0, 0.14)',
marginLeft : '10px',
marginTop:'10px'
}}>
<Hidden>&nbsp;</Hidden>
<CardActions>
<Button size="small">MON CV</Button>
</CardActions>
<CardContent>
<div className={classes.centered} >
<Typography >
<a href={publicRuntimeConfig.symphonyUrl + publicRuntimeConfig.postedContentCv + this.state.cvLink}
target="_blank"
style={{
color:'#1689FB',
'&:hover': {
color: '#1689FB',
},
fontWeight: '700',
fontSize: '1em',
}}
target="_blank" className={classes.lien}
>
Visualiser mon CV
<Button
variant="contained"
className={classes.button + ' ' + classes.boutonMobile}
>Visualiser mon CV
</Button>
</a>
<br />
{/* <a href="https://www.permatheque.fr/PDF/mansobufukuoka-larevolutiondunseulbrindepaille.pdf" target="_blank">lien</a> */}
</Typography>
</CardContent>
</Card>
</div>
</Fragment>
);
@@ -189,36 +218,79 @@ class Etape3 extends React.Component {
const { classes, company } = this.props;
const { loading } = this.state;
return (
<Fragment>
{ loading ?
<LoaderVideo textePrincipal="Votre candidature vidéo est en cours denvoi..." texteSecondaire="Veuillez rester sur la page pendant le chargement qui peut durer plusieurs minutes."/> :
<Fragment>
{this.AfficherSuccess()}
<Grid
container
direction="row"
alignItems="flex-start"
className={classes.grille}
justify="center"
alignItems="center">
<Grid item lg={12} md={12} xl={12} xs={12} className={classes.grilleGauche}>
<div id="cv">
<Typography
align="center"
gutterBottom
variant="headline"
variant="h6"
component="h2"
className={classes.h6}>
<Description className={classes.menuIcon}></Description> Curriculum vitae
</Typography>
<Typography
align="center">Importez votre CV pour permettre aux recruteurs den savoir plus sur vous.
.</Typography>
</div>
<Fragment>
{ loading ?
<input
type="file"
accept=".doc,.docx,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document, .pdf, .odt"
className={classes.input+' cypButtonImportVid'}
style={{ display: 'none' }}
id="import-button-file"
onChange={this.inputFilesystemChange}
/>
<label htmlFor="import-button-file">
<Button component="span" className={classes.importButton} classes={{ root: classes.rootButton }}>
<img alt="talents-tube" src='/statique/images/Import-cv-candidat.svg' className={classes.iconButton} />
<Typography className={classes.textButton}>
J'<span className={classes.underlined}>importe</span> mon CV
</Typography>
<KeyboardArrowDownIcon className={ classes. InputKeyboardArrowDownIcon }/>
</Button>
</label>
<Hidden>&nbsp;</Hidden>
{this.AfficherLienCv()}
</Fragment>
}
</Fragment>
<LoaderVideo textePrincipal="Votre candidature vidéo est en cours denvoi..." texteSecondaire="Veuillez rester sur la page pendant le chargement qui peut durer plusieurs minutes."/> :
<Grid
container
spacing={4}
direction="row"
alignItems="flex-start"
className={classes.grille2}
justify="center"
alignItems="center">
<Grid item xs={12} sm={12} md={12} lg={12} xl={12}>
<Fragment>
{this.AfficherSuccess()}
<input
type="file"
accept=".doc,.docx,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document, .pdf, .odt"
className={classes.input+' cypButtonImportVid'}
style={{ display: 'none' }}
id="import-button-file-cv"
onChange={this.inputFilesystemChangeCv}
/>
<label htmlFor="import-button-file-cv">
<Button component="span" className={classes.importButton} classes={{ root: classes.rootButton }}>
<img alt="talents-tube" src='/statique/images/Import-cv-candidat.svg' className={classes.iconButton} />
<Typography className={classes.textButton}>
J'<span className={classes.underlined}>importe</span> mon CV
</Typography>
<KeyboardArrowDownIcon className={ classes. InputKeyboardArrowDownIcon }/>
</Button>
</label>
<Hidden>&nbsp;</Hidden>
{this.AfficherLienCv(classes)}
<Hidden>&nbsp;</Hidden>
<Hidden>&nbsp;</Hidden>
<Hidden>&nbsp;</Hidden>
</Fragment>
</Grid>
</Grid>
}
</Fragment>
</Grid>
</Grid>
);
}
@@ -249,6 +321,7 @@ function mapStateToProps(state) {
cvLink : state.mediaCv.message,
loading: !!state.media.loading,
cv : true,
mediaCv: state.mediaCv,
//errors: errorMessageSelector(state),
user: state.user,
company: state.company
+46 -206
View File
@@ -26,8 +26,10 @@ import BottomNavigation from '@material-ui/core/BottomNavigation';
import RefreshIcon from '@material-ui/icons/Refresh';
// import FavoriteIcon from '@material-ui/icons/Favorite'; import LocationOnIcon
// from '@material-ui/icons/LocationOn';
import Link from 'next/link'
import Box from '@material-ui/core/Box';
import Tabs from '@material-ui/core/Tabs';
import Tab from '@material-ui/core/Tab';
import {
Card,
@@ -63,7 +65,10 @@ const styles = theme => ({
width: '100%',
position: 'fixed',
bottom: 0
}
},
menu: {
backgroundColor: "#DAE8F2"
},
});
const useStyles = makeStyles(theme => ({
@@ -116,6 +121,9 @@ const useStyles = makeStyles(theme => ({
},
resetContainer: {
padding: theme.spacing(3)
},
conteneur:{
backgroundColor: "#f3f3f4",
}
}));
@@ -242,11 +250,9 @@ const AccountProfile = props => {
return skipped.has(step);
};
const handleChange = (event) => {
setState({
...state,
[event.target.name]: event.target.checked
});
const handleChange = (event, newValue) => {
};
function isStepComplete(step) {
@@ -260,210 +266,44 @@ const AccountProfile = props => {
}
return (
<Grid
container
spacing={4}
direction="row"
justify="space-between"
alignItems="flex-start">
<Grid item lg={3} md={6} xl={4} xs={12}>
<Card {...rest} className={clsx(classes.root, className)}>
<CardContent>
<div id="fb-root"></div>
<script
async
defer
crossorigin="anonymous"
src="https://connect.facebook.net/fr_FR/sdk.js#xfbml=1&version=v8.0&appId=2332071840142634&autoLogAppEvents=1"
nonce="O28M4TTm"></script>
<div className={classes.details}>
<div>
<Typography gutterBottom variant="h5">
{user.lastname}
&nbsp; {user.firstname}
<a href="#" onClick={refresh}><RefreshIcon className={classes.menuButton}/></a>
</Typography>
<Typography
className={classes.locationText}
color="textSecondary"
variant="body1">
<MailIcon className={classes.menuButton}/>
: {user.email}<br/>
<PhoneIcon className={classes.menuButton}/>
: {user.phone}<br/>
<LinkedInIcon className={classes.menuButton}/>
: {(user.linkedin && user.linkedin != '' && user.linkedin != 'null')
? <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')
? <a href={user.website} target="_blank">Lien sur mon site</a>
: 'Non renseigné'}<br/>
</Typography>
>
<Grid item lg={12} md={12} xl={12} xs={12} >
<div >
<Paper elevation={0} >
<Tabs
value={1}
onChange={handleChange}
indicatorColor="primary"
textColor="theme.palette.primary.dark"
centered
>
<Link href="/Candidatures"><Tab label="Mes candidatures" /></Link>
<Tab label="Mon profil" />
</div>
{/* <Avatar
className={classes.avatar}
src={publicRuntimeConfig.symphonyUrl + publicRuntimeConfig.postedContentUrl + logoUrl}/> */}
</div>
<div>
<Box m={3}/>
<Divider/>
<Box m={3}/>
<Typography
className={classes.locationText}
color="textSecondary"
variant="body1">
<DuoIcon className={classes.menuButton}/>
: {(user.alias && user.alias != '' && user.alias != 'null')
? <a
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-layout="button_count"
data-size="small">
<Facebook className={classes.menuButton}/>
:
<a
target="_blank"
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>
</Typography>
</div>
{/* <div className={classes.progress}>
<Typography variant="body1">Etat du Profil: 70%</Typography>
<LinearProgress value={70} variant="determinate"/>
</div> */}
</CardContent>
<Box m={2}/>
<Divider/>
<Box m={2}/>
<div className={classes.information}>
<Typography className={classes.texteBlanc} align="left"></Typography>
</div>
{/* <CardActions>
<Button className={classes.uploadButton} color="primary" variant="text">
Remplacer une photo de profil
</Button>
<Button variant="text">Supprimer photo de profil</Button>
</CardActions> */}
<Box m={1}/>
<Divider/>
{/* <CardContent>
<Typography variant="body1"></Typography>
<FormControlLabel
value="end"
control={< Switch checked = {
state.checkedA
}
onChange = {
handleChange
}
name = "checkedA" color = "primary" />}
label="Je souhaite afficher mon profil sur la CV Vidéothèque Talents Tube"
labelPlacement="start"/>
</CardContent> */}
<CardActions>
<Stepper nonLinear activeStep={activeStep} orientation="vertical">
{steps.map((label, index) => {
const stepProps = {};
const buttonProps = {};
if (isStepOptional(index)) {
buttonProps.optional = <Typography variant="caption">Optional</Typography>;
}
if (isStepSkipped(index)) {
stepProps.completed = false;
}
return (
<Step key={label} className={classes.actionsContainer} {...stepProps}>
<StepButton
onClick={handleStep(index)}
completed={isStepComplete(index)}
{...buttonProps}>
{label}
</StepButton>
</Step>
);
})}
</Stepper>
</CardActions>
<Divider/>
<div>
<div>
<div>
{/* {isStepOptional(activeStep) && !completed.has(activeStep) && (
<Button
variant="contained"
color="primary"
onClick={handleSkip}
className={classes.button}
>
Skip
</Button>
)} */}
{/* {activeStep !== steps.length &&
(completed.has(activeStep) ? (
<Typography variant="caption" className={classes.completed}>
Step {activeStep + 1} already completed
</Typography>
) : (
<Button variant="contained" color="primary" onClick={handleComplete}>
{completedSteps() === totalSteps() - 1 ? 'Finish' : 'Complete Step'}
</Button>
))} */}
</div>
</div>
</div>
<Box m={2}/>
<CardContent>
<BottomNavigation className={classes.stickToBottom}>
<Button
disabled={activeStep === 0}
onClick={handleBack}
className={classes.button}>
Etape précédente
</Button>
<Button
variant="contained"
color="primary"
onClick={handleNext}
className={classes.button}>
Etape suivante
</Button>
{/* <BottomNavigationAction label="Recents" icon={< RestoreIcon />}/>
<BottomNavigationAction label="Favorites" icon={< FavoriteIcon />}/>
<BottomNavigationAction label="Nearby" icon={< LocationOnIcon />}/> */}
</BottomNavigation>
</CardContent>
</Card>
</Tabs>
</Paper>
</div>
</Grid>
<Grid item lg={3} md={3} xl={4} xs={12}>
</Grid>
<Grid item lg={9} md={6} xl={8} xs={12}>
{getStepContent(activeStep)}
<Grid item lg={6} md={6} xl={4} xs={12} >
<AccountEtape1 ></AccountEtape1>
<AccountEtape2 ></AccountEtape2>
<AccountEtape3 ></AccountEtape3>
</Grid>
<Grid item lg={3} md={3} xl={4} xs={12}>
</Grid>
</Grid>
+42 -42
View File
@@ -8,7 +8,7 @@ import Chip from '@material-ui/core/Chip';
import CardContent from '@material-ui/core/CardContent';
import CardMedia from '@material-ui/core/CardMedia';
import Typography from '@material-ui/core/Typography';
import IconText from './../atoms/IconText';
import IconText from './../atoms/IconTextInline';
import KeyboardArrowleftIcon from '@material-ui/icons/PlayArrowRounded';
import ArrowForwardIcon from '@material-ui/icons/ArrowForward';
import Link from 'next/link';
@@ -83,11 +83,11 @@ const styles = theme => ({
},
iconTextIcon: {
color: theme.palette.offerlistitem.icon,
fontSize: '0.8em',
fontSize: '1em',
},
iconTextText: {
color: theme.palette.offerlistitem.text,
fontSize: '0.6em',
fontSize: '1em',
paddingLeft: theme.spacing(1),
},
bottomCard: {
@@ -96,8 +96,9 @@ const styles = theme => ({
width: '90%',
},
chip: {
color: theme.palette.secondary.main,
backgroundColor: theme.palette.primary.important,
marginTop :"10px",
backgroundColor:"#E7F3FF",
color:theme.palette.primary.dark,
},
icon: {
color: theme.palette.secondary.dark,
@@ -112,50 +113,30 @@ const { publicRuntimeConfig } = getConfig()
//must go in API
const status = new Map([
["DRAFT"
, "Brouillon"]
["A_TRAITER"
, "Envoyée"]
,
["TO_PUBLISH"
, "En cours de validation"]
["CONTACTE"
, "En cours de traitement"]
,
["VALIDATED"
, "Validée"]
["ENTRETIEN"
, "En cours de traitement"]
,
["PUBLISHED"
, "Publiée"]
["REFUSE"
, "Refusée"]
,
["CLOSED"
, "Cloturée"]
["EMBAUCHE"
, "Embauchée"]
,
["EXPIRED"
, "Expirée"]
,
["SENDED"
[""
, "Envoyée"]
,
["DECLINED"
, "Refusée"]
["Null"
, "Envoyée"]
,
["NEW"
, "Nouveau"]
,
["VIEWED"
, "Visionnée"]
,
["NEGATIVE"
, "Négatif"]
,
["POSITIVE"
, "Positif"]
,
["INFOS"
, "Demande dinformations"]
,
["CONTACTED"
, "Demande dinformations"]
,
["CONTACTED.RDV"
, "Convocation entretien"]
])
class AnswerRowComponent extends React.Component {
@@ -169,12 +150,14 @@ class AnswerRowComponent extends React.Component {
companyR = rowData.ad.company;
else
companyR = company;
console.log(rowData);
const ville = (rowData.ad && rowData.ad.location && rowData.ad.location.gmap_address && rowData.ad.location.gmap_address.address_components[0] )
? rowData.ad.location.gmap_address.address_components[0].long_name
: "ND"
const imgUrl = (rowData.ad && rowData.ad.video && rowData.ad.video.thumbnails[0] && rowData.ad.video.thumbnails[0].sizes[4])
? rowData.ad.video.thumbnails[0].sizes[4].link
: publicRuntimeConfig.adListDefaultUrl
const logoUrl = publicRuntimeConfig.symphonyUrl + publicRuntimeConfig.cachedMediaUrl + companyR.logo
return (
<Link href={`/Candidature/${rowData.id}`} >
<Card className={classes.card} >
@@ -204,8 +187,18 @@ class AnswerRowComponent extends React.Component {
className={classes.companyTitle}>
{rowData.ad.company.brand_name&&rowData.ad.company.brand_name}
</Typography>
<Typography
variant="headline"
variant="h6"
component="h4"
className={classes.companyTitle}>
<IconText classes={{ root: classes.iconText, icon: classes.iconTextIcon, text: classes.iconTextText }} variant="place" text={ville} />
<IconText classes={{ root: classes.iconText, icon: classes.iconTextIcon, text: classes.iconTextText }} variant="assignment" text={rowData.ad.extra&&rowData.ad.extra.contract_type?rowData.ad.extra.contract_type:"ND"} />
<IconText classes={{ root: classes.iconText, icon: classes.iconTextIcon, text: classes.iconTextText }} variant="watch_later" text={(new Date(rowData.c_time)).toLocaleDateString("fr-FR")} />
</Typography>
<div className={ classes.bottomCard }>
<Chip size="small" label={status.get(rowData.status)} className={classes.chip} />
<Chip size="small" label={status.get(rowData.status_reponse)? status.get(rowData.status_reponse) : "Envoyée" } className={classes.chip} />
<ArrowForwardIcon className={classes.icon} />
</div>
</div>
@@ -236,8 +229,15 @@ class AnswerRowComponent extends React.Component {
className={classes.companyTitle}>
{rowData.company.brand_name&&rowData.company.brand_name}
</Typography>
<Typography
variant="headline"
variant="h6"
component="h4"
className={classes.companyTitle}>
<IconText classes={{ root: classes.iconText, icon: classes.iconTextIcon, text: classes.iconTextText }} variant="watch_later" text={(new Date(rowData.c_time)).toLocaleDateString("fr-FR")} />
</Typography>
<div className={ classes.bottomCard }>
<Chip size="small" label={status.get(rowData.status)} className={classes.chip} />
<Chip size="small" label={status.get(rowData.status_reponse)? status.get(rowData.status_reponse) : "Envoyée" } className={classes.chip} />
<ArrowForwardIcon className={classes.icon} />
</div>
</div>
+4 -4
View File
@@ -485,12 +485,12 @@ class Header extends React.Component {
<Divider light={true} />
<div className={classes.linkGroup}>
<a href={publicRuntimeConfig.symphonyUrl + "/"} 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>
</ListItem>
</a>
</a> */}
</div>
</List>
</div>
@@ -529,7 +529,7 @@ class Header extends React.Component {
<a className={classes.lightMenuItem}>
<ListItem classes={{ root: classes.rootListItemIcon }}>
<AccountCircleIcon className={classes.icon} />
<ListItemText primary='Mon compte'>
<ListItemText primary='Mon profil'>
</ListItemText>
</ListItem>
</a>
@@ -538,7 +538,7 @@ class Header extends React.Component {
<Link href="/Parametres" >
<a className={classes.lightMenuItem}><ListItem classes={{ root: classes.rootListItemIcon }}>
<SettingsIcon className={classes.icon} />
<ListItemText primary='Paramètres de notification'>
<ListItemText primary='Paramètres'>
</ListItemText>
</ListItem></a>
</Link>
@@ -397,12 +397,12 @@ class HeaderPersonnalise extends React.Component {
<Divider light={true} />
<div className={classes.linkGroup}>
<a href={publicRuntimeConfig.symphonyUrl + "/"} 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>
</ListItem>
</a>
</a> */}
</div>
</List>
</div>}
@@ -438,7 +438,7 @@ class HeaderPersonnalise extends React.Component {
<a className={classes.lightMenuItem}>
<ListItem classes={{ root: classes.rootListItemIcon }}>
<AccountCircleIcon className={classes.icon} />
<ListItemText primary='Mon compte'>
<ListItemText primary='Mon profil'>
</ListItemText>
</ListItem>
</a>
@@ -447,7 +447,7 @@ class HeaderPersonnalise extends React.Component {
<Link href="/Parametres" >
<a className={classes.lightMenuItem}><ListItem classes={{ root: classes.rootListItemIcon }}>
<SettingsIcon className={classes.icon} />
<ListItemText primary='Paramètres de notification'>
<ListItemText primary='Paramètres'>
</ListItemText>
</ListItem></a>
</Link>
+10 -8
View File
@@ -750,7 +750,7 @@ function OffreDetail(props) {
{/* <a href={entrepriseLink}> */}
{/* const entrepriseLink = (offre.company && `/Entreprise/${offre.company.id}-${_.kebabCase(offre.company.brand_name)}`); */}
<link rel="preload" as="image" href={isWidthUp('xs', props.width) ? imgUrlDesktop : imgUrl}/>
<Link href={`/Player?id=${offre.company.id}&url=/Offre/${offre.id}-${_.kebabCase(offre.title)}&videoId=${Ar.last(_.split(offre.company.presentation_video.cdn_url, '/'))}&typeEntite=Entreprise&nameCompany=${offre.company.brand_name}&nameOffre=`} >
<div className={classes.discoverContainerImage}>
<img src={isWidthUp('sm', props.width) ? imgUrlDesktop : imgUrl} alt={offre.company.brand_name && offre.company.brand_name} />
@@ -831,7 +831,7 @@ function OffreDetail(props) {
{/* <VideoVimeo {...isCandidature == 'true' ? 'classes={{ video: classes.videoOffre }}' : ''} videoId={Ar.last(_.split(offre.video.cdn_url, '/'))} autoplay='1' /> */}
<div className={classes.contentContainer}>
<link rel="preload" as="image" href={isWidthUp('xs', props.width) ? imgUrlDesktopOffre : imgUrlOffre}/>
<Link href={`/Player?id=${offre.id}&url=/Offre/${offre.id}-${_.kebabCase(offre.title)}&videoId=${Ar.last(_.split(offre.video.cdn_url, '/'))}&typeEntite=Offre&nameCompany=${offre.company && offre.company.brand_name}&nameOffre=${offre.title}`} >
<div className={classes.discoverContainerImage}>
<img src={isWidthUp('sm', props.width) ? imgUrlDesktopOffre : imgUrlOffre} alt={offre.company.brand_name && offre.company.brand_name} />
@@ -845,7 +845,7 @@ function OffreDetail(props) {
</div>
<KeyboardArrowleftIcon className={classes.iconPlay} />
<Typography variant="h3" component="h3" className={classes.playerTexte}>
Lire la vidéo
Lire la vidéo.
</Typography>
</div>
</Link>
@@ -879,7 +879,7 @@ function OffreDetail(props) {
{/* <a href={entrepriseLink}> */}
{/* const entrepriseLink = (offre.company && `/Entreprise/${offre.company.id}-${_.kebabCase(offre.company.brand_name)}`); */}
<link rel="preload" as="image" href={isWidthUp('xs', props.width) ? imgUrlDesktop : imgUrl}/>
<Link href={`/Player?id=${offre.company.id}&url=/Offre/${offre.id}-${_.kebabCase(offre.title)}&videoId=${Ar.last(_.split(offre.company.presentation_video.cdn_url, '/'))}&typeEntite=Entreprise&nameCompany=${offre.company.brand_name}&nameOffre=`} >
<div className={classes.discoverContainerImage}>
<img src={isWidthUp('sm', props.width) ? imgUrlDesktop : imgUrl} alt={offre.company.brand_name && offre.company.brand_name} />
@@ -900,6 +900,7 @@ function OffreDetail(props) {
{offre.territories && territoryVideoId && (
<div className={classes.container + ' ' + classes.discoverContainerTerritory}>
<section>
<link rel="preload" as="image" href={isWidthUp('xs', props.width) ? imgUrlDesktopTerritoire : imgUrlTerritoire}/>
<Link href={`/Player?id=${offre.territories[0].territory.id}&url=/Offre/${offre.id}-${_.kebabCase(offre.title)}&videoId=${territoryVideoId}&typeEntite=Territoire&nameCompany=${offre.territories[0].territory.brand_name}&nameOffre=`} >
<div className={classes.discoverContainerImage}>
<img src={isWidthUp('sm', props.width) ? imgUrlDesktopTerritoire : imgUrlTerritoire} alt={(!!!offre.territories) ? offre.territories[0].territory.brand_name : ''} />
@@ -984,8 +985,8 @@ function OffreDetail(props) {
</Hidden>
{/* PARTIE MOBILE */}
<Hidden mdUp>
<section className={classes.contentContainerMobile}>
<section className={classes.contentContainerMobile}>
<link rel="preload" as="image" href={isWidthUp('xs', props.width) ? imgUrlDesktopOffre : imgUrlOffre}/>
<Link href={`/Player?id=${offre.id}&url=/Offre/${offre.id}-${_.kebabCase(offre.title)}&videoId=${Ar.last(_.split(offre.video && offre.video.cdn_url, '/'))}&typeEntite=Offre&nameCompany=${offre.company && offre.company.brand_name}&nameOffre=${offre.title}`} >
<div className={classes.discoverContainerImage}>
<img src={isWidthUp('xs', props.width) ? imgUrlDesktopOffre : imgUrlOffre} alt={offre.company && offre.company.brand_name && offre.company.brand_name} />
@@ -1046,10 +1047,10 @@ function OffreDetail(props) {
<div className={classes.container + ' ' + classes.discoverContainerCompany}>
<section>
{/* <a href={entrepriseLink}> */}
{/* const entrepriseLink = (offre.company && `/Entreprise/${offre.company.id}-${_.kebabCase(offre.company.brand_name)}`); */}
<link rel="preload" as="image" href={isWidthUp('xs', props.width) ? imgUrlDesktop : imgUrl}/>
<Link href={`/Player?id=${offre.company.id}&url=/Offre/${offre.id}-${_.kebabCase(offre.title)}&videoId=${Ar.last(_.split(offre.company.presentation_video.cdn_url, '/'))}&typeEntite=Entreprise&nameCompany=${offre.company.brand_name}&nameOffre=`} >
<div className={classes.discoverContainerImage}>
<img src={isWidthUp('xs', props.width) ? imgUrlDesktop : imgUrl} alt={offre.company.brand_name && offre.company.brand_name} />
@@ -1070,6 +1071,7 @@ function OffreDetail(props) {
{offre.territories && territoryVideoId && (
<div className={classes.container + ' ' + classes.discoverContainerTerritory}>
<section>
<link rel="preload" as="image" href={isWidthUp('xs', props.width) ? imgUrlDesktopTerritoire : imgUrlTerritoire}/>
<Link href={`/Player?id=${offre.territories[0].territory.id}&url=/Offre/${offre.id}-${_.kebabCase(offre.title)}&videoId=${territoryVideoId}&typeEntite=Territoire&nameCompany=${offre.territories[0].territory.brand_name}&nameOffre=${offre.title}`} >
<div className={classes.discoverContainerImage}>
<img src={isWidthUp('sm', props.width) ? imgUrlDesktopTerritoire : imgUrlTerritoire} alt={(!!!offre.territories) ? offre.territories[0].territory.brand_name : ''} />
+5
View File
@@ -253,6 +253,11 @@ myButtonDom.onclick = function(){
formData.append('upload', this.player.recordedData, "myupload");
this.props.uploader(formData);
console.log("REDIRECTION OU PAS");
console.log(this.props.retour);
if(this.props.retour=="home"){
window.location.replace("/");
}
}
recordPlayer = () => {
+8 -8
View File
@@ -46,16 +46,16 @@ module.exports = withPlugins(
// frontServerUrl: 'http://localhost:3000',
// cvThequeUrl: 'https://recruteur.talentstube.com',
// PROD
// symphonyUrl: 'https://recruteur.talentstube.com/',
// blogUrl: 'https://blog.talentstube.com',
// frontServerUrl: 'https://www.talentstube.com/',
// cvThequeUrl: 'https://recruteur.talentstube.com',
// PRE PROD
symphonyUrl: 'https://pp.talentstube.com/',
symphonyUrl: 'https://recruteur.talentstube.com/',
blogUrl: 'https://blog.talentstube.com',
frontServerUrl: 'https://pp.app.talentstube.com/',
frontServerUrl: 'https://www.talentstube.com/',
cvThequeUrl: 'https://recruteur.talentstube.com',
version : 'V2.8.2',
// PRE PROD
// symphonyUrl: 'https://pp.talentstube.com/',
// blogUrl: 'https://blog.talentstube.com',
// frontServerUrl: 'https://pp.app.talentstube.com/',
// cvThequeUrl: 'https://recruteur.talentstube.com',
version : 'V2.10.3',
adListDefaultUrl: '/statique/images/default/default_picture_company.jpg',
cachedMediaUrl: '/media/cache/profile_thumb/uploads/img/',
postedContentUrl: '/uploads/img/',
+57 -1
View File
@@ -1,10 +1,60 @@
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://www.talentstube.com/Offre/149-commercial-b-to-b-f-h/</loc>
<lastmod>2021-05-17</lastmod>
<priority>1.00</priority>
</url>
<url>
<loc>https://www.talentstube.com/Offre/150-responsable-webmarketing-f-h/</loc>
<lastmod>2021-05-17</lastmod>
<priority>1.00</priority>
</url>
<url>
<loc>https://www.talentstube.com/Entreprise/33190-les-francas-doubs/</loc>
<lastmod>2021-04-26</lastmod>
<priority>1.00</priority>
</url>
<url>
<loc>https://www.talentstube.com/Offre/148-educateur-de-jeunes-enfants-f-h</loc>
<lastmod>2021-04-26</lastmod>
<priority>1.00</priority>
</url>
<url>
<loc>https://www.talentstube.com/Offre/146-animateur-ado-f-h</loc>
<lastmod>2021-04-17</lastmod>
<priority>1.00</priority>
</url>
<url>
<loc>https://www.talentstube.com/Offre/144-soudeur-f-h</loc>
<lastmod>2021-04-19</lastmod>
<priority>1.00</priority>
</url>
<url>
<loc>https://www.talentstube.com/Offre/143-dessinateur-3-d-f-h</loc>
<lastmod>2021-04-19</lastmod>
<priority>1.00</priority>
</url>
<url>
<loc>https://www.talentstube.com/Offre/142-charge-daffaires-f-h</loc>
<lastmod>2021-03-24</lastmod>
<priority>1.00</priority>
</url>
<url>
<loc>https://www.talentstube.com/Player?id=146&amp;url=/Offre/146-animateur-ado-f-h&amp;videoId=535772088&amp;typeEntite=Offre&amp;nameCompany=Les%20Francas%20du%20Doubs&amp;nameOffre=Animateur%20Ado%20(F/H)</loc>
<lastmod>2021-02-10</lastmod>
<priority>1.00</priority>
</url>
<url>
<loc>https://www.talentstube.com/Player?id=135&amp;url=/Offre/135-commercial-b-to-c-f-h&amp;videoId=502499843&amp;typeEntite=Offre&amp;nameCompany=Fym%20Action&amp;nameOffre=Commercial%20B%20to%20C%20(F/H)</loc>
<lastmod>2021-02-10</lastmod>
<priority>1.00</priority>
</url>
<url>
<loc>https://www.talentstube.com/Player?id=135&amp;url=/Offre/135-commercial-b-to-c-f-h&amp;videoId=502499843&amp;typeEntite=Offre&amp;nameCompany=Fym%20Action&amp;nameOffre=Commercial%20B%20to%20C%20(F/H)</loc>
<lastmod>2021-02-10</lastmod>
<priority>1.00</priority>
</url>
<url>
<loc>https://www.talentstube.com/Player?id=135&amp;url=/Offre/135-commercial-b-to-c-f-h&amp;videoId=502499843&amp;typeEntite=Offre&amp;nameCompany=Fym%20Action&amp;nameOffre=Commercial%20B%20to%20C%20(F/H)</loc>
<lastmod>2021-02-10</lastmod>
@@ -149,7 +199,13 @@
<loc>https://www.talentstube.com/Player?id=12480&amp;url=/Entreprise/12480-fym-action&amp;videoId=345898361&amp;typeEntite=Entreprise&amp;nameCompany=Fym%20Action&amp;nameOffre=</loc>
<lastmod>2021-02-10</lastmod>
<priority>1.00</priority>
</url><url>
</url>
<url>
<loc>https://www.talentstube.com/Offre/143-dessinateur-3d-f-h</loc>
<lastmod>2021-03-31</lastmod>
<priority>1.00</priority>
</url>
<url>
<loc>https://www.talentstube.com/Offre/140-aide-a-domicile-f-h</loc>
<lastmod>2021-02-10</lastmod>
<priority>1.00</priority>
+243 -3
View File
@@ -1,5 +1,5 @@
import React from 'react';
import React, { useState } from 'react'
import { connect } from "react-redux";
import PropTypes from 'prop-types';
import _ from "lodash"
@@ -12,8 +12,34 @@ import { fetchJobsAnsweredRequest } from '../actions/answer'
import { AnswersSelector } from '../reducers/answers'
import Head from 'next/head'
import Link from 'next/link';
import AppBar from '@material-ui/core/AppBar';
import Paper from '@material-ui/core/Paper';
import Tabs from '@material-ui/core/Tabs';
import Tab from '@material-ui/core/Tab';
import Box from '@material-ui/core/Box';
import GridBouton from '@material-ui/core/Grid';
import IconButton from '@material-ui/core/IconButton';
import AccountIcon from '@material-ui/icons/AccountCircle';
import MovieIcon from '@material-ui/icons/Movie';
import DescriptionIcon from '@material-ui/icons/Description';
const styles = theme => ({
menu: {
flexGrow: 1,
},
menu2: {
flexGrow: 1,
textAlign: 'center',
justifyContent: 'center',
padding: theme.spacing(2),
},
indicatorColor:{
backgroundColor: theme.palette.primary.main,
},
textColor:{
color: theme.palette.primary.dark,
},
root: {
position: 'relative',
textAlign: 'center',
@@ -41,13 +67,83 @@ const styles = theme => ({
marginBottom: theme.spacing(3),
padding: theme.spacing(0, 8),
},
boutonAction:{
border: "none",
height: "6em",
padding: "1em",
backgroundColor: theme.palette.primary.main,
textAlign: "left",
borderRadius: "20px",
cursor: "pointer",
boxShadow: "0px 2px 5px rgb(30 35 39 / 5%)",
transition: "background-color 0.3s",
transition: "box-shadow 0.5s",
color: "#fff !important"
},
conteneurbouton:{
width:"100%",
display: "flex",
flexWrap: "wrap",
justifyContent: "space-around"
},
conteneurbouton1:{
width:"30%",
display:"inline-block",
paddingRight:"2em",
},
conteneurbouton2:{
width:"30%",
display:"inline-block",
paddingRight:"2em",
},
conteneurbouton3:{
width:"30%",
display:"inline-block",
paddingRight:"2em",
},
paper: {
width: "100%",
fontFamily: '"Roboto", "Helvetica", "Arial", "sans-serif"',
},
});
class Candidatures extends React.Component {
constructor(props, context) {
super(props, context);
}
state = {
value: "",
setValue:"",
}
componentDidMount() {
this.setState({
value: 0,
})
}
render() {
const { classes } = this.props;
const tabData = 0;
const handleChange = (event, newValue) => {
this.setState({
value: newValue,
})
if(newValue==0){
document.location.href="/Candidatures";
}else if(newValue==1){
document.location.href="/profileStep";
}else if(newValue==2){
document.location.href="/Parametres";
}
//
console.log(newValue);
};
return (
<LayoutGrid backLink="/">
@@ -55,14 +151,158 @@ class Candidatures extends React.Component {
<title key="title">Candidatures</title>
<meta name="robots" content="noindex, nofollow"></meta>
</Head>
{/* <div className={classes.root}>
<AppBar position="static" color="default">
<Tabs
value={this.state.value}
onChange={handleChange}
indicatorColor="primary"
textColor="primary"
variant="scrollable"
scrollButtons="auto"
aria-label="scrollable auto tabs example"
>
<Tab label="Item One" {...a11yProps(0)} />
<Tab label="Item Two" {...a11yProps(1)} />
<Tab label="Item Three" {...a11yProps(2)} />
<Tab label="Item Four" {...a11yProps(3)} />
<Tab label="Item Five" {...a11yProps(4)} />
<Tab label="Item Six" {...a11yProps(5)} />
<Tab label="Item Seven" {...a11yProps(6)} />
</Tabs>
</AppBar>
<TabPanel value={this.state.value} index={0}>
Item One
</TabPanel>
<TabPanel value={this.state.value} index={1}>
Item Two
</TabPanel>
<TabPanel value={this.state.value} index={2}>
Item Three
</TabPanel>
<TabPanel value={this.state.value} index={3}>
Item Four
</TabPanel>
<TabPanel value={this.state.value} index={4}>
Item Five
</TabPanel>
<TabPanel value={this.state.value} index={5}>
Item Six
</TabPanel>
<TabPanel value={this.state.value} index={6}>
Item Seven
</TabPanel>
</div> */}
<div>
<Paper className={classes.menu}>
{/* TODO */}
<Tabs
value={this.state.value}
onChange={handleChange}
indicatorColor="primary"
textColor="primary"
centered
>
<Tab label="Mes candidatures" />
<Tab label="Mon profil" />
</Tabs>
</Paper>
</div>
{/* Boutons d'actions */}
{/* <div className={classes.conteneurbouton}>
<div className={classes.conteneurbouton1}>
<div className={classes.boutonAction}>test</div>
</div>
<div className={classes.conteneurbouton2}>
<div className={classes.boutonAction}>test2</div>
</div>
<div className={classes.conteneurbouton3}>
<div className={classes.boutonAction}>test3</div>
</div>
</div> */}
<GridBouton container className={classes.menu2} spacing={4}>
<GridBouton item xs={12} sm={1} lg={1} >
</GridBouton >
<GridBouton item xs={12} sm={10} lg={10} >
<GridBouton container justify="center" spacing={4}>
<GridBouton key={0} item xs={12} sm={4} >
<Link href={"/profileStep#information"} >
<Paper className={classes.paper} elevation={0}>
<div className={classes.boutonAction}>
<div>
<IconButton
key="info"
color="inherit"
className={classes.close}
>
<AccountIcon />
</IconButton>
</div>
Compléter mes informations
</div>
</Paper>
</Link>
</GridBouton>
<GridBouton key={1} item xs={12} sm={4}>
<Link href={"/profileStep#video"} >
<Paper className={classes.paper} elevation={0}>
<div className={classes.boutonAction}>
<div>
<IconButton
key="video"
color="inherit"
className={classes.close}
>
<MovieIcon />
</IconButton>
</div>
Ajouter ma vidéo de présentation
</div>
</Paper>
</Link>
</GridBouton>
<GridBouton key={2} item xs={12} sm={4}>
<Link href={"/profileStep#cv"} >
<Paper className={classes.paper} elevation={0}>
<div className={classes.boutonAction}>
<div>
<IconButton
key="cv"
color="inherit"
className={classes.close}
>
<DescriptionIcon />
</IconButton>
</div>
Ajouter mon CV
</div>
</Paper>
</Link>
</GridBouton>
</GridBouton>
</GridBouton>
<GridBouton item xs={12} sm={1} lg={1} >
</GridBouton >
</GridBouton>
<Typography component="h1" align="center" className={classes.title} gutterBottom>
Mes candidatures
</Typography>
<div className={classes.container}>
<Grid CustomRowComponent={AnswerRow}
dataFetcher={this.props.fetchJobsAnsweredRequest}
data={this.props.answers}
+4 -2
View File
@@ -71,8 +71,10 @@ class Player extends Component {
render() {
const { classes, id, url, typeEntite, videoId, nameCompany, nameOffre } = this.props
const urlEnv = process.env.NODE_ENV;
let nofollow = true;
urlEnv == "development" ? nofollow = true : nofollow = false;
//pour la MEP
{/* A ENLEVER EN PROD */}
let nofollow = false;
urlEnv == "development" ? nofollow = false : nofollow = false;
console.log(id);
console.log(typeEntite);
+1 -1
View File
@@ -116,7 +116,7 @@ class ResetPassword extends Component {
align="center"
variant="h5"
>
Réinitialisation du mot de passe
Modifier mot de passe
</Typography>
{loading && (
+35 -35
View File
@@ -535,7 +535,7 @@ class Index extends React.Component {
className={classes.beforeTitle}>
à la une
</Typography>
<Typography gutterBottom component="h1"
<Typography gutterBottom component="h2"
className={classes.title}>
Les offres d'emploi en <span className={classes.primary}>vidéo</span>
</Typography>
@@ -574,7 +574,7 @@ class Index extends React.Component {
className={classes.beforeTitle}>
à la une
</Typography>
<Typography gutterBottom component="h1"
<Typography gutterBottom component="h2"
className={classes.title}>
Les entreprises en <span className={classes.primary}>vidéo</span>
</Typography>
@@ -615,7 +615,7 @@ class Index extends React.Component {
className={classes.beforeTitle}>
Témoignage
</Typography>
<Typography gutterBottom component="h1"
<Typography gutterBottom component="h2"
className={classes.title}>
Le recrutement en <span className={classes.primary}>vidéo</span>
</Typography>
@@ -648,67 +648,67 @@ class Index extends React.Component {
<Slider ref={slider => (this.slider = slider)} {...settings}>
<a href="/Entreprise/21247-lactalis-logistique-et-transports">
<div className={classes.sliderDiv}>
<img className={classes.alignVertical} src="/statique/images/logos/recrutement-video-lactalis.jpg"></img>
<img className={classes.alignVertical} alt="Offres d'emploi Lactalis" src="/statique/images/logos/recrutement-video-lactalis.jpg"></img>
</div>
</a>
<a href="/Entreprise/28481-onela">
<div className={classes.sliderDiv}>
<img className={classes.alignVertical} src="/statique/images/logos/recrutement-video-onela-service-a-domicile.jpg"></img>
<img className={classes.alignVertical} alt="Offres d'emploi Onela" src="/statique/images/logos/recrutement-video-onela-service-a-domicile.jpg"></img>
</div>
</a>
<a href="/Entreprise/19205-intermarche-logistique-alimentaire-international">
<div className={classes.sliderDiv}>
<img className={classes.alignVertical} src="/statique/images/logos/recrutement-video-intermarche.jpg"></img>
<img className={classes.alignVertical} alt="Offres d'emploi Intermarché" src="/statique/images/logos/recrutement-video-intermarche.jpg"></img>
</div>
</a>
<a href="/Entreprise/4059-eiffage-construction-grand-ouest">
<div className={classes.sliderDiv}>
<img className={classes.alignVertical} src="/statique/images/logos/recrutement-video-eiffage.jpg"></img>
<img className={classes.alignVertical} alt="Offres d'emploi Eiffage" src="/statique/images/logos/recrutement-video-eiffage.jpg"></img>
</div>
</a>
<a href="/Entreprise/8639-mma-questembert">
<div className={classes.sliderDiv}>
<img className={classes.alignVertical} src="/statique/images/logos/recrutement-video-mma-assurances.jpg"></img>
<img className={classes.alignVertical} alt="Offres d'emploi MMA" src="/statique/images/logos/recrutement-video-mma-assurances.jpg"></img>
</div>
</a>
<a href="/Entreprise/32987-admr-56">
<div className={classes.sliderDiv}>
<img className={classes.alignVertical} src="/statique/images/logos/recrutement-video-ADMR.jpg"></img>
<img className={classes.alignVertical} alt="Offres d'emploi ADMR" src="/statique/images/logos/recrutement-video-ADMR.jpg"></img>
</div>
</a>
<a href="/Entreprise/13464-jpa">
<div className={classes.sliderDiv}>
<img className={classes.alignVertical} src="/statique/images/logos/recrutement-video-jpa.jpg"></img>
<img className={classes.alignVertical} alt="Offres d'emploi JPA" src="/statique/images/logos/recrutement-video-jpa.jpg"></img>
</div>
</a>
<a href="/Entreprise/2527-groupe-mousset">
<div className={classes.sliderDiv}>
<img className={classes.alignVertical} src="/statique/images/logos/recrutement-video-groupe-mousset.jpg"></img>
<img className={classes.alignVertical} alt="Offres d'emploi Groupe Mousset" src="/statique/images/logos/recrutement-video-groupe-mousset.jpg"></img>
</div>
</a>
<a href="/Entreprise/1467-groupe-rocher-operations">
<div className={classes.sliderDiv}>
<img className={classes.alignVertical} src="/statique/images/logos/recrutement-video-groupe-rocher.jpg"></img>
<img className={classes.alignVertical} alt="Offres d'emploi Groupe Rocher" src="/statique/images/logos/recrutement-video-groupe-rocher.jpg"></img>
</div>
</a>
<a href="/Entreprise/26064-aer-recyclage">
<div className={classes.sliderDiv}>
<img className={classes.alignVertical} src="/statique/images/logos/recrutement-video-aer-recyclage.jpg"></img>
<img className={classes.alignVertical} alt="Offres d'emploi AER Recyclage" src="/statique/images/logos/recrutement-video-aer-recyclage.jpg"></img>
</div>
</a>
<a href="/Entreprise/46-actual">
<div className={classes.sliderDiv}>
<img className={classes.alignVertical} src="/statique/images/logos/recrutement-video-actual.jpg"></img>
<img className={classes.alignVertical} alt="Offres d'emploi Actual" src="/statique/images/logos/recrutement-video-actual.jpg"></img>
</div>
</a>
<a href="/Entreprise/31934-la-centrale-des-ramoneurs">
<div className={classes.sliderDiv}>
<img className={classes.alignVertical} src="/statique/images/logos/recrutement-video-la-centrale-des-ramoneurs.jpg"></img>
<img className={classes.alignVertical} alt="Offres d'emploi La centrale des ramoneurs" src="/statique/images/logos/recrutement-video-la-centrale-des-ramoneurs.jpg"></img>
</div>
</a>
<a href="/Entreprise/32507-tpc-ouest">
<div className={classes.sliderDiv}>
<img className={classes.alignVertical} src="/statique/images/logos/recrutement-video-tpc-ouest-btp.jpg"></img>
<img className={classes.alignVertical} alt="Offres d'emploi TPC Ouest" src="/statique/images/logos/recrutement-video-tpc-ouest-btp.jpg"></img>
</div>
</a>
@@ -717,69 +717,69 @@ class Index extends React.Component {
{/* PARTIE Mobile */}
<Hidden mdUp>
<div className={classes.sliderContainerMobile}>
<a href="/Entreprise/21247-lactalis-logistique-et-transports">
<a href="/Entreprise/21247-lactalis-logistique-et-transports" >
<div className={classes.sliderDivMobile}>
<img className={classes.alignVerticalMobile} src="/statique/images/logos/recrutement-video-lactalis.jpg"></img>
<img className={classes.alignVerticalMobile} alt="Offres d'emploi Lactalis" src="/statique/images/logos/recrutement-video-lactalis.jpg"></img>
</div>
</a>
<a href="/Entreprise/28481-onela">
<a href="/Entreprise/28481-onela" >
<div className={classes.sliderDivMobile}>
<img className={classes.alignVerticalMobile} src="/statique/images/logos/recrutement-video-onela-service-a-domicile.jpg"></img>
<img className={classes.alignVerticalMobile} alt="Offres d'emploi Onela" src="/statique/images/logos/recrutement-video-onela-service-a-domicile.jpg"></img>
</div>
</a>
<a href="/Entreprise/19205-intermarche-logistique-alimentaire-international">
<a href="/Entreprise/19205-intermarche-logistique-alimentaire-international" >
<div className={classes.sliderDivMobile}>
<img className={classes.alignVerticalMobile} src="/statique/images/logos/recrutement-video-intermarche.jpg"></img>
<img className={classes.alignVerticalMobile} alt="Offres d'emploi Intermarché" src="/statique/images/logos/recrutement-video-intermarche.jpg"></img>
</div>
</a>
<a href="/Entreprise/4059-eiffage-construction-grand-ouest">
<a href="/Entreprise/4059-eiffage-construction-grand-ouest" >
<div className={classes.sliderDivMobile}>
<img className={classes.alignVerticalMobile} src="/statique/images/logos/recrutement-video-eiffage.jpg"></img>
<img className={classes.alignVerticalMobile} alt="Offres d'emploi Eiffage" src="/statique/images/logos/recrutement-video-eiffage.jpg"></img>
</div>
</a>
<a href="/Entreprise/8639-mma-questembert">
<a href="/Entreprise/8639-mma-questembert" >
<div className={classes.sliderDivMobile}>
<img className={classes.alignVerticalMobile} src="/statique/images/logos/recrutement-video-mma-assurances.jpg"></img>
<img className={classes.alignVerticalMobile} alt="Offres d'emploi MMA" src="/statique/images/logos/recrutement-video-mma-assurances.jpg"></img>
</div>
</a>
<a href="/Entreprise/32987-admr-56">
<a href="/Entreprise/32987-admr-56" >
<div className={classes.sliderDivMobile}>
<img className={classes.alignVerticalMobile} src="/statique/images/logos/recrutement-video-ADMR.jpg"></img>
<img className={classes.alignVerticalMobile} alt="Offres d'emploi ADMR" src="/statique/images/logos/recrutement-video-ADMR.jpg"></img>
</div>
</a>
<a href="/Entreprise/13464-jpa">
<div className={classes.sliderDivMobile}>
<img className={classes.alignVerticalMobile} src="/statique/images/logos/recrutement-video-jpa.jpg"></img>
<img className={classes.alignVerticalMobile} alt="Offres d'emploi JPA" src="/statique/images/logos/recrutement-video-jpa.jpg"></img>
</div>
</a>
<a href="/Entreprise/2527-groupe-mousset">
<div className={classes.sliderDivMobile}>
<img className={classes.alignVerticalMobile} src="/statique/images/logos/recrutement-video-groupe-mousset.jpg"></img>
<img className={classes.alignVerticalMobile} alt="Offres d'emploi Groupe Mousset" src="/statique/images/logos/recrutement-video-groupe-mousset.jpg"></img>
</div>
</a>
<a href="/Entreprise/1467-groupe-rocher-operations">
<div className={classes.sliderDivMobile}>
<img className={classes.alignVerticalMobile} src="/statique/images/logos/recrutement-video-groupe-rocher.jpg"></img>
<img className={classes.alignVerticalMobile} alt="Offres d'emploi Groupe Rocher" src="/statique/images/logos/recrutement-video-groupe-rocher.jpg"></img>
</div>
</a>
<a href="/Entreprise/26064-aer-recyclage">
<div className={classes.sliderDivMobile}>
<img className={classes.alignVerticalMobile} src="/statique/images/logos/recrutement-video-aer-recyclage.jpg"></img>
<img className={classes.alignVerticalMobile} alt="Offres d'emploi AER" src="/statique/images/logos/recrutement-video-aer-recyclage.jpg"></img>
</div>
</a>
<a href="/Entreprise/46-actual">
<div className={classes.sliderDivMobile}>
<img className={classes.alignVerticalMobile} src="/statique/images/logos/recrutement-video-actual.jpg"></img>
<img className={classes.alignVerticalMobile} alt="Offres d'emploi Actual" src="/statique/images/logos/recrutement-video-actual.jpg"></img>
</div>
</a>
<a href="/Entreprise/31934-la-centrale-des-ramoneurs">
<div className={classes.sliderDivMobile}>
<img className={classes.alignVerticalMobile} src="/statique/images/logos/recrutement-video-la-centrale-des-ramoneurs.jpg"></img>
<img className={classes.alignVerticalMobile} alt="Offres d'emploi La centrale des ramoneurs" src="/statique/images/logos/recrutement-video-la-centrale-des-ramoneurs.jpg"></img>
</div>
</a>
<a href="/Entreprise/32507-tpc-ouest">
<div className={classes.sliderDivMobile}>
<img className={classes.alignVerticalMobile} src="/statique/images/logos/recrutement-video-tpc-ouest-btp.jpg"></img>
<img className={classes.alignVerticalMobile} alt="TPC Ouest" src="/statique/images/logos/recrutement-video-tpc-ouest-btp.jpg"></img>
</div>
</a>
</div>
+10 -7
View File
@@ -1,15 +1,18 @@
.react-autosuggest__container {
position: relative;
width: 85%;
}
.react-autosuggest__input {
width: 240px;
width: 100%;
height: 30px;
padding: 10px 20px;
font-family: Helvetica, sans-serif;
font-weight: 300;
padding: 10px 0;
font-family: Roboto;
font-weight: 400;
font-size: 16px;
border: 1px solid #aaa;
border: 1px solid;
border-color: rgba(0, 0, 0, 0.23);
border-radius: 4px;
}
@@ -33,12 +36,12 @@
width: 280px;
border: 1px solid #aaa;
background-color: #fff;
font-family: Helvetica, sans-serif;
font-family: Roboto;
font-weight: 300;
font-size: 16px;
border-bottom-left-radius: 4px;
border-bottom-right-radius: 4px;
z-index: 2;
z-index: 10;
}
.react-autosuggest__suggestions-list {