Compare commits
44 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| ddb1abbe70 | |||
| e7b9298a3b | |||
| ea69a5f308 | |||
| 8fe612824b | |||
| e02f90634b | |||
| c9284e800a | |||
| 3e26ba8bca | |||
| f53743a03e | |||
| d90682c710 | |||
| 5456dfd4c4 | |||
| df81b18194 | |||
| ed9bfff65d | |||
| 39d29567ce | |||
| 10897f633d | |||
| 41916bc451 | |||
| 06e6b615b1 | |||
| ce95cb2d66 | |||
| fe1747ea90 | |||
| f6edb107b2 | |||
| 28ae59b7e4 | |||
| 65b6a9b9dc | |||
| d0ce6516dc | |||
| 12c3b2e1cd | |||
| 3fc5bc6424 | |||
| f0fe21a14e | |||
| 9c19993bcc | |||
| 00fdb164af | |||
| 6e6ac8e440 | |||
| 8259112aac | |||
| b0f66eb9fd | |||
| c08f3db680 | |||
| de1a56285d | |||
| 1e78256886 | |||
| 37c54c4dd0 | |||
| 21c61e6128 | |||
| 32e3826c27 | |||
| 9d647525b3 | |||
| ed19b99bba | |||
| 9c38c8c03d | |||
| f200235ced | |||
| 92a93452bb | |||
| 5626e2d592 | |||
| a52c855ec2 | |||
| 16e5218f16 |
@@ -10,6 +10,7 @@ import Business from '@material-ui/icons/Business';
|
||||
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';
|
||||
|
||||
const variantIcon = {
|
||||
assignment: AssignmentIcon,
|
||||
@@ -19,6 +20,7 @@ const variantIcon = {
|
||||
business: Business,
|
||||
watch_later: WatchLater,
|
||||
home: Home,
|
||||
people: People,
|
||||
};
|
||||
|
||||
const styles = theme => ({
|
||||
|
||||
@@ -7,6 +7,7 @@ import LocationOnIcon from '@material-ui/icons/LocationOn';
|
||||
import HomeOnIcon from '@material-ui/icons/Home';
|
||||
import WatchLater from '@material-ui/icons/WatchLater';
|
||||
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';
|
||||
|
||||
@@ -18,6 +19,7 @@ const variantIcon = {
|
||||
watch_later: WatchLater,
|
||||
business_center: BusinessCenterIcon,
|
||||
business: Business,
|
||||
people: People,
|
||||
};
|
||||
|
||||
const styles = theme => ({
|
||||
|
||||
@@ -8,7 +8,7 @@ const styles = theme => ({
|
||||
padding: theme.spacing(0, 4),
|
||||
},
|
||||
text: {
|
||||
fontFamily: 'Dosis',
|
||||
fontFamily: '"Roboto", "Helvetica", "Arial", "sans-serif"',
|
||||
fontSize: '1,2em',
|
||||
fontWeight: '500',
|
||||
color: theme.palette.primary.main,
|
||||
|
||||
@@ -1,17 +1,18 @@
|
||||
import React from 'react'
|
||||
import PropTypes from 'prop-types'
|
||||
import Head from 'next/head'
|
||||
|
||||
|
||||
const OgHead = props => {
|
||||
return (
|
||||
<Head>
|
||||
<title key="title">{props.seo_title}</title>
|
||||
<meta name="robots" content="noindex, nofollow"></meta>
|
||||
|
||||
<meta name="description" kenoindexy="description" content={props.seo_description} />
|
||||
<meta name="keywords" content={props.seo_key}/>
|
||||
<meta key="og:url" property="og:url" content={props.seo_url} />
|
||||
<meta key="og:type" property="og:type" content="article" />
|
||||
<meta key="og:title" property="og:title" content={props.seo_title} />
|
||||
<meta property="fb:app_id" content="1800752833559014" data-react-helmet="true"></meta>
|
||||
<meta
|
||||
key="og:description"
|
||||
property="og:description"
|
||||
@@ -19,16 +20,18 @@ const OgHead = props => {
|
||||
/>
|
||||
<meta name="keywords" content={props.seo_key}/>
|
||||
<meta key="og:image" property="og:image" content={props.image} />
|
||||
<meta key="og:image:width" property="og:image:width" content="355" />
|
||||
<meta key="og:image:height" property="og:image:height" content="200" />
|
||||
<meta name="twitter:card" content="summary"/>
|
||||
<meta name="twitter:site" content="@TalentsTube"/>
|
||||
<meta name="twitter:title" content={props.seo_title}/>
|
||||
<meta name="twitter:description" content={props.seo_description}/>
|
||||
<meta name="twitter:image" content={props.image}/>
|
||||
<meta name="robots" content="noindex, nofollow"></meta>
|
||||
{/* <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} /> */}
|
||||
|
||||
<link rel="canonical" href={ props.seo_url} />
|
||||
</Head>
|
||||
|
||||
)
|
||||
|
||||
@@ -72,7 +72,7 @@ export default function VideoVimeo(props) {
|
||||
|
||||
<section className={className +' '+classesOverride}>
|
||||
<iframe className='player'
|
||||
src={"https://player.vimeo.com/video/"+ videoId + options+"?autoplay="+autoplay}
|
||||
src={"https://player.vimeo.com/video/"+ videoId + options+"?texttrack=fr&autoplay="+autoplay}
|
||||
frameBorder="0"
|
||||
title={title}
|
||||
webkitallowfullscreen="true" mozallowfullscreen="true" allowFullScreen></iframe>
|
||||
|
||||
@@ -24,8 +24,8 @@ const theme = createMuiTheme({
|
||||
},
|
||||
offerlistitem: {
|
||||
title: '#1E2327',
|
||||
icon: '#BBBCBD',
|
||||
text: '#787B7D',
|
||||
icon: '#1E2327',
|
||||
text: '#1E2327',
|
||||
},
|
||||
answer: {
|
||||
main: '#E8E8E8',
|
||||
|
||||
@@ -368,7 +368,7 @@ class AccountEtape1 extends Component {
|
||||
className={classes.textField}
|
||||
classes={{ root: classes.rootTextfield }}
|
||||
variant="outlined"
|
||||
value={this.state.currentJob ? this.state.currentJob : ''}
|
||||
value={this.state.currentJob =='null' || this.state.currentJob =='' ? '' :this.state.currentJob}
|
||||
onChange={this.handleChange}
|
||||
onBlur={this.onBlur}
|
||||
/>
|
||||
@@ -442,7 +442,7 @@ class AccountEtape1 extends Component {
|
||||
classes={{ root: classes.rootTextfield }}
|
||||
variant="outlined"
|
||||
placeholder="http://www.linkedin.com/in/"
|
||||
value={this.state.linkedin ? this.state.linkedin : ''}
|
||||
value={this.state.linkedin =='null' || this.state.linkedin =='' ? '' :this.state.linkedin}
|
||||
onChange={this.handleChange}
|
||||
onBlur={this.onBlur}
|
||||
|
||||
@@ -456,7 +456,7 @@ class AccountEtape1 extends Component {
|
||||
classes={{ root: classes.rootTextfield }}
|
||||
variant="outlined"
|
||||
placeholder="http://twitter.com/.."
|
||||
value={this.state.twitter ? this.state.twitter : ''}
|
||||
value={this.state.twitter =='null' || this.state.twitter =='' ? '' :this.state.twitter}
|
||||
onChange={this.handleChange}
|
||||
onBlur={this.onBlur}
|
||||
/>
|
||||
@@ -469,7 +469,7 @@ class AccountEtape1 extends Component {
|
||||
classes={{ root: classes.rootTextfield }}
|
||||
variant="outlined"
|
||||
placeholder="http://monsite.fr"
|
||||
value={this.state.website ? this.state.website : ''}
|
||||
value={this.state.website =='null' || this.state.website =='' ? '' :this.state.website}
|
||||
onChange={this.handleChange}
|
||||
onBlur={this.onBlur}
|
||||
/>
|
||||
|
||||
@@ -210,7 +210,7 @@ class Etape2 extends React.Component {
|
||||
<section className={classes.container}>
|
||||
<Fragment>
|
||||
{this.AfficherSuccess()}
|
||||
{ loading ? <LoaderVideo/> : <div></div> }
|
||||
{ loading ? <LoaderVideo textePrincipal="Votre vidéo est en cours d’envoi..." texteSecondaire="Veuillez rester sur la page pendant le chargement qui peut durer plusieurs minutes."/> : <div></div> }
|
||||
|
||||
<div className={classes.root}>
|
||||
<Hidden xsUp>
|
||||
|
||||
@@ -191,7 +191,7 @@ class Etape3 extends React.Component {
|
||||
return (
|
||||
<Fragment>
|
||||
{ loading ?
|
||||
<LoaderVideo /> :
|
||||
<LoaderVideo textePrincipal="Votre candidature vidéo est en cours d’envoi..." texteSecondaire="Veuillez rester sur la page pendant le chargement qui peut durer plusieurs minutes."/> :
|
||||
<Fragment>
|
||||
{this.AfficherSuccess()}
|
||||
|
||||
|
||||
@@ -31,6 +31,8 @@ import GetApp from '@material-ui/icons/GetApp';
|
||||
// } from 'react-places-autocomplete';
|
||||
// import GoogleAutoComplete from 'react-google-autocomplete-address-fields';
|
||||
|
||||
|
||||
|
||||
const styles = theme => ({
|
||||
container: {
|
||||
width: '100%',
|
||||
@@ -126,6 +128,24 @@ const styles = theme => ({
|
||||
},
|
||||
player:{
|
||||
width:"100px"
|
||||
},
|
||||
labelGeoloc:{
|
||||
paddingLeft:"14px",
|
||||
fontSize: "0.8rem",
|
||||
color:"#1E2327",
|
||||
fontFamily: '"Roboto", "Helvetica", "Arial", sans-serif',
|
||||
fontWeight: "400",
|
||||
lineHeight: "1",
|
||||
letterSpacing: "0.00938em", }
|
||||
,conteneurGoogle:{
|
||||
border:"1px solid rgb(200, 200, 200)",
|
||||
borderRadius :"5px",
|
||||
padding:"5px 0px",
|
||||
|
||||
|
||||
},
|
||||
conteneurGoogleComposant:{
|
||||
paddingLeft:"14px"
|
||||
}
|
||||
|
||||
});
|
||||
@@ -157,12 +177,25 @@ class Answer extends Component {
|
||||
this.onChange = this.onChange.bind(this);
|
||||
|
||||
}
|
||||
|
||||
state = {
|
||||
file: null,
|
||||
firstname: '',
|
||||
lastname: '',
|
||||
phone: '',
|
||||
currentJob: '',
|
||||
geoloc: '',
|
||||
value:'',
|
||||
route: '',
|
||||
street_number: '',
|
||||
locality: '',
|
||||
administrative_area_level_2: '',
|
||||
administrative_area_level_1: '',
|
||||
country: '',
|
||||
postal_code: '',
|
||||
formatted_address:"",
|
||||
lat:"",
|
||||
lng:"",
|
||||
linkedin: '',
|
||||
twitter: '',
|
||||
website: '',
|
||||
@@ -181,13 +214,25 @@ class Answer extends Component {
|
||||
|
||||
UNSAFE_componentWillReceiveProps(nextProps) {
|
||||
this.setState({
|
||||
firstname: nextProps.user.firstname,
|
||||
lastname: nextProps.user.lastname,
|
||||
phone: nextProps.user.phone,
|
||||
currentJob: nextProps.user.currentJob,
|
||||
linkedin: nextProps.user.linkedin,
|
||||
twitter: nextProps.user.twitter,
|
||||
website: nextProps.user.website,
|
||||
firstname: this.state.firstname,
|
||||
lastname: this.state.lastname,
|
||||
phone: this.state.phone,
|
||||
currentJob: this.state.currentJob,
|
||||
geoloc: this.state.geoloc,
|
||||
value: this.state.value,
|
||||
route: this.state.route,
|
||||
street_number: this.state.street_number,
|
||||
locality: this.state.locality,
|
||||
administrative_area_level_2: this.state.administrative_area_level_2,
|
||||
administrative_area_level_1: this.state.administrative_area_level_1,
|
||||
country: this.state.country,
|
||||
postal_code: this.state.postal_code,
|
||||
formatted_address : this.state.formatted_address,
|
||||
lat:this.state.lat,
|
||||
lng: this.state.lng,
|
||||
linkedin: this.state.linkedin,
|
||||
twitter: this.state.twitter,
|
||||
website: this.state.website,
|
||||
mediaId: nextProps.mediaId,
|
||||
mediaUrl: nextProps.mediaUrl,
|
||||
thumbnails: nextProps.thumbnails,
|
||||
@@ -207,13 +252,25 @@ class Answer extends Component {
|
||||
}
|
||||
|
||||
componentDidMount() {
|
||||
console.log("ANSWER !!!!!!! !!!!!! !!!!!! ");
|
||||
console.log("ANSWER ! ");
|
||||
console.log(this.props);
|
||||
this.setState({
|
||||
firstname: this.props.user.firstname,
|
||||
lastname: this.props.user.lastname,
|
||||
phone: this.props.user.phone,
|
||||
currentJob: this.props.user.currentJob,
|
||||
value: this.props.user.geoloc && this.props.user.geoloc[0].formatted_address ? this.props.user.geoloc[0].formatted_address :"",
|
||||
geoloc: this.props.user.geoloc && this.props.user.geoloc[0].formatted_address ? this.props.user.geoloc[0].formatted_address :"",
|
||||
route: "",
|
||||
street_number: "",
|
||||
locality: "",
|
||||
administrative_area_level_2: "",
|
||||
administrative_area_level_1: "",
|
||||
country: "",
|
||||
postal_code: "",
|
||||
formatted_address:"",
|
||||
lat:"",
|
||||
lng:"",
|
||||
linkedin: this.props.user.linkedin,
|
||||
twitter: this.props.user.twitter,
|
||||
website: this.props.user.website,
|
||||
@@ -225,76 +282,77 @@ class Answer extends Component {
|
||||
cvLink: this.props.user.cv
|
||||
|
||||
})
|
||||
console.log(this.state);
|
||||
}
|
||||
|
||||
inputFilesystemChange = (e) => {
|
||||
this.uploadMediaCv(e)
|
||||
}
|
||||
|
||||
uploadMediaCv = (e) => {
|
||||
var file = e.target.files[0]
|
||||
inputFilesystemChange = (e) => {
|
||||
this.uploadMediaCv(e)
|
||||
}
|
||||
|
||||
const data = new FormData()
|
||||
data.append('upload', file)
|
||||
|
||||
this.props.uploadMediaCv(data)
|
||||
}
|
||||
|
||||
AfficherSuccess() {
|
||||
uploadMediaCv = (e) => {
|
||||
var file = e.target.files[0]
|
||||
|
||||
const data = new FormData()
|
||||
data.append('upload', file)
|
||||
this.props.uploadMediaCv(data)
|
||||
}
|
||||
|
||||
AfficherSuccess() {
|
||||
if (!this.state.success || !this.state.success.message) {
|
||||
console.log("Erreur Upload CV");
|
||||
return "";
|
||||
} else if (this.state.success.length != 0 && this.state.success.message != "") {
|
||||
return (
|
||||
<Snackbar open={open} autoHideDuration={1000} onClose={() => this.setState({open: false})}>
|
||||
<Snackbar open={open} autoHideDuration={1000} onClose={() => this.setState({open: false})}>
|
||||
<Alert onClose={() => this.setState({open: false})} severity="success">
|
||||
{ReactHtmlParser(this.state.success.message)}
|
||||
{ReactHtmlParser(this.state.success.message)}
|
||||
</Alert>
|
||||
</Snackbar>
|
||||
</Snackbar>
|
||||
);
|
||||
}
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
AfficherLienCv() {
|
||||
console.log("afficher lien");
|
||||
if (this.state.cvLink !="") {
|
||||
|
||||
return (
|
||||
|
||||
<Fragment>
|
||||
|
||||
<Typography >
|
||||
<a href={publicRuntimeConfig.symphonyUrl + publicRuntimeConfig.postedContentCv + this.state.cvLink}
|
||||
target="_blank"
|
||||
style={{
|
||||
color:'#1E2327',
|
||||
'&:hover': {
|
||||
color: '#1E2327',
|
||||
},
|
||||
backgroundColor: '#F3F3F4',
|
||||
width:'100%',
|
||||
fontWeight: '500',
|
||||
fontSize: '1em',
|
||||
padding:'15px',
|
||||
margin:'20px 0',
|
||||
|
||||
}}
|
||||
>
|
||||
Visualiser mon CV
|
||||
</a>
|
||||
<br />
|
||||
|
||||
</Typography>
|
||||
|
||||
</Fragment>
|
||||
AfficherLienCv() {
|
||||
console.log("afficher lien");
|
||||
if (this.state.cvLink !="") {
|
||||
|
||||
return (
|
||||
|
||||
<Fragment>
|
||||
|
||||
<Typography >
|
||||
<a href={publicRuntimeConfig.symphonyUrl + publicRuntimeConfig.postedContentCv + this.state.cvLink}
|
||||
target="_blank"
|
||||
style={{
|
||||
color:'#1E2327',
|
||||
'&:hover': {
|
||||
color: '#1E2327',
|
||||
},
|
||||
backgroundColor: '#F3F3F4',
|
||||
width:'100%',
|
||||
fontWeight: '500',
|
||||
fontSize: '1em',
|
||||
padding:'15px',
|
||||
margin:'20px 0',
|
||||
|
||||
}}
|
||||
>
|
||||
Visualiser mon CV
|
||||
</a>
|
||||
<br />
|
||||
|
||||
</Typography>
|
||||
|
||||
</Fragment>
|
||||
|
||||
);
|
||||
|
||||
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -319,27 +377,97 @@ class Answer extends Component {
|
||||
|
||||
if (e.target.value === '') {
|
||||
console.log('cleared');
|
||||
this.props.onSelectionChanged('');
|
||||
//this.props.onSelectionChanged('');
|
||||
}
|
||||
}
|
||||
|
||||
onSuggestionSelected = (suggestion) => {
|
||||
remplirLocation = (typeDonnee, donnee) =>{
|
||||
console.log("DEBUT remplirLocation");
|
||||
if(typeDonnee=='"street_number"') {
|
||||
console.log(typeDonnee);
|
||||
console.log(donnee);
|
||||
this.setState({ street_number: donnee.replace('"', '') })
|
||||
}else if(typeDonnee=='"route"') {
|
||||
console.log(typeDonnee);
|
||||
console.log(donnee);
|
||||
this.setState({ route: donnee.replace('"', '') })
|
||||
}else if(typeDonnee=='"locality"') {
|
||||
console.log(typeDonnee);
|
||||
console.log(donnee);
|
||||
this.setState({ locality: donnee.replace('"', '') })
|
||||
}else if(typeDonnee=='"administrative_area_level_2"') {
|
||||
console.log(typeDonnee);
|
||||
console.log(donnee);
|
||||
this.setState({ administrative_area_level_2: donnee.replace('"', '') })
|
||||
}else if(typeDonnee=='"administrative_area_level_1"') {
|
||||
console.log(typeDonnee);
|
||||
console.log(donnee);
|
||||
this.setState({ administrative_area_level_1: donnee.replace('"', '') })
|
||||
}else if(typeDonnee=='"country"') {
|
||||
console.log(typeDonnee);
|
||||
console.log(donnee);
|
||||
this.setState({ country: donnee.replace('"', '') })
|
||||
}else if(typeDonnee=='"postal_code"') {
|
||||
console.log(typeDonnee);
|
||||
console.log(donnee);
|
||||
this.setState({ postal_code: donnee.replace('"', '') })
|
||||
}
|
||||
console.log("FIN remplirLocation");
|
||||
|
||||
}
|
||||
|
||||
onSuggestionSelected = (suggestion) => {
|
||||
|
||||
console.log('Selected suggestion:', suggestion)
|
||||
const address = suggestion.description;
|
||||
this.setState({ geoloc: address})
|
||||
this.setState({
|
||||
value: address
|
||||
});
|
||||
|
||||
geocodeByAddress(address)
|
||||
.then(address => {
|
||||
console.log('Selected ' + JSON.stringify(address[0]));
|
||||
this.props.onSelectionChanged(address[0]);
|
||||
|
||||
if(address[0].address_components[0]){
|
||||
this.remplirLocation(JSON.stringify(address[0].address_components[0].types[0]), JSON.stringify(address[0].address_components[0].long_name))
|
||||
}
|
||||
if(address[0].address_components[1]){
|
||||
this.remplirLocation(JSON.stringify(address[0].address_components[1].types[0]), JSON.stringify(address[0].address_components[1].long_name))
|
||||
}
|
||||
if(address[0].address_components[2]){
|
||||
this.remplirLocation(JSON.stringify(address[0].address_components[2].types[0]), JSON.stringify(address[0].address_components[2].long_name))
|
||||
}
|
||||
if(address[0].address_components[3]){
|
||||
this.remplirLocation(JSON.stringify(address[0].address_components[3].types[0]), JSON.stringify(address[0].address_components[3].long_name))
|
||||
}
|
||||
if(address[0].address_components[4]){
|
||||
this.remplirLocation(JSON.stringify(address[0].address_components[4].types[0]), JSON.stringify(address[0].address_components[4].long_name))
|
||||
}
|
||||
if(address[0].address_components[5]){
|
||||
this.remplirLocation(JSON.stringify(address[0].address_components[5].types[0]), JSON.stringify(address[0].address_components[5].long_name))
|
||||
}
|
||||
if(address[0].address_components[6]){
|
||||
this.remplirLocation(JSON.stringify(address[0].address_components[6].types[0]), JSON.stringify(address[0].address_components[6].long_name))
|
||||
}
|
||||
if(address[0].geometry){
|
||||
let gps =JSON.stringify(address[0].geometry.location);
|
||||
const obj = JSON.parse(gps);
|
||||
this.setState({ formatted_address: JSON.stringify(address[0].formatted_address) })
|
||||
this.setState({ lat: obj.lat.toString()})
|
||||
this.setState({ lng: obj.lng.toString()})
|
||||
}
|
||||
|
||||
|
||||
// console.log("GEOLOC ON geocodeByAddress")
|
||||
// console.log(this.state.geoloc)
|
||||
// document.getElementById("geoloc").value =JSON.stringify(address[0]);
|
||||
// this.props.onSelectionChanged(address[0]);
|
||||
})
|
||||
.catch(error => console.error('Error', error))
|
||||
}
|
||||
|
||||
onSuggestionSelected(suggestion) {
|
||||
|
||||
// Add your business logic here. In this case we just log...
|
||||
console.log('Selected suggestion:', suggestion)
|
||||
}
|
||||
@@ -353,9 +481,9 @@ class Answer extends Component {
|
||||
const className = suggestion.active ? 'suggestion-item--active' : 'suggestion-item';
|
||||
const style = suggestion.active
|
||||
? { backgroundColor: 'red', cursor: 'pointer',border: '1px solid' }
|
||||
: { backgroundColor: '#ffffff', cursor: 'pointer',border: '1px solid' };
|
||||
: { backgroundColor: '#123456', cursor: 'pointer',border: '1px solid' };
|
||||
return (<div {...getSuggestionItemProps(suggestion,{className,style})}>
|
||||
<span>{suggestion.description}</span>
|
||||
<span >{suggestion.description}</span>
|
||||
</div>
|
||||
)
|
||||
})}
|
||||
@@ -370,7 +498,7 @@ class Answer extends Component {
|
||||
|
||||
|
||||
|
||||
handleChange = (e) => {
|
||||
handleChange = (e) => {
|
||||
this.setState({ [e.target.name]: e.target.value })
|
||||
}
|
||||
|
||||
@@ -383,11 +511,26 @@ class Answer extends Component {
|
||||
console.log("firstname")
|
||||
console.log(this.state.firstname)
|
||||
const data = new FormData()
|
||||
|
||||
|
||||
data.append('firstname', this.state.firstname)
|
||||
data.append('lastname', this.state.lastname)
|
||||
data.append('phone', this.state.phone)
|
||||
data.append('currentJob', this.state.currentJob)
|
||||
console.log("GEOLOC ON SUBMIT")
|
||||
console.log(this.state)
|
||||
data.append('geoloc', this.state.geoloc)
|
||||
|
||||
data.append('street_number', this.state.street_number.replace('"', ''))
|
||||
data.append('route', this.state.route.replace('"', ''))
|
||||
data.append('locality', this.state.locality.replace('"', ''))
|
||||
data.append('administrative_area_level_2', this.state.administrative_area_level_2.replace('"', ''))
|
||||
data.append('administrative_area_level_1', this.state.administrative_area_level_1.replace('"', ''))
|
||||
data.append('country', this.state.country.replace('"', ''))
|
||||
data.append('postal_code', this.state.postal_code.replace('"', ''))
|
||||
data.append('formatted_address', this.state.formatted_address.replace('"', ''))
|
||||
data.append('lat', this.state.lat)
|
||||
data.append('lng', this.state.lng)
|
||||
//
|
||||
data.append('linkedin', this.state.linkedin)
|
||||
data.append('twitter', this.state.twitter)
|
||||
data.append('website', this.state.website)
|
||||
@@ -400,6 +543,9 @@ class Answer extends Component {
|
||||
// //TODO Envoyer un mail a chaque user
|
||||
// console.log(user.email)
|
||||
// )
|
||||
// US 471 : TODO envoyer le lien du cv pour le mettre dans la candidature (this.state.cvLink)
|
||||
|
||||
console.log(this.state.cvLink, "lien CV")
|
||||
this.props.postAdAnswerRequest(
|
||||
{
|
||||
adId: this.props.adId,
|
||||
@@ -443,6 +589,10 @@ class Answer extends Component {
|
||||
value: this.state.address,
|
||||
onChange: this.onChange,
|
||||
}
|
||||
const searchOptions = {
|
||||
componentRestrictions: { country: ['fr'] },
|
||||
}
|
||||
|
||||
return (
|
||||
<section className={classes.container}>
|
||||
|
||||
@@ -481,18 +631,11 @@ class Answer extends Component {
|
||||
// src="https://media.w3.org/2010/05/sintel/trailer_hd.mp4"
|
||||
/>
|
||||
|
||||
{/* <GooglePlaceAutocomplete
|
||||
name="location"
|
||||
label="Location"
|
||||
onSuggestionSelected={this.onSuggestionSelected}
|
||||
textFieldProps={{ onChange: (e) => this.onChange(e), value: this.state.value, placeholder: 'Chercher votre adresse'}}
|
||||
types={['(regions)']}
|
||||
renderTarget={() => (<div />)}
|
||||
/> */}
|
||||
|
||||
<Button className={classes.remplacerButton} onClick={this.openDialog.bind(this)}>
|
||||
Remplacer ma vidéo
|
||||
</Button>
|
||||
<Dialog open={this.state.open} onEnter={console.log("Hey.")}>
|
||||
<Dialog open={this.state.open}>
|
||||
<DialogTitle> Souhaitez-vous remplacer votre vidéo de réponse ?</DialogTitle>
|
||||
<DialogContent className={classes.popup}> Cette vidéo et tous les éléments de votre candidature seront définitivement supprimés. Vous pourrez importer ou réaliser une nouvelle vidéo de réponse. </DialogContent>
|
||||
<DialogActions>
|
||||
@@ -521,7 +664,7 @@ class Answer extends Component {
|
||||
helperText={!!_.isEmpty(this.state.lastname) && "Veuillez saisir votre nom"}
|
||||
required
|
||||
/>
|
||||
|
||||
|
||||
<TextField
|
||||
name="firstname"
|
||||
required
|
||||
@@ -536,6 +679,52 @@ class Answer extends Component {
|
||||
helperText={!!_.isEmpty(this.state.firstname) && "Veuillez saisir votre prénom"}
|
||||
/>
|
||||
|
||||
<div
|
||||
className={classes.conteneurGoogle}
|
||||
classes={{ root: classes.rootTextfield }}
|
||||
style={{ position: 'relative', zIndex:2, width: '100%' }}>
|
||||
<label htmlFor="outlined-required"
|
||||
className={classes.labelGeoloc}>
|
||||
Adresse
|
||||
</label>
|
||||
<div className={classes.conteneurGoogleComposant}>
|
||||
<GooglePlaceAutocomplete
|
||||
style={{ paddingLeft:'14px !important', left: 0, right: 0, zIndex: '2 !important', width: '100%' }}
|
||||
name="location"
|
||||
label="Location"
|
||||
id="outlined-required"
|
||||
variant="outlined"
|
||||
textFieldProps={{ id: "outlined-required" }}
|
||||
className={classes.textField}
|
||||
classes={{ root: classes.rootTextfield }}
|
||||
options={this.searchOptions}
|
||||
onSuggestionSelected={this.onSuggestionSelected}
|
||||
textFieldProps={{ onChange: (e) => this.onChange(e), value: this.state.value, placeholder: 'Ex : Rue de Rivoli, Paris, France', fullWidth: true, size:"small"}}
|
||||
types={['(regions)']}
|
||||
componentRestrictions={{country: 'fr'}}
|
||||
renderTarget={() => (
|
||||
<div
|
||||
style={{
|
||||
|
||||
width: '100%',
|
||||
zIndex:9
|
||||
}}
|
||||
>
|
||||
</div>
|
||||
)}
|
||||
/>
|
||||
</div>
|
||||
|
||||
{/* <Input
|
||||
name="geoloc"
|
||||
id="geoloc"
|
||||
label="geoloc"
|
||||
ref="geoloc"
|
||||
onChange={this.handleChange}
|
||||
value={this.state.geoloc =='null' || this.state.geoloc =='' ? '' :this.state.geoloc}
|
||||
/> */}
|
||||
</div>
|
||||
|
||||
<TextField
|
||||
name="phone"
|
||||
id="outlined"
|
||||
@@ -566,7 +755,7 @@ class Answer extends Component {
|
||||
className={classes.textField}
|
||||
classes={{ root: classes.rootTextfield }}
|
||||
variant="outlined"
|
||||
value={this.state.currentJob}
|
||||
value={this.state.currentJob =='null' || this.state.currentJob =='' ? '' :this.state.currentJob}
|
||||
onChange={this.handleChange}
|
||||
/>
|
||||
|
||||
@@ -601,7 +790,7 @@ class Answer extends Component {
|
||||
classes={{ root: classes.rootTextfield }}
|
||||
variant="outlined"
|
||||
placeholder="http://www.linkedin.com/in/"
|
||||
value={this.state.linkedin}
|
||||
value={this.state.linkedin =='null' || this.state.linkedin =='' ? '' :this.state.linkedin}
|
||||
onChange={this.handleChange}
|
||||
|
||||
/>
|
||||
@@ -614,7 +803,7 @@ class Answer extends Component {
|
||||
classes={{ root: classes.rootTextfield }}
|
||||
variant="outlined"
|
||||
placeholder="http://twitter.com/.."
|
||||
value={this.state.twitter}
|
||||
value={this.state.twitter =='null' || this.state.twitter =='' ? '' :this.state.twitter}
|
||||
onChange={this.handleChange}
|
||||
/>
|
||||
|
||||
@@ -626,7 +815,7 @@ class Answer extends Component {
|
||||
classes={{ root: classes.rootTextfield }}
|
||||
variant="outlined"
|
||||
placeholder="http://monsite.fr"
|
||||
value={this.state.website}
|
||||
value={this.state.website =='null' || this.state.website =='' ? '' :this.state.website}
|
||||
onChange={this.handleChange}
|
||||
/>
|
||||
|
||||
@@ -646,7 +835,7 @@ function mapStateToProps(state, ownProps) {
|
||||
cvLink : state.mediaCv.message,
|
||||
loading: !!state.media.loading,
|
||||
cv : true,
|
||||
user: state.user,
|
||||
// user: state.user,
|
||||
// loading: !!state.user.loading,
|
||||
pictureLoading: !!state.user.pictureLoading,
|
||||
errors: state.user.errors || ownProps.errors,
|
||||
|
||||
@@ -139,7 +139,7 @@ class CompanyRowComponent extends React.Component {
|
||||
render() {
|
||||
const { classes, theme, rowData } = this.props;
|
||||
|
||||
const imgDefaultUrl = "/static/images/default/default_picture_company.svg"
|
||||
const imgDefaultUrl = "https://blog.talentstube.com/wp-content/uploads/2021/01/default_picture_company.jpg"
|
||||
|
||||
const imgUrl = (rowData.presentation_video && rowData.presentation_video.thumbnails[0] && rowData.presentation_video.thumbnails[0].sizes[4]) ? rowData.presentation_video.thumbnails[0].sizes[4].link : imgDefaultUrl
|
||||
const logoUrl = publicRuntimeConfig.symphonyUrl + publicRuntimeConfig.cachedMediaUrl + rowData.logo
|
||||
|
||||
@@ -59,7 +59,7 @@ const styles = theme => ({
|
||||
titleContainer: {
|
||||
color: theme.palette.primary.darkMain,
|
||||
fontSize: '1.5em',
|
||||
fontFamily: 'Dosis',
|
||||
fontFamily: '"Roboto", "Helvetica", "Arial", "sans-serif"',
|
||||
fontWeight: '600',
|
||||
[theme.breakpoints.up('md')]: {
|
||||
fontSize: '1.2em',
|
||||
@@ -113,7 +113,7 @@ const styles = theme => ({
|
||||
},
|
||||
},
|
||||
titleReactApp: {
|
||||
fontFamily: 'Dosis',
|
||||
fontFamily: '"Roboto", "Helvetica", "Arial", "sans-serif"',
|
||||
fontSize: '1.5em',
|
||||
fontWeight: '600',
|
||||
paddingTop: theme.spacing(4),
|
||||
|
||||
@@ -225,6 +225,9 @@ const styles = theme => ({
|
||||
justifyContent: 'space-between',
|
||||
padding: 0,
|
||||
},
|
||||
appBar:{
|
||||
position:'fixed'
|
||||
},
|
||||
appBarDesktopSection: {
|
||||
display: 'flex',
|
||||
alignItems: 'center',
|
||||
|
||||
+5
-5
@@ -28,7 +28,7 @@ import ArrowForward from '@material-ui/icons/ArrowForward';
|
||||
import List from '@material-ui/core/List';
|
||||
import ListItem from '@material-ui/core/ListItem';
|
||||
import { ListItemText } from '@material-ui/core';
|
||||
import Loader from './../templates/loader'
|
||||
import Loader from '../templates/loader'
|
||||
import { connect } from 'react-redux'
|
||||
import { fetchCurrentUserRequest } from "../../actions/user";
|
||||
import { requestLogout } from "../../actions/auth";
|
||||
@@ -36,7 +36,7 @@ import Button from '@material-ui/core/Button';
|
||||
import withWidth, { isWidthUp } from '@material-ui/core/withWidth'
|
||||
import Typography from '@material-ui/core/Typography';
|
||||
import { withRouter } from "next/router";
|
||||
import ActiveLink from "./../atoms/Activelink";
|
||||
import ActiveLink from "../atoms/Activelink";
|
||||
import axios from 'axios';
|
||||
import setAuthorizationHeader from "../../data/setAuthorizationHeader";
|
||||
import getConfig from 'next/config'
|
||||
@@ -302,7 +302,7 @@ const styles = theme => ({
|
||||
});
|
||||
let urlEnv;
|
||||
|
||||
class Header extends React.Component {
|
||||
class HeaderPersonnalise extends React.Component {
|
||||
state = {
|
||||
top: false,
|
||||
left: false,
|
||||
@@ -597,7 +597,7 @@ class Header extends React.Component {
|
||||
focusRipple
|
||||
className={classes.back}
|
||||
focusVisibleClassName={classes.focusVisible}
|
||||
onClick={() => Router.push("/Offres")}>
|
||||
onClick={() => Router.push("/"+this.props.retour)}>
|
||||
<ArrowLeft color="primary" classes={{ root: classes.icon }}></ArrowLeft>
|
||||
</ButtonBase>
|
||||
<div className={classes.grow} />
|
||||
@@ -631,4 +631,4 @@ function mapStateToProps(state) {
|
||||
loading: !!state.user.loading
|
||||
};
|
||||
}
|
||||
export default (connect(mapStateToProps, { fetchCurrentUserRequest, requestLogout })(withStyles(styles)(withWidth()(Header))));
|
||||
export default (connect(mapStateToProps, { fetchCurrentUserRequest, requestLogout })(withStyles(styles)(withWidth()(HeaderPersonnalise))));
|
||||
@@ -1,32 +1,21 @@
|
||||
import React, { Fragment,lazy, Suspense } from 'react'
|
||||
import Router from 'next/router'
|
||||
import React, { Fragment } from 'react'
|
||||
import { withStyles } from '@material-ui/core/styles';
|
||||
import getConfig from 'next/config'
|
||||
import Typography from '@material-ui/core/Typography';
|
||||
import Button from '@material-ui/core/Button';
|
||||
import Avatar from '@material-ui/core/Avatar';
|
||||
import Card from '@material-ui/core/Card';
|
||||
import Chip from '@material-ui/core/Chip';
|
||||
import CardContent from '@material-ui/core/CardContent';
|
||||
import CardMedia from '@material-ui/core/CardMedia';
|
||||
import CardHeader from '@material-ui/core/CardHeader';
|
||||
import KeyboardArrowleftIcon from '@material-ui/icons/PlayArrowRounded';
|
||||
import IconText from '../atoms/IconText';
|
||||
import IconTextInline from './../atoms/IconTextInline';
|
||||
import SocialShare from './SocialShare';
|
||||
import SimpleCollapse from '../atoms/SimpleCollapse';
|
||||
import _ from "lodash/string";
|
||||
import Ar from "lodash/array";
|
||||
import Hidden from '@material-ui/core/Hidden';
|
||||
import Link from 'next/link'
|
||||
import withWidth, { isWidthUp } from '@material-ui/core/withWidth'
|
||||
const VideoVimeo = lazy(() => import('../atoms/VideoVimeo'));
|
||||
//import VideoVimeo from '../atoms/VideoVimeo'
|
||||
import OgHead from '../atoms/OgHead'
|
||||
import { isWidthUp } from '@material-ui/core/withWidth'
|
||||
import JobPosting from '../atoms/JobPosting'
|
||||
import Moment from 'react-moment';
|
||||
import StickyBox from "react-sticky-box";
|
||||
const renderLoader = () => <p>Chargement</p>;
|
||||
const styles = theme => ({
|
||||
primary: {
|
||||
color: theme.palette.primary.main,
|
||||
@@ -343,7 +332,7 @@ const styles = theme => ({
|
||||
padding: theme.spacing(1, 0),
|
||||
whiteSpace: 'pre-line',
|
||||
textAlign: 'justify',
|
||||
lineHeight : '2em',
|
||||
lineHeight : '1.5em',
|
||||
color: '#1E2327'
|
||||
},
|
||||
ul:{
|
||||
@@ -677,28 +666,18 @@ const { publicRuntimeConfig } = getConfig()
|
||||
|
||||
function OffreDetail(props) {
|
||||
let { classes, offre, isCandidature } = props;
|
||||
const logoUrl = (offre.company ? publicRuntimeConfig.symphonyUrl + publicRuntimeConfig.cachedMediaUrl + offre.company.logo : "/static/images/defaultdefault_picture_company.svg/")
|
||||
const DefaultUrl = "/static/images/default/default_picture_company.svg"
|
||||
const imgUrl = (offre.company && offre.company.presentation_video && offre.company.presentation_video.thumbnails && offre.company.presentation_video.thumbnails[0] && offre.company.presentation_video.thumbnails[0].sizes[2]) ? offre.company.presentation_video.thumbnails[0].sizes[2].link : DefaultUrl
|
||||
const imgUrlDesktop = (offre.company && offre.company.presentation_video && offre.company.presentation_video.thumbnails && offre.company.presentation_video.thumbnails[0] && offre.company.presentation_video.thumbnails[0].sizes[4]) ? offre.company.presentation_video.thumbnails[0].sizes[4].link : DefaultUrl
|
||||
const imgUrlOffre = (offre && offre.video && offre.video.thumbnails && offre.video.thumbnails[0] && offre.video.thumbnails[0].sizes[2]) ? offre.video.thumbnails[0].sizes[2].link : DefaultUrl
|
||||
const imgUrlDesktopOffre = (offre && offre.video && offre.video.thumbnails && offre.video.thumbnails[0] && offre.video.thumbnails[0].sizes[4]) ? offre.video.thumbnails[0].sizes[4].link : DefaultUrl
|
||||
const imgUrlTerritoire = (offre.territories && offre.territories[0] && offre.territories[0].territory && offre.territories[0].territory.presentation_video.thumbnails && offre.territories[0].territory.presentation_video.thumbnails[0] && offre.territories[0].territory.presentation_video.thumbnails[0].sizes[2]) ? offre.territories[0].territory.presentation_video.thumbnails[0].sizes[2].link : DefaultUrl
|
||||
const imgUrlDesktopTerritoire = (offre.territories && offre.territories[0] && offre.territories[0].territory.presentation_video && offre.territories[0].territory.presentation_video.thumbnails && offre.territories[0].territory.presentation_video.thumbnails[0] && offre.territories[0].territory.presentation_video.thumbnails[0].sizes[4]) ? offre.territories[0].territory.presentation_video.thumbnails[0].sizes[4].link : DefaultUrl
|
||||
const logoUrl = (offre.company ? publicRuntimeConfig.symphonyUrl + publicRuntimeConfig.cachedMediaUrl + offre.company.logo : "https://blog.talentstube.com/wp-content/uploads/2021/01/default_picture_company.jpg")
|
||||
const DefaultUrl = "https://blog.talentstube.com/wp-content/uploads/2021/01/default_picture_company.jpg"
|
||||
const imgUrl = (offre.company && offre.company.presentation_video && offre.company.presentation_video.thumbnails && offre.company.presentation_video.thumbnails[0] && offre.company.presentation_video.thumbnails[0].sizes[3]) ? offre.company.presentation_video.thumbnails[0].sizes[3].link : DefaultUrl
|
||||
const imgUrlDesktop = (offre.company && offre.company.presentation_video && offre.company.presentation_video.thumbnails && offre.company.presentation_video.thumbnails[0] && offre.company.presentation_video.thumbnails[0].sizes[3]) ? offre.company.presentation_video.thumbnails[0].sizes[3].link : DefaultUrl
|
||||
const imgUrlOffre = (offre && offre.video && offre.video.thumbnails && offre.video.thumbnails[0] && offre.video.thumbnails[0].sizes[3]) ? offre.video.thumbnails[0].sizes[3].link : DefaultUrl
|
||||
const imgUrlDesktopOffre = (offre && offre.video && offre.video.thumbnails && offre.video.thumbnails[0] && offre.video.thumbnails[0].sizes[3]) ? offre.video.thumbnails[0].sizes[3].link : DefaultUrl
|
||||
const imgUrlTerritoire = (offre.territories && offre.territories[0] && offre.territories[0].territory && offre.territories[0].territory.presentation_video.thumbnails && offre.territories[0].territory.presentation_video.thumbnails[0] && offre.territories[0].territory.presentation_video.thumbnails[0].sizes[3]) ? offre.territories[0].territory.presentation_video.thumbnails[0].sizes[3].link : DefaultUrl
|
||||
const imgUrlDesktopTerritoire = (offre.territories && offre.territories[0] && offre.territories[0].territory.presentation_video && offre.territories[0].territory.presentation_video.thumbnails && offre.territories[0].territory.presentation_video.thumbnails[0] && offre.territories[0].territory.presentation_video.thumbnails[0].sizes[3]) ? offre.territories[0].territory.presentation_video.thumbnails[0].sizes[3].link : DefaultUrl
|
||||
const socialShareUrl = typeof window !== 'undefined' ? window.location : publicRuntimeConfig.frontServerUrl + `/Offre/${offre.id}-${_.kebabCase(offre.title)}`;
|
||||
const entrepriseLink = (offre.company && `/Entreprise/${offre.company.id}-${_.kebabCase(offre.company.brand_name)}`);
|
||||
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 = ""
|
||||
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 : ""
|
||||
descriptionSEO += ". Envoyez votre candidature en vidéo. "
|
||||
titleSEO += " | Talents Tube "
|
||||
let jobVille=""
|
||||
let jobDpt=""
|
||||
let jobPays=""
|
||||
@@ -708,12 +687,12 @@ function OffreDetail(props) {
|
||||
let nombreHeure =""
|
||||
let dureeContrat =""
|
||||
let teletravail =""
|
||||
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 && offre.location.gmap_address.address_components[0] ? jobVille = offre.location.gmap_address.address_components[0].long_name: jobVille=""
|
||||
offre.location && offre.location.gmap_address.address_components[1] ? jobDpt = offre.location.gmap_address.address_components[1].long_name: jobDpt=""
|
||||
offre.location && 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 =""
|
||||
offre.extra && offre.extra.contract_type ? jobContract = offre.extra.contract_type : jobContract =""
|
||||
offre.extra && offre.extra.temps_type ? tempsType = offre.extra.temps_type : tempsType =""
|
||||
console.log("competences!!");
|
||||
//console.log(offre.competences);
|
||||
var competences = [];
|
||||
@@ -721,8 +700,8 @@ function OffreDetail(props) {
|
||||
if(offre.competences){
|
||||
for (var i = 0; i < offre.competences.length; i++) {
|
||||
//console.log(offre.competences[i]);
|
||||
console.log("competences "+i);
|
||||
console.log(offre.competences[i]);
|
||||
// console.log("competences "+i);
|
||||
// console.log(offre.competences[i]);
|
||||
|
||||
for (const property in offre.competences[i]) {
|
||||
console.log(` ${offre.competences[i][property]}`);
|
||||
@@ -734,7 +713,7 @@ function OffreDetail(props) {
|
||||
const listItems = competences.map((number) =>
|
||||
<li className={classes.listeCompetences}>{number}</li>
|
||||
);
|
||||
offre.extra.teletravail ? teletravail = offre.extra.teletravail : teletravail =""
|
||||
offre.extra && offre.extra.teletravail ? teletravail = offre.extra.teletravail : teletravail =""
|
||||
//gestion du type de temps de travail
|
||||
if(tempsType=="PART_TIME"){
|
||||
tempsTypeFr="Temps partiel"
|
||||
@@ -744,27 +723,27 @@ function OffreDetail(props) {
|
||||
|
||||
}
|
||||
//gestion du nombre d'heure
|
||||
if(offre.extra.nombre_heure && offre.extra.nombre_heure!=0 && tempsType=="PART_TIME"){
|
||||
if(offre.extra && offre.extra.nombre_heure && offre.extra.nombre_heure!=0 && tempsType=="PART_TIME"){
|
||||
nombreHeure=" ("+offre.extra.nombre_heure+" h/semaine)";
|
||||
}
|
||||
//gestion de la duree de contrat
|
||||
if(offre.extra.duree_contrat && offre.extra.duree_contrat!=0 && jobContract=="CDD"){
|
||||
if(offre.extra && offre.extra.duree_contrat && offre.extra.duree_contrat!=0 && jobContract=="CDD"){
|
||||
dureeContrat=" ("+offre.extra.duree_contrat+" mois)";;
|
||||
}
|
||||
//gestion du télétravail
|
||||
if(offre.extra.teletravail=='tele_occasionel'){
|
||||
if(offre.extra && offre.extra.teletravail=='tele_occasionel'){
|
||||
teletravail='Télétravail occasionnel';
|
||||
}else if(offre.extra.teletravail=='tele_partiel'){
|
||||
}else if(offre.extra && offre.extra.teletravail=='tele_partiel'){
|
||||
teletravail='Télétravail partiel';
|
||||
}else if(offre.extra.teletravail=='tele_total'){
|
||||
}else if(offre.extra && offre.extra.teletravail=='tele_total'){
|
||||
teletravail='Télétravail total';
|
||||
}else{
|
||||
teletravail=null;
|
||||
}
|
||||
|
||||
const imgDefaultUrl = "/static/images/default/default_picture_company.svg"
|
||||
const imgDefaultUrl = "https://blog.talentstube.com/wp-content/uploads/2021/01/default_picture_company.jpg"
|
||||
{/* CONST MARQUE EMPLOYEUR */}
|
||||
const marqueEmployeur = offre.company.presentation_video && !offre.is_promoted && (
|
||||
const marqueEmployeur = offre.company && offre.company.presentation_video && !offre.is_promoted && (
|
||||
<div className={classes.container + ' ' + classes.discoverContainerCompany}>
|
||||
<section>
|
||||
|
||||
@@ -772,7 +751,7 @@ function OffreDetail(props) {
|
||||
{/* <a href={entrepriseLink}> */}
|
||||
{/* const entrepriseLink = (offre.company && `/Entreprise/${offre.company.id}-${_.kebabCase(offre.company.brand_name)}`); */}
|
||||
|
||||
<Link href={`/Player?id=/Offre/${offre.id}-${_.kebabCase(offre.title)}&videoId=${Ar.last(_.split(offre.company.presentation_video.cdn_url, '/'))}&type=Entreprise`} >
|
||||
<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} />
|
||||
<Typography variant="h3" component="h3" gutterBottom className={ classes.voirEntreprise} align="center">
|
||||
@@ -822,23 +801,19 @@ function OffreDetail(props) {
|
||||
{/* {offre.public_tag.map((label, index) => {
|
||||
descriptionSEO += label+", "
|
||||
})} */}
|
||||
{/* PARTIE REFERECEMENT GENERAL (FACEBOOK, GOOGLE, TWITTER LINKENDIN) */}
|
||||
<OgHead seo_title={titleSEO}
|
||||
seo_description={descriptionSEO}
|
||||
seo_url={socialShareUrl}
|
||||
image={imgUrlDesktop}
|
||||
></OgHead>
|
||||
{/* PARTIE REFERENCEMENT GENERAL (FACEBOOK, GOOGLE, TWITTER LINKENDIN) */}
|
||||
|
||||
{/* PARTIE REFERENCEMENT GOOGLE JOBS */}
|
||||
<JobPosting job_title={offre.title}
|
||||
job_description={offre.description}
|
||||
job_brand= {offre.company.brand_name && offre.company.brand_name}
|
||||
job_brand= {offre.company && offre.company.brand_name && offre.company.brand_name}
|
||||
job_brand_link= {entrepriseLink}
|
||||
job_title = {offre.title}
|
||||
job_location = {offre.location.gmap_address.formatted_address}
|
||||
job_location = {offre.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_adr = {offre.location && offre.location.gmap_address.formatted_address}
|
||||
job_date = {offre.published_at}
|
||||
job_date_fin = {offre.unpublished_at}
|
||||
job_temps_type= {tempsType}
|
||||
@@ -853,16 +828,16 @@ function OffreDetail(props) {
|
||||
{offre.video && (
|
||||
|
||||
<Fragment>
|
||||
<Suspense fallback={renderLoader()}>
|
||||
|
||||
{/* <VideoVimeo {...isCandidature == 'true' ? 'classes={{ video: classes.videoOffre }}' : ''} videoId={Ar.last(_.split(offre.video.cdn_url, '/'))} autoplay='1' /> */}
|
||||
<div className={classes.contentContainer}>
|
||||
|
||||
<Link href={`/Player?id=/Offre/${offre.id}-${_.kebabCase(offre.title)}&videoId=${Ar.last(_.split(offre.video.cdn_url, '/'))}&type=Offre`} >
|
||||
<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} />
|
||||
<div className={classes.containerPoste}>
|
||||
|
||||
<Typography variant="h1" component="h1" gutterBottom className={classes.poste}>
|
||||
<Typography variant="h4" component="h1" gutterBottom className={classes.poste}>
|
||||
{offre.title} <br></br>
|
||||
<span className={classes.posteEntreprise}>{offre.company.brand_name ? offre.company.brand_name : ""}</span>
|
||||
</Typography>
|
||||
@@ -875,7 +850,7 @@ function OffreDetail(props) {
|
||||
</div>
|
||||
</Link>
|
||||
</div>
|
||||
</Suspense>
|
||||
|
||||
<div className={classes.container}>
|
||||
|
||||
|
||||
@@ -905,7 +880,7 @@ function OffreDetail(props) {
|
||||
{/* <a href={entrepriseLink}> */}
|
||||
{/* const entrepriseLink = (offre.company && `/Entreprise/${offre.company.id}-${_.kebabCase(offre.company.brand_name)}`); */}
|
||||
|
||||
<Link href={`/Player?id=/Offre/${offre.id}-${_.kebabCase(offre.title)}&videoId=${Ar.last(_.split(offre.company.presentation_video.cdn_url, '/'))}&type=Entreprise`} >
|
||||
<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} />
|
||||
<Typography variant="h3" component="h3" gutterBottom className={ classes.voirEntreprise} align="center">
|
||||
@@ -925,7 +900,7 @@ function OffreDetail(props) {
|
||||
{offre.territories && territoryVideoId && (
|
||||
<div className={classes.container + ' ' + classes.discoverContainerTerritory}>
|
||||
<section>
|
||||
<Link href={`/Player?id=/Offre/${offre.id}-${_.kebabCase(offre.title)}&videoId=${territoryVideoId}&type=Territoire`} >
|
||||
<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 : ''} />
|
||||
<Typography variant="h3" component="h3" gutterBottom className={classes.title + ' ' + classes.voirTerritoire} align="center">
|
||||
@@ -950,23 +925,23 @@ function OffreDetail(props) {
|
||||
<section className={classes.stickyContainer}>
|
||||
<a href={entrepriseLink} className={classes.lien}>
|
||||
<Avatar className={classes.logo} classes={{ img: classes.MuiAvatarImg }}
|
||||
src={logoUrl} alt={offre.company.brand_name && offre.company.brand_name} />
|
||||
src={logoUrl} alt={offre.company && offre.company.brand_name && offre.company.brand_name} />
|
||||
</a>
|
||||
<Typography variant="h4" component="h4" className={classes.stickyTitle}>
|
||||
{offre.title}
|
||||
</Typography>
|
||||
<a href={entrepriseLink} className={classes.lien}>
|
||||
<Typography variant="h5" component="h5" className={classes.stickyEntreprise}>
|
||||
{offre.company.brand_name && offre.company.brand_name}
|
||||
{offre.company && offre.company.brand_name && offre.company.brand_name}
|
||||
</Typography>
|
||||
</a>
|
||||
</section>
|
||||
|
||||
<section className={classes.IconTextContainerDesktop}>
|
||||
|
||||
<IconTextInline classes={{ icon: classes.iconTextIcon, text: classes.iconTextText }} variant="assignment" text={offre.extra.contract_type+dureeContrat} />
|
||||
<IconTextInline classes={{ icon: classes.iconTextIcon, text: classes.iconTextText }} variant="assignment" text={offre.extra && offre.extra.contract_type+dureeContrat} />
|
||||
{tempsTypeFr ?<IconTextInline classes={{ icon: classes.iconTextIcon, text: classes.iconTextText }} variant="watch_later" text={tempsTypeFr+nombreHeure } />:""}
|
||||
<IconTextInline classes={{ icon: classes.iconTextIcon, text: classes.iconTextText }} variant="location_on" text={offre.location.gmap_address.formatted_address} />
|
||||
<IconTextInline classes={{ icon: classes.iconTextIcon, text: classes.iconTextText }} variant="location_on" text={offre.location && offre.location.gmap_address.formatted_address} />
|
||||
{teletravail && (<IconTextInline classes={{ icon: classes.iconTextIcon, text: classes.iconTextText }} variant="home" text={teletravail} /> )}
|
||||
{offre.beneficiaire && (<IconTextInline classes={{ icon: classes.iconTextIcon, text: classes.iconTextText }} variant="business" text={offre.beneficiaire} /> )}
|
||||
</section>
|
||||
@@ -979,9 +954,9 @@ function OffreDetail(props) {
|
||||
<Button
|
||||
cyp="ButtonApply"
|
||||
variant="contained"
|
||||
className={classes.button}
|
||||
|
||||
>Postuler </Button>
|
||||
className={classes.button}>
|
||||
Postuler
|
||||
</Button>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -1011,14 +986,14 @@ function OffreDetail(props) {
|
||||
<Hidden mdUp>
|
||||
<section className={classes.contentContainerMobile}>
|
||||
|
||||
<Link href={`/Player?id=/Offre/${offre.id}-${_.kebabCase(offre.title)}&videoId=${Ar.last(_.split(offre.video.cdn_url, '/'))}&type=Offre`} >
|
||||
<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.brand_name && offre.company.brand_name} />
|
||||
<img src={isWidthUp('xs', props.width) ? imgUrlDesktopOffre : imgUrlOffre} alt={offre.company && offre.company.brand_name && offre.company.brand_name} />
|
||||
<div >
|
||||
|
||||
<Typography variant="h1" component="h1" gutterBottom className={classes.posteMobile}>
|
||||
{offre.title} <br></br>
|
||||
<span className={classes.posteEntreprise}>{offre.company.brand_name ? offre.company.brand_name : ""}</span>
|
||||
<span className={classes.posteEntreprise}>{offre.company && offre.company.brand_name ? offre.company.brand_name : ""}</span>
|
||||
</Typography>
|
||||
|
||||
</div>
|
||||
@@ -1044,7 +1019,7 @@ function OffreDetail(props) {
|
||||
</Typography>
|
||||
<a href={entrepriseLink} className={classes.lien}>
|
||||
<Typography gutterBottom variant="subtitle1" className={classes.text}>
|
||||
{offre.company.brand_name && offre.company.brand_name}
|
||||
{offre.company && offre.company.brand_name && offre.company.brand_name}
|
||||
</Typography>
|
||||
</a>
|
||||
{/* ville */}
|
||||
@@ -1067,7 +1042,7 @@ function OffreDetail(props) {
|
||||
</section>
|
||||
<section>
|
||||
{/* PARTIE MARQUE EMPLOYEUR MOBILE*/}
|
||||
{offre.company.presentation_video && !offre.is_promoted && (
|
||||
{offre.company && offre.company.presentation_video && !offre.is_promoted && (
|
||||
<div className={classes.container + ' ' + classes.discoverContainerCompany}>
|
||||
<section>
|
||||
|
||||
@@ -1075,7 +1050,7 @@ function OffreDetail(props) {
|
||||
{/* <a href={entrepriseLink}> */}
|
||||
{/* const entrepriseLink = (offre.company && `/Entreprise/${offre.company.id}-${_.kebabCase(offre.company.brand_name)}`); */}
|
||||
|
||||
<Link href={`/Player?id=/Offre/${offre.id}-${_.kebabCase(offre.title)}&videoId=${Ar.last(_.split(offre.company.presentation_video.cdn_url, '/'))}&type=Entreprise`} >
|
||||
<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} />
|
||||
<Typography variant="h3" component="h3" gutterBottom className={ classes.voirEntrepriseMobile} align="center">
|
||||
@@ -1095,7 +1070,7 @@ function OffreDetail(props) {
|
||||
{offre.territories && territoryVideoId && (
|
||||
<div className={classes.container + ' ' + classes.discoverContainerTerritory}>
|
||||
<section>
|
||||
<Link href={`/Player?id=/Offre/${offre.id}-${_.kebabCase(offre.title)}&videoId=${territoryVideoId}&type=Territoire`} >
|
||||
<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 : ''} />
|
||||
<Typography variant="h3" component="h3" gutterBottom className={classes.title + ' ' + classes.voirTerritoireMobile} align="center">
|
||||
@@ -1116,4 +1091,4 @@ function OffreDetail(props) {
|
||||
</Fragment>
|
||||
)
|
||||
}
|
||||
export default withStyles(styles)(withWidth()(OffreDetail));
|
||||
export default withStyles(styles)(OffreDetail);
|
||||
@@ -42,7 +42,7 @@ const styles = theme => ({
|
||||
},
|
||||
margin: '1vh 2vh 1vh 2vh',
|
||||
[theme.breakpoints.up('sm')]: {
|
||||
margin: '1vh 0 1vh 0',
|
||||
margin: '2vh 0 2vh 0',
|
||||
},
|
||||
},
|
||||
detailsContainer: {
|
||||
|
||||
@@ -22,8 +22,8 @@ const styles = theme => ({
|
||||
},
|
||||
askToInstallText: {
|
||||
fontSize: '1.4em',
|
||||
fontWeight: '500',
|
||||
fontFamily: 'Dosis',
|
||||
fontWeight: '600',
|
||||
fontFamily: '"Roboto", "Helvetica", "Arial", "sans-serif"',
|
||||
},
|
||||
installApp: {
|
||||
width: '100%',
|
||||
|
||||
@@ -240,7 +240,7 @@ class Register extends React.Component {
|
||||
|
||||
<TextField
|
||||
className={clsx(classes.margin, classes.textField)}
|
||||
label="Password"
|
||||
label="Mot de passe"
|
||||
name="password"
|
||||
id="adornment-password"
|
||||
variant="outlined"
|
||||
|
||||
@@ -95,11 +95,11 @@ export default function SocialShare(props) {
|
||||
<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")} target="_blank">
|
||||
<a href={"https://www.linkedin.com/shareArticle?mini=true&url=" + encodeURIComponent(props.url + "&title=Talents 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} target="_blank"s>
|
||||
<a href={"mailto:?subject=Offre d'emploi Talents Tube&body=Regardez cette offre : " + props.url} target="_blank"s>
|
||||
<Icon className={clsx(classes.icon, classes.MailIcon, 'fas fa-envelope')} color="secondary" />
|
||||
</a>
|
||||
</Hidden>
|
||||
@@ -110,11 +110,11 @@ export default function SocialShare(props) {
|
||||
<a href={"http://twitter.com/share?url=" + encodeURIComponent(props.url)} target="_blank">
|
||||
<Icon className={clsx(classes.icon, classes.TwitterIconMobile, 'fab fa-twitter')} color="secondary" />
|
||||
</a>
|
||||
<a href={"https://www.linkedin.com/shareArticle?mini=true&url=" + encodeURIComponent(props.url + "&title=Talent's Tube")} target="_blank">
|
||||
<a href={"https://www.linkedin.com/shareArticle?mini=true&url=" + encodeURIComponent(props.url + "&title=Talents Tube")} target="_blank">
|
||||
<Icon className={clsx(classes.icon, classes.LinkedinIconMobile, '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} target="_blank"s>
|
||||
<a href={"mailto:?subject=Offre d'emploi Talents Tube&body=Regardez cette offre : " + props.url} target="_blank"s>
|
||||
<Icon className={clsx(classes.icon, classes.MailIconMobile, 'fas fa-envelope')} color="secondary" />
|
||||
</a>
|
||||
</Hidden>
|
||||
|
||||
@@ -213,7 +213,7 @@ class Grid extends Component {
|
||||
NextButton: {
|
||||
fontSize: '0.9em',
|
||||
fontWeight: '600',
|
||||
fontFamily: 'Dosis',
|
||||
fontFamily: '"Roboto", "Helvetica", "Arial", "sans-serif"',
|
||||
textTransform: 'inherit',
|
||||
marginLeft: '64px',
|
||||
marginRight: '64px',
|
||||
@@ -229,7 +229,7 @@ class Grid extends Component {
|
||||
PreviousButton: {
|
||||
fontSize: '0.9em',
|
||||
fontWeight: '600',
|
||||
fontFamily: 'Dosis',
|
||||
fontFamily: '"Roboto", "Helvetica", "Arial", "sans-serif"',
|
||||
textTransform: 'inherit',
|
||||
marginLeft: '64px',
|
||||
marginRight: '64px',
|
||||
@@ -245,7 +245,7 @@ class Grid extends Component {
|
||||
PageDropdown: {
|
||||
fontSize: '0.9em',
|
||||
fontWeight: '600',
|
||||
fontFamily: 'Dosis',
|
||||
fontFamily: '"Roboto", "Helvetica", "Arial", "sans-serif"',
|
||||
// display: 'none',
|
||||
},
|
||||
}
|
||||
|
||||
@@ -1,10 +1,17 @@
|
||||
import React, { Component, useEffect } from 'react'
|
||||
import { withStyles } from '@material-ui/core/styles'
|
||||
import Router from 'next/router';
|
||||
import RootContainer from '../atoms/RootContainer'
|
||||
import ButtonBase from "@material-ui/core/ButtonBase";
|
||||
import ArrowLeft from '@material-ui/icons/KeyboardArrowLeft';
|
||||
import Typography from '@material-ui/core/Typography';
|
||||
import { Hidden } from '@material-ui/core';
|
||||
import { Button, Hidden } from '@material-ui/core';
|
||||
import Dialog from '@material-ui/core/Dialog';
|
||||
import DialogActions from '@material-ui/core/DialogActions';
|
||||
import DialogContent from '@material-ui/core/DialogContent';
|
||||
import DialogContentText from '@material-ui/core/DialogContentText';
|
||||
import DialogTitle from '@material-ui/core/DialogTitle';
|
||||
|
||||
|
||||
const styles = theme => ({
|
||||
inner: {
|
||||
@@ -61,14 +68,64 @@ const styles = theme => ({
|
||||
fontSize: '0.8rem',
|
||||
fontWeight: '500',
|
||||
|
||||
},
|
||||
popup:{
|
||||
fontFamily: 'Roboto',
|
||||
color: '#1E2327',
|
||||
fontSize: '0.8rem',
|
||||
fontWeight: '500',
|
||||
}
|
||||
});
|
||||
|
||||
function LayoutBack(props) {
|
||||
class LayoutBack extends Component {
|
||||
constructor(props) {
|
||||
super(props);
|
||||
|
||||
}
|
||||
|
||||
const { classes, height} = props;
|
||||
state = {
|
||||
open: false,
|
||||
|
||||
};
|
||||
openDialog() {
|
||||
this.setState({ open: true });
|
||||
}
|
||||
|
||||
closeDialog() {
|
||||
this.setState({ open: false });
|
||||
}
|
||||
|
||||
refreshDialog() {
|
||||
this.setState({ open: false });
|
||||
window.location.reload();
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Add a listener to prevent browser page refresh
|
||||
componentWillMount() {
|
||||
if (typeof window !== "undefined") {
|
||||
window.onbeforeunload = (e) => {
|
||||
console.log('Stop this');
|
||||
// this.openDialog();
|
||||
e.preventDefault()
|
||||
e.returnValue = '';
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
// Clear listener
|
||||
componentWillUnmount() {
|
||||
window.onbeforeunload = null
|
||||
}
|
||||
|
||||
|
||||
|
||||
render() {
|
||||
const { classes, height} = this.props;
|
||||
|
||||
//height fixed = height 100vh
|
||||
var openStudio = this.props.openStudio ? 1 : 0;
|
||||
const content = (height == 'fixed') ? classes.content+' '+classes.contentFixed : classes.content
|
||||
return (
|
||||
<RootContainer align='center'>
|
||||
@@ -78,26 +135,50 @@ function LayoutBack(props) {
|
||||
focusRipple
|
||||
className={classes.back}
|
||||
focusVisibleClassName={classes.focusVisible}
|
||||
onClick={() => Router.back()}>
|
||||
|
||||
>
|
||||
<ArrowLeft color="primary" classes={{ root: classes.icon }}></ArrowLeft>
|
||||
{/* <Hidden mdUp className={classes.retour}></Hidden> */}
|
||||
<Hidden smDown className={classes.retour}>Retour</Hidden>
|
||||
<Hidden smDown className={classes.retour}>
|
||||
<div onClick={this.props.step==1 || openStudio==1 ? this.openDialog.bind(this) : () => Router.back()}>Retour</div>
|
||||
|
||||
</Hidden>
|
||||
|
||||
<Dialog open={this.state.open}>
|
||||
<DialogTitle className={classes.popup}> Souhaitez-vous poursuivre votre candidature ?</DialogTitle>
|
||||
<DialogContent className={classes.popup}> Si vous cliquez sur le bouton Supprimer, tous les éléments associés à votre candidature (vidéo, CV…) seront définitivement supprimés. </DialogContent>
|
||||
<DialogActions className={classes.popup}>
|
||||
|
||||
|
||||
<Button onClick={this.refreshDialog.bind(this)} >
|
||||
Supprimer
|
||||
</Button>
|
||||
<Button onClick={this.closeDialog.bind(this)} autoFocus>
|
||||
Poursuivre
|
||||
</Button>
|
||||
</DialogActions>
|
||||
</Dialog>
|
||||
</ButtonBase>
|
||||
<Typography
|
||||
component="h1"
|
||||
align="center"
|
||||
className={classes.title}
|
||||
>
|
||||
{props.text}
|
||||
{this.props.text}
|
||||
</Typography>
|
||||
</div>
|
||||
</div>
|
||||
<div id="C" className={content}>
|
||||
{props.children}
|
||||
{this.props.children}
|
||||
</div>
|
||||
|
||||
</RootContainer>
|
||||
)
|
||||
}
|
||||
}
|
||||
LayoutBack.defaultProps = {
|
||||
step: 0,
|
||||
openStudio:false
|
||||
}
|
||||
|
||||
export default withStyles(styles)(LayoutBack)
|
||||
@@ -6,8 +6,9 @@ import RootContainer from '../atoms/RootContainer'
|
||||
import ButtonBase from "@material-ui/core/ButtonBase";
|
||||
import ArrowLeft from '@material-ui/icons/KeyboardArrowLeft';
|
||||
import HideOnScroll from '../atoms/CollapsibleBack';
|
||||
import SocialShare from '../organisms/SocialShare'
|
||||
import withWidth, { isWidthUp } from '@material-ui/core/withWidth'
|
||||
import Header from '../organisms/Header'
|
||||
import HeaderEntreprise from '../organisms/HeaderPersonnalise'
|
||||
import {AppBar,CssBaseline,Container,Toolbar,IconButton,Typography} from "@material-ui/core";
|
||||
import Hidden from '@material-ui/core/Hidden';
|
||||
import Link from 'next/link'
|
||||
@@ -80,63 +81,56 @@ const styles = theme => ({
|
||||
padding: theme.spacing(1.2, 2),
|
||||
color: '#BBBCBD',
|
||||
backgroundColor: '#F3F3F4',
|
||||
|
||||
},
|
||||
lien:{
|
||||
textDecoration:'none',
|
||||
color:'#fff'
|
||||
},
|
||||
})
|
||||
|
||||
function LayoutCompany(props) {
|
||||
|
||||
const { classes, companyId } = props;
|
||||
|
||||
const { classes, companyId, companyLibelle } = props;
|
||||
const socialShareUrl = typeof window !== 'undefined' ? window.location : publicRuntimeConfig.frontServerUrl + `/Entreprise/${companyId}-${_.kebabCase(companyLibelle)}`;
|
||||
return (
|
||||
<React.Fragment>
|
||||
{isWidthUp('sm', props.width) ?
|
||||
(<Header />)
|
||||
:
|
||||
(<HideOnScroll threshold={50}>
|
||||
<AppBar className={classes.appBar}>
|
||||
<Toolbar>
|
||||
<ButtonBase name='back'
|
||||
focusRipple
|
||||
className={classes.back}
|
||||
focusVisibleClassName={classes.focusVisible}
|
||||
onClick={() => Router.back()}>
|
||||
<ArrowLeft classes={{ root: classes.icon }}></ArrowLeft>
|
||||
</ButtonBase>
|
||||
</Toolbar>
|
||||
</AppBar>
|
||||
</HideOnScroll>)
|
||||
}
|
||||
|
||||
<Container classes={{ root: classes.RootContainer }}>
|
||||
|
||||
<RootContainer>
|
||||
<HeaderEntreprise retour="Entreprises" menu="Entreprises"/>
|
||||
<div id="C" className={classes.content}>
|
||||
{props.children}
|
||||
</div>
|
||||
|
||||
<Hidden mdUp>
|
||||
<div id="F" className={classes.foot}>
|
||||
<Link href="#discover" >
|
||||
<Button
|
||||
variant="contained"
|
||||
className={classes.button + ' cypButtonApply'}
|
||||
classes={{ root: classes.rootButton}}
|
||||
|
||||
>
|
||||
<a href={`/Reponse?companyId=${companyId}`} className={classes.lien }>Postuler</a>
|
||||
</Button>
|
||||
<SocialShare url={socialShareUrl} />
|
||||
{/* <Link href="#discover" >
|
||||
<Button
|
||||
variant="contained"
|
||||
className={classes.voirOffre + ' cypButtonApply'}
|
||||
>Voir les offres</Button>
|
||||
|
||||
</Link>
|
||||
<a
|
||||
</Link> */}
|
||||
{/* <a
|
||||
href={`/Reponse?companyId=${companyId}`}
|
||||
variant="contained"
|
||||
className={classes.button}
|
||||
classes={{ root: classes.rootButton }}
|
||||
// onClick={() => Router.push(`/Reponse?companyId=${companyId}`)}
|
||||
>
|
||||
Candidature spontanée</a>
|
||||
Candidature spontanée</a> */}
|
||||
</div>
|
||||
</Hidden>
|
||||
|
||||
</RootContainer>
|
||||
</Container>
|
||||
</React.Fragment>
|
||||
|
||||
|
||||
)
|
||||
}
|
||||
|
||||
@@ -5,12 +5,14 @@ import Router from 'next/router';
|
||||
import RootContainer from '../atoms/RootContainer'
|
||||
import ButtonBase from "@material-ui/core/ButtonBase";
|
||||
import ArrowLeft from '@material-ui/icons/KeyboardArrowLeft';
|
||||
import Header from '../organisms/HeaderOffre'
|
||||
import HeaderPersonnalise from '../organisms/HeaderPersonnalise'
|
||||
import SocialShare from '../organisms/SocialShare'
|
||||
import withWidth, { isWidthUp } from '@material-ui/core/withWidth'
|
||||
import Hidden from '@material-ui/core/Hidden';
|
||||
import Link from 'next/link'
|
||||
|
||||
import getConfig from 'next/config'
|
||||
import _ from "lodash/string";
|
||||
const { publicRuntimeConfig } = getConfig()
|
||||
const styles = theme => ({
|
||||
foot: {
|
||||
display: 'flex',
|
||||
@@ -90,17 +92,9 @@ function LayoutOffre(props) {
|
||||
const socialShareUrl = typeof window !== 'undefined' ? window.location : publicRuntimeConfig.frontServerUrl + `/Offre/${offreId}-${_.kebabCase(offre.title)}`;
|
||||
return (
|
||||
<RootContainer>
|
||||
{isWidthUp('xs', props.width) ?
|
||||
(<Header />)
|
||||
:
|
||||
(<ButtonBase name='back'
|
||||
focusRipple
|
||||
className={classes.back}
|
||||
focusVisibleClassName={classes.focusVisible}
|
||||
onClick={() => Router.back()}>
|
||||
<ArrowLeft classes={{ root: classes.icon }}></ArrowLeft>
|
||||
</ButtonBase>)
|
||||
}
|
||||
|
||||
<HeaderPersonnalise retour="Offres" menu="Offres d'emploi"/>
|
||||
|
||||
<div id="C" className={contentClass}>
|
||||
{props.children}
|
||||
</div>
|
||||
@@ -154,4 +148,4 @@ LayoutOffre.propTypes = {
|
||||
offre: PropTypes.object,
|
||||
};
|
||||
|
||||
export default withStyles(styles)(withWidth()(LayoutOffre))
|
||||
export default withStyles(styles)(LayoutOffre)
|
||||
@@ -8,7 +8,7 @@ const styles = theme => ({
|
||||
alignItems: 'center',
|
||||
textAlign: 'center',
|
||||
justifyContent: 'center',
|
||||
fontFamily: 'Dosis',
|
||||
fontFamily: '"Roboto", "Helvetica", "Arial", "sans-serif"',
|
||||
fontWeight: '500',
|
||||
fontSize: '1em',
|
||||
padding: theme.spacing(6,0),
|
||||
|
||||
@@ -9,11 +9,24 @@ const styles = theme => ({
|
||||
alignItems: 'center',
|
||||
textAlign: 'center',
|
||||
justifyContent: 'center',
|
||||
fontFamily: 'Dosis',
|
||||
fontFamily: '"Roboto", "Helvetica", "Arial", "sans-serif"',
|
||||
fontWeight: '500',
|
||||
fontSize: '1em',
|
||||
padding: theme.spacing(6,0),
|
||||
color: theme.palette.primary.main,
|
||||
margin:'50px 0',
|
||||
},
|
||||
loaderGras:{
|
||||
fontFamily: '"Roboto", "Helvetica", "Arial", "sans-serif"',
|
||||
paddingTop:'10px',
|
||||
fontSize: '1.875em',
|
||||
fontWeight: '500',
|
||||
marginBottom:'30px',
|
||||
|
||||
},
|
||||
loaderSecondaire:{
|
||||
fontFamily: '"Roboto", "Helvetica", "Arial", "sans-serif"',
|
||||
fontSize: '1em',
|
||||
fontWeight: '300',
|
||||
},
|
||||
root: {
|
||||
top:"200px",
|
||||
@@ -26,13 +39,12 @@ const styles = theme => ({
|
||||
|
||||
class LoaderVideo extends React.Component {
|
||||
render() {
|
||||
const { classes } = this.props;
|
||||
const { classes, textePrincipal, texteSecondaire } = this.props;
|
||||
return (
|
||||
<div className={classes.root}>
|
||||
<div className={classes.loader + ' ' + 'alert alert-info'}><CircularProgress color="primary" />Veuillez ne pas quitter la page.<br/> Le temps de chargement peut varier de quelques secondes à plusieurs minutes en fonction de la qualité de votre connexion internet.<br/></div>
|
||||
<div className={classes.loader }><CircularProgress color="primary" /><span className={classes.loaderGras }>{textePrincipal}</span><br/><span className={classes.loaderSecondaire }> {texteSecondaire}</span><br/></div>
|
||||
<div >
|
||||
<LinearProgress />
|
||||
<LinearProgress color="secondary" />
|
||||
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
|
||||
+24
-4
@@ -145,12 +145,32 @@ export default {
|
||||
countAdView: id => {
|
||||
if (!!localStorage.ttJWT)
|
||||
setAuthorizationHeader(localStorage.ttJWT)
|
||||
axios.get(`api/adAjaxRecStat/${id}`)
|
||||
let continuerAds = true;
|
||||
|
||||
if (sessionStorage.getItem("ads"+id)){
|
||||
continuerAds=false;
|
||||
}
|
||||
|
||||
if( continuerAds){
|
||||
axios.get(`api/adAjaxRecStat/${id}`)
|
||||
sessionStorage.setItem('ads'+id, id);
|
||||
}
|
||||
},
|
||||
countCompanyView: id => {
|
||||
if (!!localStorage.ttJWT)
|
||||
setAuthorizationHeader(localStorage.ttJWT)
|
||||
axios.get(`api/companyAjaxRecStat/${id}`)
|
||||
if (!!localStorage.ttJWT){
|
||||
setAuthorizationHeader(localStorage.ttJWT);
|
||||
}
|
||||
|
||||
let continuer = true;
|
||||
|
||||
if (sessionStorage.getItem("companies"+id)){
|
||||
continuer=false;
|
||||
}
|
||||
|
||||
if( continuer){
|
||||
axios.get(`api/companyAjaxRecStat/${id}`);
|
||||
sessionStorage.setItem('companies'+id, id);
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
@@ -55,8 +55,8 @@ module.exports = withPlugins(
|
||||
blogUrl: 'https://blog.talentstube.com',
|
||||
frontServerUrl: 'https://pp.app.talentstube.com/',
|
||||
cvThequeUrl: 'https://recruteur.talentstube.com',
|
||||
version : 'V2.4.3',
|
||||
adListDefaultUrl: '/statique/images/default/default_picture_company.svg',
|
||||
version : 'V2.7.1',
|
||||
adListDefaultUrl: '/statique/images/default/default_picture_company.jpg',
|
||||
cachedMediaUrl: '/media/cache/profile_thumb/uploads/img/',
|
||||
postedContentUrl: '/uploads/img/',
|
||||
postedContentCv: '/uploads/cv/',
|
||||
|
||||
+499
-24
@@ -1,28 +1,503 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||
<url>
|
||||
<loc>https://app.talentstube.com/Candidature</loc>
|
||||
<lastmod>2019-09-17</lastmod>
|
||||
</url>,<url>
|
||||
<loc>https://app.talentstube.com/Cgu</loc>
|
||||
<lastmod>2019-09-17</lastmod>
|
||||
</url>,<url>
|
||||
<loc>https://app.talentstube.com/Confidentialite</loc>
|
||||
<lastmod>2019-11-04</lastmod>
|
||||
</url>,<url>
|
||||
<loc>https://app.talentstube.com/Entreprises</loc>
|
||||
<lastmod>2019-09-17</lastmod>
|
||||
</url>,<url>
|
||||
<loc>https://app.talentstube.com/Help</loc>
|
||||
<lastmod>2019-10-11</lastmod>
|
||||
</url>,<url>
|
||||
<loc>https://app.talentstube.com/Login</loc>
|
||||
<lastmod>2019-10-14</lastmod>
|
||||
</url>,<url>
|
||||
<loc>https://app.talentstube.com/MentionsLegales</loc>
|
||||
<lastmod>2019-11-04</lastmod>
|
||||
</url>,<url>
|
||||
<loc>https://app.talentstube.com/Offres</loc>
|
||||
<lastmod>2019-10-16</lastmod>
|
||||
<loc>https://www.talentstube.com/Player?id=135&url=/Offre/135-commercial-b-to-c-f-h&videoId=502499843&typeEntite=Offre&nameCompany=Fym%20Action&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=133&url=/Offre/133-gestionnaire-de-copropriete-f-h&videoId=500395879&typeEntite=Offre&nameCompany=Cabinet%20JOURDAN&nameOffre=Gestionnaire%20de%20co%20propriete</loc>
|
||||
<lastmod>2021-02-10</lastmod>
|
||||
<priority>1.00</priority>
|
||||
</url>
|
||||
</urlset>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Player?id=132&url=/Offre/132-comptable-f-h&videoId=495504495&typeEntite=Offre&nameCompany=Cabinet%20JOURDAN&nameOffre=Comptable%20(F/H)</loc>
|
||||
<lastmod>2021-02-10</lastmod>
|
||||
<priority>1.00</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Player?id=130&url=/Offre/130-assistant-f-h&videoId=495156742&typeEntite=Offre&nameCompany=Cabinet%20JOURDAN&nameOffre=Assistant%20(F/H)</loc>
|
||||
<lastmod>2021-02-10</lastmod>
|
||||
<priority>1.00</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Player?id=131&url=/Offre/131-poseur-f-h&videoId=494089386&typeEntite=Offre&nameCompany=TPC%20Ouest&nameOffre=Poseur%20(F/H)</loc>
|
||||
<lastmod>2021-02-10</lastmod>
|
||||
<priority>1.00</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Player?id=131&url=/Offre/140-aide-a-domicile-f-h&videoId=507891163&typeEntite=Offre&nameCompany=ADMR56&nameOffre=Aide%20a%20domicile</loc>
|
||||
<lastmod>2021-02-10</lastmod>
|
||||
<priority>1.00</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Player?id=135&url=/Offre/129-commercial-b-to-b-f-h&videoId=491331138&typeEntite=Offre&nameCompany=Fym%20Action&nameOffre=Commercial%20B%20to%20b%20(F/H)</loc>
|
||||
<lastmod>2021-02-10</lastmod>
|
||||
<priority>1.00</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Player?id=122&url=/Offre/122-chauffeurs-spl-f-h&videoId=482599011&typeEntite=Offre&nameCompany=AER%20Recyclage&nameOffre=Chauffeurs%20SPL%20(F/H)</loc>
|
||||
<lastmod>2021-02-10</lastmod>
|
||||
<priority>1.00</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Player?id=128&url=/Offre/128-techniciens-poseurs-f-h&videoId=485471109&typeEntite=Offre&nameCompany=Pro%20Fermetures&nameOffre=Techniciens%20Poseurs%20(F/H)</loc>
|
||||
<lastmod>2021-02-10</lastmod>
|
||||
<priority>1.00</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Player?id=113&url=/Offre/113-aide-a-domicile-f-h&videoId=440702903&typeEntite=Offre&nameCompany=Onela&nameOffre=Aide%20à%20domicile%20(F/H)</loc>
|
||||
<lastmod>2021-02-10</lastmod>
|
||||
<priority>1.00</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Player?id=120&url=/Offre/120-technico-commercial-f-h&videoId=462942715&typeEntite=Offre&nameCompany=Temporis&nameOffre=Technico-Commercial%20(F/H)</loc>
|
||||
<lastmod>2021-02-10</lastmod>
|
||||
<priority>1.00</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Player?id=115&url=/Offre/115-technicien-ramoneur-fumiste-f-h&videoId=460206945&typeEntite=Offre&nameCompany=La%20Centrale%20des%20Ramoneurs&nameOffre=Technicien%20Ramoneur%20/%20Fumiste%20(F/H)</loc>
|
||||
<lastmod>2021-02-10</lastmod>
|
||||
<priority>1.00</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Player?id=109&url=/Offre/109-equipier-de-plateforme-polyvalent-f-h&videoId=422692890&typeEntite=Offre&nameCompany=AER%20Recyclage&nameOffre=Equipier%20de%20plateforme%20polyvalent%20(F/H)</loc>
|
||||
<lastmod>2021-02-10</lastmod>
|
||||
<priority>1.00</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Player?id=112&url=/Offre/112-conseillers-technico-commerciaux-h-f&videoId=438478115&typeEntite=Offre&nameCompany=Pro%20Fermetures&nameOffre=Conseillers%20Technico-Commerciaux%20(H/F)</loc>
|
||||
<lastmod>2021-02-10</lastmod>
|
||||
<priority>1.00</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Player?id=111&url=/Offre/111-couvreur-etancheur-f-h&videoId=432410136&typeEntite=Offre&nameCompany=Blandin&nameOffre=Couvreur/Étancheur%20(F/H)</loc>
|
||||
<lastmod>2021-02-10</lastmod>
|
||||
<priority>1.00</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Player?id=108&url=/Offre/108-plombier-chauffagiste-f-h&videoId=398509552&typeEntite=Offre&nameCompany=Blandin&nameOffre=Plombier/Chauffagiste%20(F/H)</loc>
|
||||
<lastmod>2021-02-10</lastmod>
|
||||
<priority>1.00</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Player?id=107&url=/Offre/107-operateur-soudeur-chaudronnier-f-h&videoId=397982745&typeEntite=Offre&nameCompany=GEIQ%20Industrie%2044&nameOffre=Opérateur%20Soudeur%20/%20Chaudronnier%20(F/H)</loc>
|
||||
<lastmod>2021-02-10</lastmod>
|
||||
<priority>1.00</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Player?id=101&url=/Offre/101-conducteurs-routiers-f-h&videoId=391023366&typeEntite=Offre&nameCompany=Lactalis%20Logistique%20et%20Transports&nameOffre=Conducteurs%20routiers%20(F/H)</loc>
|
||||
<lastmod>2021-02-10</lastmod>
|
||||
<priority>1.00</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Player?id=103&url=/Offre/103-agents-de-quai-f-h&videoId=391023871&typeEntite=Offre&nameCompany=Lactalis%20Logistique%20et%20Transports&nameOffre=Agents%20de%20quai%20(F/H)</loc>
|
||||
<lastmod>2021-02-10</lastmod>
|
||||
<priority>1.00</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Player?id=77&url=/Offre/77-commercial-sedentaire-en-vente-directe-b-to-b-h-f&videoId=343666512&typeEntite=Offre&nameCompany=Télémaque&nameOffre=Commercial%20sédentaire%20en%20vente%20directe%20B%20to%20B%20(H/F)</loc>
|
||||
<lastmod>2021-02-10</lastmod>
|
||||
<priority>1.00</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Player?id=102&url=/Offre/102-preparateurs-de-commandes-f-h&videoId=391023988&typeEntite=Offre&nameCompany=Lactalis%20Logistique%20et%20Transports&nameOffre=Préparateurs%20de%20commandes%20(F/H)</loc>
|
||||
<lastmod>2021-02-10</lastmod>
|
||||
<priority>1.00</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Player?id=46&url=/Offre/46-conducteurs-routiers-h-f&videoId=273464203&typeEntite=Offre&nameCompany=Groupe%20MOUSSET&nameOffre=Conducteurs%20routiers%20(H/F)</loc>
|
||||
<lastmod>2021-02-10</lastmod>
|
||||
<priority>1.00</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Player?id=32518&url=/Entreprise/32518-cabinet-jourdan&videoId=491607083&typeEntite=Entreprise&nameCompany=Cabinet%20JOURDAN&nameOffre=</loc>
|
||||
<lastmod>2021-02-10</lastmod>
|
||||
<priority>1.00</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Player?id=32507&url=/Entreprise/32507-tpc-ouest&videoId=489836459&typeEntite=Entreprise&nameCompany=TPC%20Ouest&nameOffre=</loc>
|
||||
<lastmod>2021-02-10</lastmod>
|
||||
<priority>1.00</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Player?id=32355&url=/Entreprise/32355-hyphae&videoId=478847996&typeEntite=Entreprise&nameCompany=HYPHAE&nameOffre=</loc>
|
||||
<lastmod>2021-02-04</lastmod>
|
||||
<priority>1.00</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Player?id=21247&url=/Entreprise/21247-lactalis-logistique-et-transports&videoId=391023777&typeEntite=Entreprise&nameCompany=Lactalis%20Logistique%20et%20Transports&nameOffre=</loc>
|
||||
<lastmod>2021-02-10</lastmod>
|
||||
<priority>1.00</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Player?id=19800&url=/Entreprise/19800-silvadec&videoId=386500340&typeEntite=Entreprise&nameCompany=Silvadec&nameOffre=</loc>
|
||||
<lastmod>2021-02-04</lastmod>
|
||||
<priority>1.00</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Player?id=19205&url=/Entreprise/19205-intermarche-logistique-alimentaire-international&videoId=385268706&typeEntite=Entreprise&nameCompany=Intermarché%20Logistique%20Alimentaire%20International&nameOffre=</loc>
|
||||
<lastmod>2021-02-10</lastmod>
|
||||
<priority>1.00</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Player?id=12480&url=/Entreprise/12480-fym-action&videoId=345898361&typeEntite=Entreprise&nameCompany=Fym%20Action&nameOffre=</loc>
|
||||
<lastmod>2021-02-10</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>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Offre/133-gestionnaire-de-copropriete-f-h</loc>
|
||||
<lastmod>2021-01-29</lastmod>
|
||||
<priority>1.00</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprises</loc>
|
||||
<lastmod>2021-01-18</lastmod>
|
||||
<priority>1.00</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Offres</loc>
|
||||
<lastmod>2021-01-18</lastmod>
|
||||
<priority>1.00</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Offre/134-assistant-administratif-et-commercial-f-h</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>1.00</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Offre/135-commercial-b-to-c-f-h</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>1.00</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Offre/130-assistant-f-h</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>1.00</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Offre/131-poseur-f-h</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>1.00</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Offre/132-comptable-f-h</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>1.00</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Offre/129-commerciaux-b-to-b-f-h</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>1.00</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Offre/128-techniciens-poseurs-f-h</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>1.00</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Offre/122-chauffeurs-spl-f-h</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.80</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Offre/115-technicien-ramoneur-fumiste-f-h</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.80</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Offre/109-equipier-de-plateforme-polyvalent-f-h</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.80</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Offre/111-couvreur-etancheur-f-h</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.80</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Offre/107-operateur-soudeur-chaudronnier-f-h</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.80</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Offre/103-agents-de-quai-f-h</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.80</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Offre/102-preparateurs-de-commandes-f-h</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.80</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Offre/46-conducteurs-routiers-h-f</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/32507-tpc-ouest</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>1.00</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/32355-hyphae</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/28481-onela</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/28172-pro-fermetures</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/26064-aer-recyclage</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/21247-lactalis-logistique-et-transports</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/19800-silvadec</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/19205-intermarche-logistique-alimentaire-international</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/18143-l-n-u-f-lisieux</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/17467-l-n-u-f-vallet</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/16785-nachos</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/16639-fast-point</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/16247-sasp</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/16015-la-veggisserie</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/16007-bforpu-b</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/15797-sinay</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/15559-monibrand</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/13464-jpa</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/12531-grand-ouest-etiquettes</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/12480-fym-action</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/11592-youston</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/11413-les-vergers-de-chateaubourg</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/11345-telemaque</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/9138-vital-concept</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/8639-mma-questembert</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>1.00</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/7593-opticultures</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/7174-atlantem</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/7004-la-table-de-la-desirade</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/6898-le-ptit-club</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/6555-mazars</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/6363-square-habitat</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/5250-linpac-packaging-pontivy-groupe-klockner-pentaplast</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/4211-progressis-ge</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/4097-a-2-com</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/4088-venetis</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/4059-eiffage-construction-grand-ouest</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/3381-mairie-saint-hilaire-de-riez</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/2958-skiold-acemo</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/2527-groupe-mousset</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/2341-temporis</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/1899-faurecia</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/1691-groupe-syselec</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/1467-groupe-rocher-operations</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/1297-albea</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/438-bouyer-leroux</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/266-mgdis</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/157-medaviz</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/95-multiplast</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/52-talents-tube</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/46-actual</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/18-coriolis-composites</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/17-thibault-bergeron</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
</urlset>
|
||||
|
||||
+2
-1
@@ -36,7 +36,7 @@
|
||||
"next-optimized-images": "^1.4.1",
|
||||
"next-redux-saga": "^4.0.2",
|
||||
"next-redux-wrapper": "^3.0.0-alpha.2",
|
||||
"next-seo": "^4.7.3",
|
||||
"next-seo": "^4.18.0",
|
||||
"next-transpile-modules": "^2.3.1",
|
||||
"node-mailjet": "^3.3.1",
|
||||
"nodemailer": "^4.6.8",
|
||||
@@ -61,6 +61,7 @@
|
||||
"react-redux": "^7.0.3",
|
||||
"react-redux-loading-bar": "^5.0.0",
|
||||
"react-router-dom": "^5.2.0",
|
||||
"react-select": "^3.1.1",
|
||||
"react-sticky-box": "^0.9.3",
|
||||
"react-swipeable-views": "^0.13.3",
|
||||
"reactstrap": "^6.4.0",
|
||||
|
||||
@@ -33,7 +33,7 @@ const styles = theme => ({
|
||||
backgroundColor: theme.palette.primary.main,
|
||||
},
|
||||
title: {
|
||||
fontFamily: 'Dosis',
|
||||
fontFamily: '"Roboto", "Helvetica", "Arial", "sans-serif"',
|
||||
fontSize: '1.5em',
|
||||
fontWeight: '600',
|
||||
textAlign: 'center',
|
||||
|
||||
+1
-1
@@ -22,7 +22,7 @@ const styles = theme => ({
|
||||
bottom: 0,
|
||||
},
|
||||
title: {
|
||||
fontFamily: 'Dosis',
|
||||
fontFamily: '"Roboto", "Helvetica", "Arial", "sans-serif"',
|
||||
fontSize: '1.5em',
|
||||
fontWeight: '600',
|
||||
padding: theme.spacing(3, 0),
|
||||
|
||||
@@ -22,7 +22,7 @@ const styles = theme => ({
|
||||
bottom: 0,
|
||||
},
|
||||
title: {
|
||||
fontFamily: 'Dosis',
|
||||
fontFamily: '"Roboto", "Helvetica", "Arial", "sans-serif"',
|
||||
fontSize: '1.5em',
|
||||
fontWeight: '600',
|
||||
padding: theme.spacing(3, 0),
|
||||
|
||||
+939
-176
File diff suppressed because it is too large
Load Diff
@@ -11,9 +11,8 @@ import CompanyRow from "../components/organisms/CompanyRow"
|
||||
import { fetchCompaniesRequest } from '../actions/companies'
|
||||
import { CompaniesSelector } from '../reducers/companies'
|
||||
import { connect } from "react-redux";
|
||||
import Head from 'next/head'
|
||||
import OgHead from '../components/atoms/OgHead';
|
||||
|
||||
import { SocialProfileJsonLd } from 'next-seo';
|
||||
const styles = theme => ({
|
||||
root: {
|
||||
position: 'relative',
|
||||
@@ -45,7 +44,7 @@ const styles = theme => ({
|
||||
},
|
||||
},
|
||||
title: {
|
||||
fontFamily: 'Dosis',
|
||||
fontFamily: '"Roboto", "Helvetica", "Arial", "sans-serif"',
|
||||
fontSize: '1.5em',
|
||||
fontWeight: '600',
|
||||
textAlign: 'center',
|
||||
@@ -72,7 +71,7 @@ class Entreprises extends React.Component {
|
||||
const { publicRuntimeConfig } = getConfig();
|
||||
const socialShareUrl = typeof window !== 'undefined' ? window.location
|
||||
: publicRuntimeConfig.frontServerUrl + `/Entreprises`;
|
||||
const DefaultUrl = publicRuntimeConfig.symphonyUrl + "/img/default_picture_svg"
|
||||
const DefaultUrl = publicRuntimeConfig.symphonyUrl + "img/default_picture_svg"
|
||||
const imgUrl = DefaultUrl ;
|
||||
return (
|
||||
<LayoutGrid backLink="/">
|
||||
@@ -103,7 +102,18 @@ class Entreprises extends React.Component {
|
||||
image={imgUrl}
|
||||
seo_key="Recrutement, video"
|
||||
|
||||
></OgHead>
|
||||
></OgHead>
|
||||
<SocialProfileJsonLd
|
||||
type="Talents Tube"
|
||||
name="Talents Tube"
|
||||
url="https://www.talentstube.com"
|
||||
sameAs={[
|
||||
'https://www.facebook.com/TalentsTuber',
|
||||
'https://www.instagram.com/talents.tube/',
|
||||
'https://www.linkedin.com/company/talentstube/',
|
||||
'https://twitter.com/TalentsTuber',
|
||||
]}
|
||||
/>
|
||||
<Typography gutterBottom component="h1"
|
||||
className={classes.title}>
|
||||
Les entreprises en <span className={classes.primary}>vidéo</span>
|
||||
|
||||
@@ -25,7 +25,7 @@ const styles = theme => ({
|
||||
},
|
||||
},
|
||||
title: {
|
||||
fontFamily: 'Dosis',
|
||||
fontFamily: '"Roboto", "Helvetica", "Arial", "sans-serif"',
|
||||
fontSize: '1.5em',
|
||||
fontWeight: '600',
|
||||
padding: theme.spacing(3, 0),
|
||||
|
||||
@@ -22,7 +22,7 @@ const styles = theme => ({
|
||||
bottom: 0,
|
||||
},
|
||||
title: {
|
||||
fontFamily: 'Dosis',
|
||||
fontFamily: '"Roboto", "Helvetica", "Arial", "sans-serif"',
|
||||
fontSize: '1.5em',
|
||||
fontWeight: '600',
|
||||
padding: theme.spacing(3, 0),
|
||||
|
||||
+30
-7
@@ -4,9 +4,11 @@ import { connect } from "react-redux";
|
||||
import PropTypes from 'prop-types';
|
||||
import getConfig from 'next/config'
|
||||
import { withStyles } from '@material-ui/core/styles';
|
||||
import OgHead from '../components/atoms/OgHead'
|
||||
import RootContainer from '../components/atoms/RootContainer'
|
||||
import LayoutOffre from "../components/templates/LayoutOffre";
|
||||
const OffreDetail = lazy(() => import('../components/organisms/OffreDetail'));
|
||||
//import OffreDetail from "../components/organisms/OffreDetail";
|
||||
// const OffreDetail = lazy(() => import('../components/organisms/OffreDetail'));
|
||||
import OffreDetail from "../components/organisms/OffreDetail";
|
||||
import { fetchJobRequest, clearAd, countAdViewRequest } from '../actions/ads'
|
||||
import _ from "lodash/string";
|
||||
const renderLoader = () => <p>Chargement</p>;
|
||||
@@ -15,9 +17,12 @@ const styles = theme => ({
|
||||
});
|
||||
|
||||
const { publicRuntimeConfig } = getConfig()
|
||||
let descriptionSEO = ""
|
||||
let titleSEO = ""
|
||||
|
||||
|
||||
class Offre extends React.Component {
|
||||
|
||||
|
||||
componentDidMount() {
|
||||
localStorage.setItem('loginRedirect', window.location.pathname)
|
||||
localStorage.setItem('adId', this.props.offre.id)
|
||||
@@ -33,12 +38,30 @@ class Offre extends React.Component {
|
||||
}
|
||||
render() {
|
||||
const { classes, offre } = this.props;
|
||||
const socialShareUrl = typeof window !== 'undefined' ? window.location : publicRuntimeConfig.frontServerUrl + `/Offre/${offre.id}-${_.kebabCase(offre.title)}`;
|
||||
descriptionSEO=""
|
||||
offre.company && offre.company.brand_name ? descriptionSEO += offre.company.brand_name : ""
|
||||
descriptionSEO += " recrute un(e) "+offre.title+", "+(offre.location && offre.location.gmap_address.formatted_address)+". Envoyez votre candidature vidéo"
|
||||
titleSEO = "Offre d'emploi "+offre && offre.title && offre.title.replace(' (F/H)', '')+", "+(offre.location && offre.location.gmap_address.formatted_address)+". Envoyez votre candidature vidéo"
|
||||
const socialShareUrl = typeof window !== 'undefined' ? window.location : publicRuntimeConfig.frontServerUrl + `Offre/${offre.id}-${_.kebabCase(offre.title)}`;
|
||||
const DefaultUrl = "https://blog.talentstube.com/wp-content/uploads/2021/01/default_picture_company.jpg"
|
||||
const imgUrl = (offre.company && offre.company.presentation_video && offre.company.presentation_video.thumbnails && offre.company.presentation_video.thumbnails[0] && offre.company.presentation_video.thumbnails[0].sizes[3]) ? offre.company.presentation_video.thumbnails[0].sizes[3].link : DefaultUrl
|
||||
const imgUrlDesktop = (offre.company && offre.company.presentation_video && offre.company.presentation_video.thumbnails && offre.company.presentation_video.thumbnails[0] && offre.company.presentation_video.thumbnails[0].sizes[4]) ? offre.company.presentation_video.thumbnails[0].sizes[4].link : DefaultUrl
|
||||
const imgUrlOffre = (offre && offre.video && offre.video.thumbnails && offre.video.thumbnails[0] && offre.video.thumbnails[0].sizes[3]) ? offre.video.thumbnails[0].sizes[3].link : DefaultUrl
|
||||
const imgUrlDesktopOffre = (offre && offre.video && offre.video.thumbnails && offre.video.thumbnails[0] && offre.video.thumbnails[0].sizes[4]) ? offre.video.thumbnails[0].sizes[4].link : DefaultUrl
|
||||
return (
|
||||
<LayoutOffre backLink="/Offres" offreId={offre.id} offre={offre} isProvided={offre.is_promoted}>
|
||||
<RootContainer>
|
||||
<OgHead seo_title={titleSEO}
|
||||
seo_description={descriptionSEO}
|
||||
seo_url={socialShareUrl}
|
||||
image={imgUrlOffre}
|
||||
></OgHead>
|
||||
|
||||
<LayoutOffre backLink="/Offres" offreId={offre.id} offre={offre} isProvided={offre.is_promoted}>
|
||||
|
||||
{/* <Suspense fallback={renderLoader()}><OffreDetail offre={offre}/></Suspense> */}
|
||||
<Suspense fallback={renderLoader()}><OffreDetail offre={offre}/></Suspense>
|
||||
</LayoutOffre>
|
||||
<OffreDetail offre={offre}/>
|
||||
</LayoutOffre>
|
||||
</RootContainer>
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
+15
-6
@@ -11,11 +11,9 @@ import OffreRow from "../components/organisms/OffreRow"
|
||||
import Typography from '@material-ui/core/Typography';
|
||||
import { fetchJobsRequest, togglePromotedFilterRequest} from '../actions/ads'
|
||||
import { AdsSelector } from '../reducers/ads'
|
||||
import { TextField } from '@material-ui/core';
|
||||
import Head from 'next/head'
|
||||
import OgHead from '../components/atoms/OgHead';
|
||||
import getConfig from 'next/config'
|
||||
|
||||
import { SocialProfileJsonLd } from 'next-seo';
|
||||
|
||||
const styles = theme => ({
|
||||
root: {
|
||||
@@ -40,7 +38,7 @@ const styles = theme => ({
|
||||
|
||||
},
|
||||
title: {
|
||||
fontFamily: 'Dosis',
|
||||
fontFamily: '"Roboto", "Helvetica", "Arial", "sans-serif"',
|
||||
fontSize: '1.5em',
|
||||
fontWeight: '600',
|
||||
textAlign: 'center',
|
||||
@@ -104,7 +102,7 @@ class Offres extends React.Component {
|
||||
const { publicRuntimeConfig } = getConfig();
|
||||
const socialShareUrl = typeof window !== 'undefined' ? window.location
|
||||
: publicRuntimeConfig.frontServerUrl + `/Offres`;
|
||||
const DefaultUrl = publicRuntimeConfig.symphonyUrl + "/img/default_picture_svg"
|
||||
const DefaultUrl = publicRuntimeConfig.symphonyUrl + "img/default_picture_svg"
|
||||
const imgUrl = DefaultUrl ;
|
||||
return (
|
||||
<LayoutGrid backLink="/">
|
||||
@@ -114,7 +112,18 @@ class Offres extends React.Component {
|
||||
image={imgUrl}
|
||||
seo_key="Recrutement, video"
|
||||
|
||||
></OgHead>
|
||||
></OgHead>
|
||||
<SocialProfileJsonLd
|
||||
type="Talents Tube"
|
||||
name="Talents Tube"
|
||||
url="https://www.talentstube.com"
|
||||
sameAs={[
|
||||
'https://www.facebook.com/TalentsTuber',
|
||||
'https://www.instagram.com/talents.tube/',
|
||||
'https://www.linkedin.com/company/talentstube/',
|
||||
'https://twitter.com/TalentsTuber',
|
||||
]}
|
||||
/>
|
||||
|
||||
<Typography gutterBottom component="h1"
|
||||
className={classes.title}>
|
||||
|
||||
@@ -39,7 +39,7 @@ const styles = theme => ({
|
||||
}
|
||||
},
|
||||
title: {
|
||||
fontFamily: 'Dosis',
|
||||
fontFamily: '"Roboto", "Helvetica", "Arial", "sans-serif"',
|
||||
fontSize: '1.5em',
|
||||
fontWeight: '600',
|
||||
padding: theme.spacing(3, 0),
|
||||
|
||||
+65
-17
@@ -1,13 +1,17 @@
|
||||
import React, { Component, Fragment,lazy, Suspense } from 'react';
|
||||
import React, { Component, Fragment,lazy, Suspense, useEffect } from 'react';
|
||||
import { withStyles } from '@material-ui/core/styles';
|
||||
import Typography from '@material-ui/core/Typography'
|
||||
import LayoutBackUrl from '../components/templates/LayoutBackUrl';
|
||||
import RootContainer from '../components/atoms/RootContainer'
|
||||
import Router from 'next/router';
|
||||
import Head from 'next/head'
|
||||
// const VideoVimeo = lazy(() => import('../components/atoms/VideoVimeo'));
|
||||
import VideoVimeo from '../components/atoms/VideoVimeo';
|
||||
import queryString from 'query-string';
|
||||
import { fetchJobRequest, clearAd, countAdViewRequest } from '../actions/ads'
|
||||
const renderLoader = () => <p>Chargement</p>;
|
||||
import { NextSeo } from 'next-seo';
|
||||
import dynamic from 'next/dynamic'
|
||||
const styles = theme => ({
|
||||
player: {
|
||||
background:'#1E2327',
|
||||
@@ -29,7 +33,7 @@ const styles = theme => ({
|
||||
bottom: 0,
|
||||
},
|
||||
title: {
|
||||
fontFamily: 'Dosis',
|
||||
fontFamily: '"Roboto", "Helvetica", "Arial", "sans-serif"',
|
||||
fontSize: '1.5em',
|
||||
fontWeight: '600',
|
||||
padding: theme.spacing(3, 0),
|
||||
@@ -49,31 +53,75 @@ const styles = theme => ({
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
let params = dynamic( () => window.location.search, {ssr: false} )
|
||||
class Player extends Component {
|
||||
constructor(props)
|
||||
{
|
||||
super(props);
|
||||
var today = new Date(),
|
||||
date = today.getFullYear() + '-' + (today.getMonth() + 1) + '-' + today.getDate();
|
||||
|
||||
this.state = {
|
||||
date: date
|
||||
};
|
||||
|
||||
console.log("LOCATION SEARCH");
|
||||
console.log(params);
|
||||
}
|
||||
render() {
|
||||
const { classes } = this.props
|
||||
const params = queryString.parse(location.search);
|
||||
console.log(params.id);
|
||||
console.log(params.type);
|
||||
console.log(params.videoId);
|
||||
let url = params.id;
|
||||
const { classes, id, url, typeEntite, videoId, nameCompany, nameOffre } = this.props
|
||||
|
||||
|
||||
console.log(id);
|
||||
console.log(typeEntite);
|
||||
let typeVideo= null;
|
||||
let titleVideo= null;
|
||||
let descriptionVideo= null;
|
||||
if(typeEntite=="Offre"){
|
||||
titleVideo=nameCompany+" recrute un(e)"+nameOffre
|
||||
descriptionVideo=nameCompany+" recrute en vidéo un(e)"+nameOffre
|
||||
}else if(typeEntite=="Entreprise"){
|
||||
titleVideo="Découvrez l'entreprise "+nameCompany+" et ses offres d'emploi vidéo"
|
||||
descriptionVideo="Découvrez l'entreprise "+nameCompany+" et ses offres d'emploi vidéo. Envoyez votre candidature spontanée en vidéo"
|
||||
}else if(typeEntite=="Territoire"){
|
||||
titleVideo="Découvrez le territoire "+nameCompany
|
||||
descriptionVideo="Découvrez le territoire "+nameCompany
|
||||
}
|
||||
console.log(videoId);
|
||||
|
||||
return (
|
||||
<LayoutBackUrl text="Player" url={url} >
|
||||
|
||||
|
||||
<VideoVimeo classes={{ video: classes.video }} videoId={params.videoId} options="" autoplay='1' />
|
||||
|
||||
</LayoutBackUrl>
|
||||
<RootContainer>
|
||||
<NextSeo
|
||||
title={titleVideo}
|
||||
description={descriptionVideo}
|
||||
noindex={true}
|
||||
nofollow={true}
|
||||
openGraph={{
|
||||
title: titleVideo,
|
||||
description: descriptionVideo,
|
||||
url: "https://www.talentstube.com/Player?id="+id+"&url="+url+"&videoId="+videoId+"&typeEntite="+typeEntite+"&nameCompany="+nameCompany+"&nameOffre="+nameOffre,
|
||||
type: 'video.movie',
|
||||
video: {
|
||||
// Multiple Open Graph actors is only available in version `7.0.2-canary.35`+ of next
|
||||
releaseDate: this.state.date,
|
||||
// Multiple Open Graph tags is only available in version `7.0.2-canary.35`+ of next
|
||||
},
|
||||
site_name: 'Talents Tube',
|
||||
}}
|
||||
/>
|
||||
<LayoutBackUrl text="Player" url={url} >
|
||||
<VideoVimeo classes={{ video: classes.video }} videoId={videoId} options="" autoplay='1' />
|
||||
</LayoutBackUrl>
|
||||
</RootContainer>
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
Player.getInitialProps = function (context) {
|
||||
|
||||
let { id, videoId,type } = context.query;
|
||||
let { id, url,videoId,typeEntite, nameCompany, nameOffre } = context.query;
|
||||
let {res} = context;
|
||||
return {};
|
||||
return {id:id, url:url, videoId:videoId, typeEntite:typeEntite, nameCompany:nameCompany, nameOffre:nameOffre};
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -337,18 +337,14 @@ class Reponse extends React.Component {
|
||||
classes.rootStepperActive
|
||||
)
|
||||
return (
|
||||
<LayoutBack text="Candidature">
|
||||
<LayoutBack text="Candidature" step={this.state.activeStep} openStudio={this.state.openStudio}>
|
||||
<Head>
|
||||
<title>Candidature vidéo</title>
|
||||
<meta name="description" content="Talent's tube, postulez en video." />
|
||||
<meta name="description" content="Talents tube, postulez en video." />
|
||||
<meta key="robots" name="robots" content="noindex, nofollow"></meta>
|
||||
|
||||
</Head>
|
||||
{/* https://codesandbox.io/s/ii0us */}
|
||||
{ loading ?
|
||||
<LoaderVideo /> :
|
||||
<Fragment>
|
||||
|
||||
<section className={classes.headerContainer}>
|
||||
{ !!offre.company && (
|
||||
|
||||
@@ -384,6 +380,12 @@ class Reponse extends React.Component {
|
||||
}
|
||||
|
||||
</section>
|
||||
{ loading ?
|
||||
<LoaderVideo textePrincipal="Votre candidature vidéo est en cours d’envoi..." texteSecondaire="Veuillez rester sur la page pendant le chargement qui peut durer plusieurs minutes."/>
|
||||
:
|
||||
<Fragment>
|
||||
|
||||
|
||||
<section className={classes.headerContainer}>
|
||||
<Stepper activeStep={activeStep} classes={{ root: rootStepper }} className={classes.rootStepperContainer} alternativeLabel>
|
||||
{steps.map((label, index) => {
|
||||
|
||||
@@ -25,7 +25,7 @@ const styles = theme => ({
|
||||
},
|
||||
},
|
||||
title: {
|
||||
fontFamily: 'Dosis',
|
||||
fontFamily: '"Roboto", "Helvetica", "Arial", "sans-serif"',
|
||||
fontSize: '1.5em',
|
||||
fontWeight: '600',
|
||||
padding: theme.spacing(3, 0),
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import React from 'react';
|
||||
import PropTypes from 'prop-types';
|
||||
// import PropTypes from 'prop-types';
|
||||
import Document, { Head, Main, NextScript } from 'next/document';
|
||||
import { ServerStyleSheets } from '@material-ui/styles';
|
||||
import flush from 'styled-jsx/server';
|
||||
@@ -31,11 +31,10 @@ class MyDocument extends Document {
|
||||
/>
|
||||
{/* PWA primary color */}
|
||||
<meta name="theme-color" content={theme.palette.primary.main} />
|
||||
|
||||
<link href="https://fonts.googleapis.com/css?family=Dosis:600|Roboto:200,300,400,500,700,900&display=swap" rel="stylesheet">
|
||||
<link rel="preload" href="/statique/css/fonts.css" rel="stylesheet">
|
||||
</link>
|
||||
<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyDYV8IJGtIoWLfXJQQvIuDQ88n2aEuRgpg&libraries=places"></script>
|
||||
<script type="text/javascript" src="/static/js/pwaInstaller.js" ></script>
|
||||
<script async src="https://maps.googleapis.com/maps/api/js?key=AIzaSyDYV8IJGtIoWLfXJQQvIuDQ88n2aEuRgpg&libraries=places"></script>
|
||||
<script async type="text/javascript" src="/static/js/pwaInstaller.js" ></script>
|
||||
{/* Global Site Tag (gtag.js) - Google Analytics */}
|
||||
{/* <script
|
||||
async
|
||||
@@ -52,7 +51,7 @@ class MyDocument extends Document {
|
||||
}}
|
||||
/> */}
|
||||
|
||||
<script
|
||||
<script defer
|
||||
dangerouslySetInnerHTML={{
|
||||
__html: `
|
||||
(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
|
||||
|
||||
+26
-1
@@ -19,6 +19,7 @@ import NoResult from './../components/atoms/NoResult';
|
||||
import dynamic from 'next/dynamic'
|
||||
import OgHead from '../components/atoms/OgHead';
|
||||
import getConfig from 'next/config'
|
||||
import { BreadcrumbJsonLd } from 'next-seo';
|
||||
|
||||
// const VideoSlider = dynamic(() => import('../components/organisms/ShortVideoHooker'), {
|
||||
// ssr: false
|
||||
@@ -122,7 +123,7 @@ const styles = theme => ({
|
||||
color: theme.palette.secondary.text,
|
||||
},
|
||||
title: {
|
||||
fontFamily: 'Dosis',
|
||||
fontFamily: '"Roboto", "Helvetica", "Arial", "sans-serif"',
|
||||
fontSize: '1.5em',
|
||||
fontWeight: '600',
|
||||
textAlign: 'center',
|
||||
@@ -172,6 +173,30 @@ class Index extends React.Component {
|
||||
seo_key="Recrutement, video"
|
||||
|
||||
></OgHead>
|
||||
<BreadcrumbJsonLd
|
||||
itemListElements={[
|
||||
{
|
||||
position: 1,
|
||||
name: 'Offres',
|
||||
item: 'https://www.talentstube.com/Offres',
|
||||
},
|
||||
{
|
||||
position: 2,
|
||||
name: 'Entreprises',
|
||||
item: 'https://www.talentstube.com/Offres',
|
||||
},
|
||||
{
|
||||
position: 3,
|
||||
name: 'Espace recruteur',
|
||||
item: 'https://recruteur.talentstube.com/',
|
||||
},
|
||||
{
|
||||
position: 4,
|
||||
name: "Blog sur l'emploi",
|
||||
item: 'https://blog.talentstube.com/',
|
||||
},
|
||||
]}
|
||||
/>
|
||||
<div className={classes.container}>
|
||||
|
||||
{/* <VideoSlider /> */}
|
||||
|
||||
@@ -0,0 +1,679 @@
|
||||
import React from 'react';
|
||||
import AppBar from '@material-ui/core/AppBar';
|
||||
import Button from '@material-ui/core/Button';
|
||||
import CameraIcon from '@material-ui/icons/PhotoCamera';
|
||||
import Card from '@material-ui/core/Card';
|
||||
import CardActions from '@material-ui/core/CardActions';
|
||||
import CardContent from '@material-ui/core/CardContent';
|
||||
import CardMedia from '@material-ui/core/CardMedia';
|
||||
import CssBaseline from '@material-ui/core/CssBaseline';
|
||||
import Grid from '@material-ui/core/Grid';
|
||||
import Toolbar from '@material-ui/core/Toolbar';
|
||||
import Typography from '@material-ui/core/Typography';
|
||||
import {makeStyles} from '@material-ui/core/styles';
|
||||
import Container from '@material-ui/core/Container';
|
||||
import Link from '@material-ui/core/Link';
|
||||
import VideoVimeo from '../components/atoms/VideoVimeo'
|
||||
import 'video-react/dist/video-react.css';
|
||||
import {Player} from 'video-react';
|
||||
import Hidden from '@material-ui/core/Hidden';
|
||||
import dynamic from 'next/dynamic'
|
||||
import OgHead from '../components/atoms/OgHead';
|
||||
import getConfig from 'next/config'
|
||||
|
||||
const Footer = dynamic(() => import ('../components/organisms/Footer'), {ssr: false});
|
||||
|
||||
function Copyright() {
|
||||
return (
|
||||
<Typography variant="body2" color="textSecondary" align="center">
|
||||
{'Copyright © '}
|
||||
<Link color="inherit" href="https://material-ui.com/">
|
||||
Your Website
|
||||
</Link>{' '} {new Date().getFullYear()}
|
||||
{'.'}
|
||||
</Typography>
|
||||
);
|
||||
}
|
||||
|
||||
const useStyles = makeStyles((theme) => ({
|
||||
icon: {
|
||||
marginRight: theme.spacing(2)
|
||||
},
|
||||
actionBtn: {
|
||||
marginBottom: "0.75em",
|
||||
display: "block"
|
||||
},
|
||||
bttn: {
|
||||
color: "#fff",
|
||||
background: "#FF6A6C",
|
||||
border: "2px solid #FF6A6C",
|
||||
padding: "15px"
|
||||
},
|
||||
heroSection: {
|
||||
// background:
|
||||
// "url('https://blog.talentstube.com/wp-content/uploads/2021/02/realisation-off
|
||||
// r e-emploi-video-smartphone-modele.jpg') center center no-repeat scroll",
|
||||
// backgroundSize: "cover",
|
||||
padding: "5em 0 9em",
|
||||
position: "relative",
|
||||
color: "#fff",
|
||||
[
|
||||
theme
|
||||
.breakpoints
|
||||
.down('md')
|
||||
]: {
|
||||
background: "url('https://blog.talentstube.com/wp-content/uploads/2021/02/realisation-offre-e" +
|
||||
"mploi-video-smartphone-modele.jpg') center center no-repeat scroll",
|
||||
backgroundSize: "cover",
|
||||
height: "100%",
|
||||
padding: "0"
|
||||
}
|
||||
},
|
||||
|
||||
mieuxQueTexteSection: {
|
||||
paddingTop: "25em",
|
||||
[
|
||||
theme
|
||||
.breakpoints
|
||||
.down('md')
|
||||
]: {
|
||||
paddingTop: "0"
|
||||
}
|
||||
},
|
||||
mieuxQueTexteTexte: {
|
||||
color: "#fff"
|
||||
},
|
||||
bloc1Section: {
|
||||
paddingLeft: "5em",
|
||||
paddingRight: "5em"
|
||||
},
|
||||
|
||||
heroSectionMobile: {
|
||||
background: "url('https://blog.talentstube.com/wp-content/uploads/2021/02/realisation-offre-e" +
|
||||
"mploi-video-smartphone-modele.jpg') no-repeat scroll",
|
||||
|
||||
height: "100%",
|
||||
padding: "5em 0 9em",
|
||||
position: "relative",
|
||||
color: "#fff"
|
||||
},
|
||||
container: {
|
||||
paddingRight: "15px",
|
||||
paddingLeft: "15px",
|
||||
marginRight: "auto",
|
||||
marginLeft: "auto"
|
||||
},
|
||||
containerMobile: {
|
||||
|
||||
},
|
||||
colMd12: {
|
||||
position: "relative",
|
||||
minHeight: "1px",
|
||||
paddingLeft: "15px",
|
||||
paddingRight: "15px",
|
||||
margin: "0em 0 1.5em 3em"
|
||||
},
|
||||
welcomeMessageLogo: {
|
||||
|
||||
textAlign: "left"
|
||||
},
|
||||
welcomeMessage: {
|
||||
|
||||
textAlign: "left"
|
||||
},
|
||||
welcomeMessageH1: {
|
||||
fontFamily: '"Roboto", "Helvetica", "Arial", "sans-serif"',
|
||||
fontSize: "50px",
|
||||
fontWeight: "700",
|
||||
lineHeight: "1.2em !important",
|
||||
color: "#fff",
|
||||
maxWidth: "600px"
|
||||
},
|
||||
welcomeMessageP: {
|
||||
fontFamily: '"Roboto", "Helvetica", "Arial", "sans-serif"',
|
||||
fontSize: "20px",
|
||||
marginBottom: "0",
|
||||
color: "#fff",
|
||||
fontWeight: "400",
|
||||
maxWidth: "600px"
|
||||
},
|
||||
videoBackground: {
|
||||
position: "absolute",
|
||||
right: "0",
|
||||
bottom: "0",
|
||||
top: "0",
|
||||
minWidth: "100%",
|
||||
minHeight: "50%",
|
||||
height: "50%",
|
||||
width: "auto",
|
||||
height: "auto",
|
||||
zIndex: "-100",
|
||||
// background: `url("/statique/images/recrutement-video.jpg")` ,
|
||||
|
||||
},
|
||||
overlay: {
|
||||
position: "absolute",
|
||||
width: "100%",
|
||||
minHeight: "100%",
|
||||
background: "rgba(0, 0, 0, 0.36)",
|
||||
top: "0"
|
||||
},
|
||||
overlayMobile: {
|
||||
|
||||
width: "100%",
|
||||
minHeight: "100%",
|
||||
|
||||
top: "0"
|
||||
},
|
||||
heroContent: {
|
||||
backgroundColor: "#1689FB",
|
||||
// backgroundImage:"/statique/images/recrutement-video.jpg",
|
||||
// background:"https://source.unsplash.com/random", backgroundImage:
|
||||
// `url("/statique/images/recrutement-video.jpg")` ,
|
||||
backgroundRepeat: 'no-repeat',
|
||||
backgroundPosition: "center",
|
||||
padding: theme.spacing(8, 0, 6)
|
||||
},
|
||||
bloc1: {
|
||||
backgroundColor: "#1E2327",
|
||||
// backgroundImage:"/statique/images/recrutement-video.jpg",
|
||||
// background:"https://source.unsplash.com/random", backgroundImage:
|
||||
// `url("/statique/images/recrutement-video.jpg")` ,
|
||||
color: "#FFFFFF",
|
||||
backgroundRepeat: 'no-repeat',
|
||||
backgroundPosition: "center",
|
||||
padding: theme.spacing(8, 0, 6),
|
||||
marginTop: "60px"
|
||||
},
|
||||
bloc2: {
|
||||
backgroundColor: "transparent",
|
||||
// backgroundImage:"/statique/images/recrutement-video.jpg",
|
||||
// background:"https://source.unsplash.com/random", backgroundImage:
|
||||
// `url("/statique/images/recrutement-video.jpg")` ,
|
||||
backgroundRepeat: 'no-repeat',
|
||||
backgroundPosition: "center",
|
||||
|
||||
marginTop: "0px"
|
||||
},
|
||||
footerDiv: {
|
||||
backgroundColor: "#1E2327",
|
||||
// backgroundImage:"/statique/images/recrutement-video.jpg",
|
||||
// background:"https://source.unsplash.com/random", backgroundImage:
|
||||
// `url("/statique/images/recrutement-video.jpg")` ,
|
||||
backgroundRepeat: 'no-repeat',
|
||||
backgroundPosition: "center",
|
||||
padding: theme.spacing(8, 0, 6)
|
||||
},
|
||||
bloc2Titre1: {
|
||||
textAlign: "left",
|
||||
font: "normal normal bold 2.625em/1.667em Roboto",
|
||||
letterSpacing: "2",
|
||||
color: "#1E2327",
|
||||
opacity: "1",
|
||||
lineHeight: "1em"
|
||||
},
|
||||
bloc2Titre2: {
|
||||
textAlign: "left",
|
||||
font: "normal normal bold 1.625em/1.769em Roboto",
|
||||
letterSpacing: "2",
|
||||
color: "#1E2327",
|
||||
opacity: "1",
|
||||
lineHeight: "2em"
|
||||
},
|
||||
bloc2Titre3: {
|
||||
textAlign: "left",
|
||||
font: "normal normal normal 1.25em/1.9em Roboto",
|
||||
letterSpacing: "2",
|
||||
color: "#1E2327",
|
||||
opacity: "1",
|
||||
lineHeight: "3em"
|
||||
},
|
||||
bloc2Paragraphe: {
|
||||
textAlign: "left",
|
||||
font: "normal normal normal 1em/2em Roboto",
|
||||
letterSpacing: "2",
|
||||
color: "#1E2327",
|
||||
opacity: "1",
|
||||
lineHeight: "2em",
|
||||
marginBottom: '62px'
|
||||
},
|
||||
heroButtons: {
|
||||
marginTop: theme.spacing(4)
|
||||
},
|
||||
recruteurButton: {
|
||||
|
||||
width: "182px",
|
||||
height: "49px",
|
||||
background: "#25D89A 0% 0% no-repeat padding-box",
|
||||
border: "2px solid #25D89A",
|
||||
borderRadius: "5px",
|
||||
opacity: "1",
|
||||
color: "#fff",
|
||||
fontWeight: "700",
|
||||
textTransform: "inherit"
|
||||
},
|
||||
talentButton: {
|
||||
|
||||
width: "182px",
|
||||
height: "49px",
|
||||
border: "2px solid #FFFFFF",
|
||||
color: "#FFFFFF",
|
||||
borderRadius: "5px",
|
||||
opacity: "1",
|
||||
textTransform: "inherit",
|
||||
background: "transparent",
|
||||
fontWeight: "700",
|
||||
'&:hover': {
|
||||
background: "#ffffff 0% 0% no-repeat padding-box",
|
||||
color: "#25D89A"
|
||||
}
|
||||
},
|
||||
cardGrid: {
|
||||
|
||||
paddingBottom: theme.spacing(8)
|
||||
},
|
||||
cardGauche: {
|
||||
|
||||
display: 'flex',
|
||||
flexDirection: 'column',
|
||||
background: "#E7F3FF 0% 0% no-repeat padding-box",
|
||||
boxShadow: "0px 0px 0px rgba(30, 35, 39, 0.15)",
|
||||
padding: "50px",
|
||||
'&:hover': {
|
||||
boxShadow: "0px 0px 0px rgba(30, 35, 39, 0.15)"
|
||||
}
|
||||
},
|
||||
cardDroite: {
|
||||
display: 'flex',
|
||||
flexDirection: 'column',
|
||||
background: "#F8FBFF 0% 0% no-repeat padding-box",
|
||||
boxShadow: "0px 0px 0px rgba(30, 35, 39, 0.15)",
|
||||
padding: "50px",
|
||||
'&:hover': {
|
||||
boxShadow: "0px 0px 0px rgba(30, 35, 39, 0.15)"
|
||||
}
|
||||
},
|
||||
bloc1Droite: {
|
||||
backgroundColor: "transparent",
|
||||
boxShadow: "0px 0px 0px rgba(30, 35, 39, 0.15)",
|
||||
'&:hover': {
|
||||
boxShadow: "0px 0px 0px rgba(30, 35, 39, 0.15)"
|
||||
}
|
||||
},
|
||||
bloc1DroiteH1: {
|
||||
textAlign: "left",
|
||||
font: "normal normal bold 2.625em/1.667em Roboto",
|
||||
letterSpacing: "2",
|
||||
color: "#ffffff",
|
||||
opacity: "1",
|
||||
lineHeight: "1.5em"
|
||||
},
|
||||
bloc1DroiteParagraphe: {
|
||||
textAlign: "left",
|
||||
font: "normal normal normal 1em/2em Roboto",
|
||||
letterSpacing: "2",
|
||||
color: "#ffffff",
|
||||
opacity: "1",
|
||||
lineHeight: "2em",
|
||||
marginBottom: '62px'
|
||||
},
|
||||
bloc1Gauche: {
|
||||
backgroundColor: "transparent"
|
||||
},
|
||||
cardMedia: {
|
||||
paddingTop: '500px', // 16:9
|
||||
},
|
||||
cardContent: {
|
||||
flexGrow: 1
|
||||
},
|
||||
footer: {
|
||||
backgroundColor: theme.palette.background.paper,
|
||||
padding: theme.spacing(6)
|
||||
}
|
||||
}));
|
||||
const {publicRuntimeConfig} = getConfig();
|
||||
const cards = [1, 2];
|
||||
|
||||
export default function Index() {
|
||||
const classes = useStyles();
|
||||
const DefaultUrl = publicRuntimeConfig.symphonyUrl + "/img/default_picture_svg"
|
||||
const imgUrl = DefaultUrl
|
||||
return (
|
||||
<React.Fragment>
|
||||
<OgHead
|
||||
seo_title="Espace candidat - Plateforme de recrutement en vidéo | Talents Tube"
|
||||
seo_description="Talents Tube est la première plateforme réservée aux offres d'emploi vidéo, vidéo marque employeur et aux CV vidéos. Découvrez une nouvelle méthode de recrutement."
|
||||
seo_url="www.talentstube.com"
|
||||
image={imgUrl}
|
||||
seo_key="Recrutement, video"></OgHead>
|
||||
|
||||
<main>
|
||||
{/* Hero unit */}
|
||||
|
||||
<header >
|
||||
|
||||
<Hidden smDown>
|
||||
<div className={classes.heroSection}></div>
|
||||
<video autoPlay loop muted className={classes.videoBackground}>
|
||||
<source
|
||||
src={"/statique/video/modele-offre-emploi-originale.mp4"}
|
||||
type='video/mp4'/>
|
||||
|
||||
</video>
|
||||
|
||||
<div className={classes.container}>
|
||||
|
||||
<div className={classes.colMd12}>
|
||||
<div className={classes.welcomeMessageLogo}>
|
||||
<img src="/statique/images/talents-tube-logo.svg"/>
|
||||
</div>
|
||||
<div className={classes.welcomeMessage}>
|
||||
<h1 className={classes.welcomeMessageH1}>Adoptez le recrutement vidéo</h1>
|
||||
<p className={classes.welcomeMessageP}>Talents Tube favorise la mise en relation
|
||||
de candidats et d’entreprises et tout ça en vidéo !</p>
|
||||
</div>
|
||||
<div className={classes.heroButtons}></div>
|
||||
<div className={classes.actionBtn}>
|
||||
<Grid container spacing={2} justify="left">
|
||||
<Grid item>
|
||||
<Button variant="contained" className={classes.recruteurButton}>
|
||||
Je suis recruteur
|
||||
</Button>
|
||||
</Grid>
|
||||
<Grid item>
|
||||
<Button variant="contained" className={classes.talentButton}>
|
||||
Je suis talent
|
||||
</Button>
|
||||
</Grid>
|
||||
</Grid>
|
||||
{/* <button
|
||||
className={classes.recruteurButton}
|
||||
data-toggle="modal"
|
||||
data-target="#exampleModal">JE SUIS RECRUTEUR</button>
|
||||
<button
|
||||
className={classes.talentButton}
|
||||
data-toggle="modal"
|
||||
data-target=".bd-example-modal-lg">JE SUIS TALENT</button> */}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</Hidden>
|
||||
<Hidden mdUp>
|
||||
<div className={classes.heroSectionMobile}>
|
||||
<div className={classes.overlayMobile}>
|
||||
<div className={classes.containerMobile}>
|
||||
|
||||
<div className={classes.colMd12}>
|
||||
<div className={classes.welcomeMessageLogo}>
|
||||
<img src="/statique/images/talents-tube-logo.svg"/>
|
||||
</div>
|
||||
<div className={classes.welcomeMessage}>
|
||||
<h1 className={classes.welcomeMessageH1}>Adoptez le recrutement vidéo</h1>
|
||||
<p className={classes.welcomeMessageP}>Talents Tube favorise la mise en relation
|
||||
de candidats et d’entreprises et tout ça en vidéo !</p>
|
||||
</div>
|
||||
<div className={classes.heroButtons}></div>
|
||||
<div className={classes.actionBtn}>
|
||||
<Grid container spacing={2} justify="left">
|
||||
<Grid item>
|
||||
<Button variant="contained" className={classes.recruteurButton}>
|
||||
Je suis recruteur
|
||||
</Button>
|
||||
</Grid>
|
||||
<Grid item>
|
||||
<Button variant="contained" className={classes.talentButton}>
|
||||
Je suis talent
|
||||
</Button>
|
||||
</Grid>
|
||||
</Grid>
|
||||
{/* <button
|
||||
className={classes.recruteurButton}
|
||||
data-toggle="modal"
|
||||
data-target="#exampleModal">JE SUIS RECRUTEUR</button>
|
||||
<button
|
||||
className={classes.talentButton}
|
||||
data-toggle="modal"
|
||||
data-target=".bd-example-modal-lg">JE SUIS TALENT</button> */}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</Hidden>
|
||||
<section className={classes.mieuxQueTexteSection}>
|
||||
<div className={classes.heroContent}>
|
||||
|
||||
<Container maxWidth="sm">
|
||||
<Typography variant="h5" align="center" className={classes.mieuxQueTexteTexte}>
|
||||
« Parce que vous méritez mieux que du texte ! »
|
||||
</Typography>
|
||||
|
||||
</Container>
|
||||
</div>
|
||||
</section>
|
||||
</header>
|
||||
|
||||
<section >
|
||||
<div >
|
||||
<Container className={classes.cardGrid} maxWidth="xl">
|
||||
{/* End hero unit */}
|
||||
<Grid container spacing={0}>
|
||||
|
||||
<Grid item key={1} xs={24} sm={12} md={6}>
|
||||
<Card className={classes.cardGauche}>
|
||||
|
||||
<CardContent >
|
||||
<Typography gutterBottom component="h2" className={classes.bloc2Titre1}>
|
||||
Je suis recruteur
|
||||
</Typography>
|
||||
<Typography gutterBottom component="h3" className={classes.bloc2Titre2}>
|
||||
Talent introuvable ? Métier en tension ?
|
||||
</Typography>
|
||||
<Typography className={classes.bloc2Titre3} component="h4">
|
||||
Rencontrez vos futurs collaborateurs autrement, en vidéo
|
||||
</Typography>
|
||||
<Typography className={classes.bloc2Paragraphe}>
|
||||
<b>Publiez une offre d’emploi vidéo :</b><br/>
|
||||
<ul>
|
||||
<li>Pas besoin d’une super vidéo, montrez simplement votre entreprise en donnant
|
||||
la parole à vos salariés</li>
|
||||
</ul>
|
||||
<b>Recevez des candidatures vidéo :</b><br/>
|
||||
<ul>
|
||||
<li>Au-delà des compétences, découvrez les vraies personnes derrière le CV
|
||||
</li>
|
||||
</ul>
|
||||
<ul>
|
||||
<li>
|
||||
Gagnez du temps dans votre présélection, rencontrez uniquement les candidats
|
||||
réellement impliqués</li>
|
||||
</ul>
|
||||
<b>Ne vous limitez plus à des mots, osez un recrutement plus qualitatif !</b><br/>
|
||||
</Typography>
|
||||
<Button variant="contained" className={classes.recruteurButton}>
|
||||
En savoir plus
|
||||
</Button>
|
||||
</CardContent>
|
||||
|
||||
</Card>
|
||||
</Grid>
|
||||
<Grid item key={2} xs={24} sm={12} md={6}>
|
||||
<Card className={classes.cardDroite}>
|
||||
|
||||
<CardContent className={classes.cardContent}>
|
||||
<Typography gutterBottom component="h2" className={classes.bloc2Titre1}>
|
||||
Je suis candidat
|
||||
</Typography>
|
||||
<Typography gutterBottom component="h3" className={classes.bloc2Titre2}>
|
||||
Marre des envois de CV sans réponse ?
|
||||
</Typography>
|
||||
<Typography className={classes.bloc2Titre3} component="h4">
|
||||
Rencontrez votre futur employeur autrement, en vidéo :
|
||||
</Typography>
|
||||
<Typography className={classes.bloc2Paragraphe}>
|
||||
<b>Consultez des offres d’emploi video :</b><br/>
|
||||
<ul>
|
||||
<li>L’offre est en vidéo pour mieux comprendre l’entreprise, le métier,
|
||||
l’équipe… Votre candidature est aussi en vidéo. Vous êtes à égalité !</li>
|
||||
</ul>
|
||||
<b>Déposez votre candidature en vidéo :</b><br/>
|
||||
<ul>
|
||||
<li>Tout le monde a du talent et votre personnalité est aujourd’hui votre
|
||||
meilleur atout
|
||||
</li>
|
||||
</ul>
|
||||
<ul>
|
||||
<li>Pas besoin d’une « belle » vidéo, soyez vrai et authentique</li>
|
||||
</ul>
|
||||
<b>Dévoilez gratuitement qui vous êtes, au-delà des mots !<br/></b><br/>
|
||||
</Typography>
|
||||
<Button variant="contained" className={classes.recruteurButton}>
|
||||
Je me lance
|
||||
</Button>
|
||||
</CardContent>
|
||||
|
||||
</Card>
|
||||
</Grid>
|
||||
</Grid>
|
||||
</Container>
|
||||
</div>
|
||||
<div className={classes.bloc1}>
|
||||
<Container className={classes.cardGrid} maxWidth="lg">
|
||||
{/* End hero unit */}
|
||||
<Grid container spacing={10}>
|
||||
|
||||
<Grid item key={2} xs={24} sm={12} md={6}>
|
||||
<Card className={classes.bloc1Droite}>
|
||||
|
||||
<CardContent className={classes.bloc1Droite}>
|
||||
<Typography
|
||||
gutterBottom
|
||||
component="h2"
|
||||
color="#fff"
|
||||
className={classes.bloc1DroiteH1}>
|
||||
Notre mission : Remettre l’humain au cœur des recrutements
|
||||
</Typography>
|
||||
<Typography className={classes.bloc1DroiteParagraphe}>
|
||||
Chez Talents Tube, nous pensons que la technologie ne doit pas remplacer
|
||||
l’humain mais être à son service. C’est pour cette raison que nous proposons un
|
||||
outil de recrutement vidéo alliant digital et humain, afin de redonner la parole
|
||||
aux candidats et aux entreprises. Talents Tube est aujourd’hui la SEULE
|
||||
plateforme de recrutement qui permet aux entreprises de publier des offres
|
||||
d’emploi en vidéo et de recevoir des candidatures en vidéo.
|
||||
</Typography>
|
||||
</CardContent>
|
||||
|
||||
</Card>
|
||||
</Grid>
|
||||
<Hidden smDown>
|
||||
<Grid item key={1} xs={24} sm={12} md={6}>
|
||||
<Card className={classes.bloc1Gauche}>
|
||||
|
||||
<CardMedia
|
||||
className={classes.cardMedia}
|
||||
image="/statique/images/accueil/candidature-en-video.png"></CardMedia>
|
||||
|
||||
</Card>
|
||||
</Grid>
|
||||
</Hidden>
|
||||
</Grid>
|
||||
</Container>
|
||||
</div>
|
||||
|
||||
<div className={classes.bloc3}>
|
||||
<Container className={classes.cardGrid} maxWidth="lg">
|
||||
{/* End hero unit */}
|
||||
<Grid container spacing={10}>
|
||||
<Hidden smDown>
|
||||
<Grid item key={1} xs={24} sm={12} md={6}>
|
||||
<Card className={classes.bloc1Gauche}>
|
||||
<CardMedia
|
||||
className={classes.cardMedia}
|
||||
image="/statique/images/accueil/equipe_talents_tube.jpg"></CardMedia>
|
||||
|
||||
</Card>
|
||||
</Grid>
|
||||
</Hidden>
|
||||
<Grid item key={2} xs={24} sm={12} md={6}>
|
||||
<Card className={classes.bloc1Droite}>
|
||||
|
||||
<CardContent className={classes.bloc1Droite}>
|
||||
<Typography
|
||||
gutterBottom
|
||||
variant="h5"
|
||||
component="h1"
|
||||
color="#fff"
|
||||
className={classes.bloc2Titre1}>
|
||||
Pourquoi nous ?
|
||||
</Typography>
|
||||
<Typography className={classes.bloc2Titre2}>
|
||||
Parce que nous sommes les SEULS à savoir le faire !
|
||||
</Typography>
|
||||
<Typography className={classes.bloc2Paragraphe}>
|
||||
Notre équipe est composée d’experts métier qui sauront vous accompagner dans
|
||||
toutes vos demandes que vous soyez candidat ou recruteur. En recherche
|
||||
d’évolution constante, nous avons à cœur de créer une relation de proximité afin
|
||||
d’adapter NOTRE solution à VOS besoins et ainsi créer une expérience utilisateur
|
||||
inoubliable. Composée d’experts de la fonction RH & Recrutement, nous sommes
|
||||
passionnés par ce que nous faisons. Notre SEUL objectif : favoriser la rencontre
|
||||
d’entreprises formidables et de candidats uniques pour une performance commune.
|
||||
</Typography>
|
||||
</CardContent>
|
||||
|
||||
</Card>
|
||||
</Grid>
|
||||
</Grid>
|
||||
</Container>
|
||||
</div>
|
||||
|
||||
<div className={classes.bloc4}>
|
||||
<Container className={classes.cardGrid} maxWidth="lg">
|
||||
{/* End hero unit */}
|
||||
<Grid container spacing={10}>
|
||||
|
||||
<Grid item key={2} xs={24} sm={12} md={6}>
|
||||
<Card className={classes.bloc1Droite}>
|
||||
|
||||
<CardContent className={classes.bloc1Droite}>
|
||||
<Typography
|
||||
gutterBottom
|
||||
variant="h5"
|
||||
component="h1"
|
||||
color="#fff"
|
||||
className={classes.bloc2Titre1}>
|
||||
Ils recrutent déjà avec Talents Tube!
|
||||
</Typography>
|
||||
|
||||
</CardContent>
|
||||
|
||||
</Card>
|
||||
</Grid>
|
||||
<Grid item key={1} xs={24} sm={12} md={6}>
|
||||
<Card className={classes.bloc1Gauche}>
|
||||
|
||||
<iframe
|
||||
width="560"
|
||||
height="315"
|
||||
src="https://www.youtube.com/embed/sKh0u7Mbdps"
|
||||
frameborder="0"
|
||||
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
|
||||
allowfullscreen></iframe>
|
||||
|
||||
</Card>
|
||||
</Grid>
|
||||
</Grid>
|
||||
</Container>
|
||||
</div>
|
||||
{/* <div className={classes.footerDiv}>
|
||||
|
||||
<Container maxWidth="sm"></Container>
|
||||
</div> */}
|
||||
<Footer/>
|
||||
</section>
|
||||
|
||||
</main>
|
||||
|
||||
</React.Fragment>
|
||||
);
|
||||
}
|
||||
+76
-9
@@ -120,7 +120,7 @@ const styles = theme => ({
|
||||
color: theme.palette.secondary.text,
|
||||
},
|
||||
title: {
|
||||
fontFamily: 'Dosis',
|
||||
fontFamily: '"Roboto", "Helvetica", "Arial", "sans-serif"',
|
||||
fontSize: '1.5em',
|
||||
fontWeight: '600',
|
||||
textAlign: 'center',
|
||||
@@ -148,6 +148,8 @@ class Index extends React.Component {
|
||||
suggestions: [],
|
||||
valueMetier: '',
|
||||
suggestionsMetier: [],
|
||||
valueMetierCompetence: '',
|
||||
suggestionsMetierCompetence: [],
|
||||
};
|
||||
}
|
||||
|
||||
@@ -266,10 +268,63 @@ class Index extends React.Component {
|
||||
};
|
||||
|
||||
|
||||
// METIER COMPETENCE
|
||||
// Filter logic
|
||||
getSuggestionsMetierCompetence = async (valueMetierCompetence) => {
|
||||
const inputValue = valueMetierCompetence.trim().toLowerCase();
|
||||
let response = await fetch(publicRuntimeConfig.symphonyUrl+"api/getDetailAppelation?q=" + inputValue );
|
||||
// let response = await fetch("http://www.omdbapi.com/?s=" + inputValue + "&apikey=a591bb53");
|
||||
let data = await response.json()
|
||||
return data.competencesDeBase;
|
||||
};
|
||||
|
||||
// Trigger suggestions
|
||||
getSuggestionMetierCompetenceValue = suggestion => suggestion.libelle;
|
||||
// Render Each Option
|
||||
renderSuggestionMetierCompetence = suggestion => (
|
||||
<span className="sugg-option">
|
||||
|
||||
<span className="name">
|
||||
{suggestion.libelle} ({suggestion.code})
|
||||
</span>
|
||||
</span>
|
||||
);
|
||||
|
||||
// OnChange event handler
|
||||
onChangeMetierCompetence = (event, { newValue }) => {
|
||||
this.setState({
|
||||
valueMetierCompetence: newValue
|
||||
});
|
||||
};
|
||||
|
||||
// Suggestion rerender when user types
|
||||
onSuggestionsMetierCompetenceFetchRequested = ({ value }) => {
|
||||
this.getSuggestionsMetierCompetence(value)
|
||||
.then(data => {
|
||||
if (data.Error) {
|
||||
this.setState({
|
||||
suggestionsMetierCompetence: []
|
||||
});
|
||||
} else {
|
||||
this.setState({
|
||||
suggestionsMetierCompetence: data
|
||||
});
|
||||
}
|
||||
})
|
||||
};
|
||||
|
||||
// Triggered on clear
|
||||
onSuggestionsMetierCompetenceClearRequested = () => {
|
||||
this.setState({
|
||||
suggestionsMetierCompetence: []
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
|
||||
render() {
|
||||
const { classes } = this.props;
|
||||
const { value, suggestions, valueMetier, suggestionsMetier } = this.state;
|
||||
const { value, suggestions, valueMetier, suggestionsMetier, valueMetierCompetence, suggestionsMetierCompetence } = this.state;
|
||||
// Option props
|
||||
const inputProps = {
|
||||
placeholder: 'Saisir une compétence',
|
||||
@@ -282,19 +337,22 @@ class Index extends React.Component {
|
||||
value:valueMetier,
|
||||
onChange: this.onChangeMetier
|
||||
};
|
||||
|
||||
const inputPropsMetierCompetence = {
|
||||
placeholder: 'Saisir un id appellation',
|
||||
value:valueMetierCompetence,
|
||||
onChange: this.onChangeMetierCompetence
|
||||
};
|
||||
const socialShareUrl = typeof window !== 'undefined' ? window.location
|
||||
: publicRuntimeConfig.frontServerUrl ;
|
||||
const DefaultUrl = publicRuntimeConfig.symphonyUrl + "/img/default_picture_svg"
|
||||
const imgUrl = DefaultUrl
|
||||
return (
|
||||
<Layout>
|
||||
<OgHead seo_title="Talents Tube - Plateforme de recrutement en vidéo"
|
||||
seo_description="Talents Tube est la première plateforme réservée aux offres d'emploi vidéo, vidéo marque employeur et aux CV vidéos. Découvrez une nouvelle méthode de recrutement."
|
||||
seo_url={socialShareUrl}
|
||||
image={imgUrl}
|
||||
seo_key="Recrutement, video"
|
||||
|
||||
></OgHead>
|
||||
<Head>
|
||||
<title key="title">Recrutement vidéo : fonctionnement – Talents Tube</title>
|
||||
<meta key="robots" name="robots" content="noindex, nofollow"></meta>
|
||||
</Head>
|
||||
<div className={classes.container}>
|
||||
|
||||
{/* <VideoSlider /> */}
|
||||
@@ -319,6 +377,15 @@ class Index extends React.Component {
|
||||
renderSuggestion={this.renderSuggestionMetier}
|
||||
inputProps={inputPropsMetier}
|
||||
/>
|
||||
|
||||
<Autosuggest
|
||||
suggestions={suggestionsMetierCompetence}
|
||||
onSuggestionsFetchRequested={this.onSuggestionsMetierCompetenceFetchRequested}
|
||||
onSuggestionsClearRequested={this.onSuggestionsMetierCompetenceClearRequested}
|
||||
getSuggestionValue={this.getSuggestionMetierCompetenceValue}
|
||||
renderSuggestion={this.renderSuggestionMetierCompetence}
|
||||
inputProps={inputPropsMetierCompetence}
|
||||
/>
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,354 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Offre/133-gestionnaire-de-copropriete-f-h</loc>
|
||||
<lastmod>2021-01-29</lastmod>
|
||||
<priority>1.00</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprises</loc>
|
||||
<lastmod>2021-01-29</lastmod>
|
||||
<priority>1.00</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Offres</loc>
|
||||
<lastmod>2021-01-29</lastmod>
|
||||
<priority>1.00</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Offre/134-assistant-administratif-et-commercial-f-h</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>1.00</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Offre/135-commercial-b-to-c-f-h</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>1.00</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Offre/130-assistant-f-h</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>1.00</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Offre/131-poseur-f-h</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>1.00</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Offre/132-comptable-f-h</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>1.00</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Offre/129-commerciaux-b-to-b-f-h</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>1.00</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Offre/128-techniciens-poseurs-f-h</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>1.00</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Offre/122-chauffeurs-spl-f-h</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.80</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Offre/115-technicien-ramoneur-fumiste-f-h</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.80</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Offre/109-equipier-de-plateforme-polyvalent-f-h</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.80</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Offre/111-couvreur-etancheur-f-h</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.80</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Offre/107-operateur-soudeur-chaudronnier-f-h</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.80</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Offre/103-agents-de-quai-f-h</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.80</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Offre/102-preparateurs-de-commandes-f-h</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.80</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Offre/46-conducteurs-routiers-h-f</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/32507-tpc-ouest</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>1.00</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/32355-hyphae</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/28481-onela</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/28172-pro-fermetures</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/26064-aer-recyclage</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/21247-lactalis-logistique-et-transports</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/19800-silvadec</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/19205-intermarche-logistique-alimentaire-international</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/18143-l-n-u-f-lisieux</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/17467-l-n-u-f-vallet</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/16785-nachos</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/16639-fast-point</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/16247-sasp</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/16015-la-veggisserie</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/16007-bforpu-b</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/15797-sinay</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/15559-monibrand</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/13464-jpa</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/12531-grand-ouest-etiquettes</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/12480-fym-action</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/11592-youston</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/11413-les-vergers-de-chateaubourg</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/11345-telemaque</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/9138-vital-concept</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/8639-mma-questembert</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>1.00</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/7593-opticultures</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/7174-atlantem</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/7004-la-table-de-la-desirade</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/6898-le-ptit-club</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/6555-mazars</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/6363-square-habitat</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/5250-linpac-packaging-pontivy-groupe-klockner-pentaplast</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/4211-progressis-ge</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/4097-a-2-com</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/4088-venetis</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/4059-eiffage-construction-grand-ouest</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/3381-mairie-saint-hilaire-de-riez</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/2958-skiold-acemo</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/2527-groupe-mousset</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/2341-temporis</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/1899-faurecia</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/1691-groupe-syselec</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/1467-groupe-rocher-operations</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/1297-albea</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/438-bouyer-leroux</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/266-mgdis</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/157-medaviz</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/95-multiplast</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/52-talents-tube</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/46-actual</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/18-coriolis-composites</loc>
|
||||
<lastmod>2021-01-23</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.talentstube.com/Entreprise/17-thibault-bergeron</loc>
|
||||
<lastmod>2021-01-24</lastmod>
|
||||
<priority>0.70</priority>
|
||||
</url>
|
||||
</urlset>
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 18 KiB |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+10
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,36 @@
|
||||
/* latin-ext */
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
font-display: swap;
|
||||
src: url(KFOlCnqEu92Fr1MmSU5fChc4EsA.woff2) format('woff2');
|
||||
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||||
}
|
||||
/* latin */
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
font-display: swap;
|
||||
src: url(KFOlCnqEu92Fr1MmSU5fBBc4.woff2) format('woff2');
|
||||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||||
}
|
||||
/* latin-ext */
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
font-display: swap;
|
||||
src: url(KFOmCnqEu92Fr1Mu7GxKOzY.woff2) format('woff2');
|
||||
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||||
}
|
||||
/* latin */
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
font-display: swap;
|
||||
src: url(KFOmCnqEu92Fr1Mu4mxK.woff2) format('woff2');
|
||||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,153 @@
|
||||
/*
|
||||
* Core Owl Carousel CSS File
|
||||
* v1.3.3
|
||||
*/
|
||||
|
||||
/* clearfix */
|
||||
.owl-carousel .owl-wrapper:after {
|
||||
content: ".";
|
||||
display: block;
|
||||
clear: both;
|
||||
visibility: hidden;
|
||||
line-height: 0;
|
||||
height: 0;
|
||||
}
|
||||
/* display none until init */
|
||||
.owl-carousel{
|
||||
display: none;
|
||||
position: relative;
|
||||
width: 100%;
|
||||
-ms-touch-action: pan-y;
|
||||
}
|
||||
.owl-carousel .owl-wrapper{
|
||||
display: none;
|
||||
position: relative;
|
||||
-webkit-transform: translate3d(0px, 0px, 0px);
|
||||
}
|
||||
.owl-carousel .owl-wrapper-outer{
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
width: 100%;
|
||||
}
|
||||
.owl-carousel .owl-wrapper-outer.autoHeight{
|
||||
-webkit-transition: height 500ms ease-in-out;
|
||||
-moz-transition: height 500ms ease-in-out;
|
||||
-ms-transition: height 500ms ease-in-out;
|
||||
-o-transition: height 500ms ease-in-out;
|
||||
transition: height 500ms ease-in-out;
|
||||
}
|
||||
|
||||
.owl-carousel .owl-item{
|
||||
float: left;
|
||||
}
|
||||
.owl-controls .owl-page,
|
||||
.owl-controls .owl-buttons div{
|
||||
cursor: pointer;
|
||||
}
|
||||
.owl-controls {
|
||||
-webkit-user-select: none;
|
||||
-khtml-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
|
||||
}
|
||||
|
||||
/* mouse grab icon */
|
||||
.grabbing {
|
||||
cursor:url(../img/grabbing.png) 8 8, move;
|
||||
}
|
||||
|
||||
/* fix */
|
||||
.owl-carousel .owl-wrapper,
|
||||
.owl-carousel .owl-item{
|
||||
-webkit-backface-visibility: hidden;
|
||||
-moz-backface-visibility: hidden;
|
||||
-ms-backface-visibility: hidden;
|
||||
-webkit-transform: translate3d(0,0,0);
|
||||
-moz-transform: translate3d(0,0,0);
|
||||
-ms-transform: translate3d(0,0,0);
|
||||
}
|
||||
|
||||
/*
|
||||
* Owl Carousel Owl Demo Theme
|
||||
* v1.3.3
|
||||
*/
|
||||
|
||||
.owl-theme .owl-controls{
|
||||
margin-top: 10px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
/* Styling Next and Prev buttons */
|
||||
|
||||
.owl-theme .owl-controls .owl-buttons div{
|
||||
color: #FFF;
|
||||
display: inline-block;
|
||||
zoom: 1;
|
||||
*display: inline;/*IE7 life-saver */
|
||||
margin: 5px;
|
||||
padding: 3px 10px;
|
||||
font-size: 12px;
|
||||
-webkit-border-radius: 30px;
|
||||
-moz-border-radius: 30px;
|
||||
border-radius: 30px;
|
||||
background: #869791;
|
||||
filter: Alpha(Opacity=50);/*IE7 fix*/
|
||||
opacity: 0.5;
|
||||
}
|
||||
/* Clickable class fix problem with hover on touch devices */
|
||||
/* Use it for non-touch hover action */
|
||||
.owl-theme .owl-controls.clickable .owl-buttons div:hover{
|
||||
filter: Alpha(Opacity=100);/*IE7 fix*/
|
||||
opacity: 1;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
/* Styling Pagination*/
|
||||
|
||||
.owl-theme .owl-controls .owl-page{
|
||||
display: inline-block;
|
||||
zoom: 1;
|
||||
*display: inline;/*IE7 life-saver */
|
||||
}
|
||||
.owl-theme .owl-controls .owl-page span{
|
||||
display: block;
|
||||
width: 12px;
|
||||
height: 12px;
|
||||
margin: 5px 7px;
|
||||
filter: Alpha(Opacity=50);/*IE7 fix*/
|
||||
opacity: 0.5;
|
||||
-webkit-border-radius: 20px;
|
||||
-moz-border-radius: 20px;
|
||||
border-radius: 20px;
|
||||
background: #FF5A5F;
|
||||
}
|
||||
|
||||
.owl-theme .owl-controls .owl-page.active span,
|
||||
.owl-theme .owl-controls.clickable .owl-page:hover span{
|
||||
filter: Alpha(Opacity=100);/*IE7 fix*/
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
/* If PaginationNumbers is true */
|
||||
|
||||
.owl-theme .owl-controls .owl-page span.owl-numbers{
|
||||
height: auto;
|
||||
width: auto;
|
||||
color: #FFF;
|
||||
padding: 2px 10px;
|
||||
font-size: 12px;
|
||||
-webkit-border-radius: 30px;
|
||||
-moz-border-radius: 30px;
|
||||
border-radius: 30px;
|
||||
}
|
||||
|
||||
.screenshot-slider .item{
|
||||
margin: 3px;
|
||||
}
|
||||
.screenshot-slider .item img{
|
||||
display: block;
|
||||
width: 100%;
|
||||
height: auto;
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
<svg id="Import" xmlns="http://www.w3.org/2000/svg" width="73.762" height="56.425" viewBox="0 0 73.762 56.425">
|
||||
<g id="Groupe_7895" data-name="Groupe 7895" transform="translate(9.499)">
|
||||
<rect id="Rectangle_316" data-name="Rectangle 316" width="42.463" height="23.869" transform="translate(0 3.769) rotate(-5.093)"/>
|
||||
<rect id="Rectangle_317" data-name="Rectangle 317" width="2.656" height="2.656" transform="translate(1.401 6.158) rotate(-5.093)" fill="#fff"/>
|
||||
<rect id="Rectangle_318" data-name="Rectangle 318" width="2.656" height="2.656" transform="translate(1.866 11.472) rotate(-5.093)" fill="#fff"/>
|
||||
<rect id="Rectangle_319" data-name="Rectangle 319" width="2.656" height="2.656" transform="translate(2.327 16.747) rotate(-5.093)" fill="#fff"/>
|
||||
<rect id="Rectangle_320" data-name="Rectangle 320" width="2.656" height="2.656" transform="translate(2.826 22.019) rotate(-5.093)" fill="#fff"/>
|
||||
<rect id="Rectangle_321" data-name="Rectangle 321" width="2.656" height="2.656" transform="translate(38.67 2.848) rotate(-5.093)" fill="#fff"/>
|
||||
<rect id="Rectangle_322" data-name="Rectangle 322" width="2.656" height="2.656" transform="translate(39.131 8.123) rotate(-5.093)" fill="#fff"/>
|
||||
<rect id="Rectangle_323" data-name="Rectangle 323" width="2.656" height="2.656" transform="translate(39.633 13.433) rotate(-5.093)" fill="#fff"/>
|
||||
<rect id="Rectangle_324" data-name="Rectangle 324" width="2.656" height="2.656" transform="translate(40.094 18.708) rotate(-5.093)" fill="#fff"/>
|
||||
<path id="Tracé_278" data-name="Tracé 278" d="M229.4,202.9l6.275,3.311-5.582,4.35Z" transform="translate(-210.257 -192.71)" fill="#fff"/>
|
||||
</g>
|
||||
<path id="Tracé_279" data-name="Tracé 279" d="M217.367,282.859l-6.93,6.93-48.507-6.93L155,275.93l6.93-6.93h55.437Z" transform="translate(-155 -233.363)" fill="#d0e7fe"/>
|
||||
<path id="Tracé_280" data-name="Tracé 280" d="M173,269v6.93h48.507l6.93-6.93Z" transform="translate(-166.07 -233.363)" fill="#b8dbfe"/>
|
||||
<g id="Groupe_7897" data-name="Groupe 7897" transform="translate(28.442 19.099)">
|
||||
<g id="Groupe_7896" data-name="Groupe 7896" transform="translate(3.551)">
|
||||
<path id="Tracé_281" data-name="Tracé 281" d="M239.065,257.45a.488.488,0,0,1-.231-.039.939.939,0,0,1-.693-1.155,50.925,50.925,0,0,0,1.463-12.088,51.857,51.857,0,0,0-.346-6.006.969.969,0,0,1,1.925-.231,55.915,55.915,0,0,1,.346,6.237,52.807,52.807,0,0,1-1.5,12.55A.952.952,0,0,1,239.065,257.45Z" transform="translate(-238.104 -232.827)" fill="#25d89a"/>
|
||||
<path id="Tracé_282" data-name="Tracé 282" d="M240.5,229.337a1.021,1.021,0,0,1-.962-.808c-.077-.462-.154-.885-.27-1.347a.944.944,0,0,1,1.848-.385c.077.462.192.924.269,1.386a.969.969,0,0,1-.77,1.116A.141.141,0,0,1,240.5,229.337Z" transform="translate(-238.804 -226.042)" fill="#25d89a"/>
|
||||
</g>
|
||||
<path id="Tracé_283" data-name="Tracé 283" d="M233.084,279.525l-4.042-6.237a.972.972,0,1,1,1.617-1.078l3,4.62,4.62-3a.972.972,0,0,1,1.078,1.617Z" transform="translate(-228.879 -254.171)" fill="#25d89a"/>
|
||||
</g>
|
||||
<path id="Tracé_284" data-name="Tracé 284" d="M316.393,300.545h-9.008a.385.385,0,1,1,0-.77h8.7l5.505-5.659a.381.381,0,1,1,.539.539Z" transform="translate(-248.483 -248.739)" fill="#25d89a"/>
|
||||
<path id="Tracé_285" data-name="Tracé 285" d="M317.93,299.2h-6.545a.385.385,0,0,1,0-.77h6.237l4.2-4.312a.381.381,0,1,1,.539.539Z" transform="translate(-250.943 -248.739)" fill="#fa6362"/>
|
||||
<g id="Groupe_7899" data-name="Groupe 7899" transform="translate(30.144 40.641)">
|
||||
<g id="Groupe_7898" data-name="Groupe 7898" transform="translate(0 0)">
|
||||
<path id="Tracé_286" data-name="Tracé 286" d="M233.3,282l2.5,3.811,5.89-3.811h-3.542l-.654.423a1.636,1.636,0,0,0,.077-.423H233.3Z" transform="translate(-233.3 -282)" fill="#21b77e"/>
|
||||
</g>
|
||||
</g>
|
||||
<rect id="Rectangle_325" data-name="Rectangle 325" width="55.437" height="13.859" transform="translate(0 42.566)" fill="#fff"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.8 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 688 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 2.3 MiB |
Binary file not shown.
|
After Width: | Height: | Size: 156 KiB |
@@ -0,0 +1,31 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="207.525" height="43.208" viewBox="0 0 207.525 43.208">
|
||||
<g id="Logo" transform="translate(-63.142 -208.083)">
|
||||
<g id="Groupe_7907" data-name="Groupe 7907" transform="translate(63.142 217.603)" style="isolation: isolate">
|
||||
<g id="Groupe_7904" data-name="Groupe 7904" transform="translate(0 1.508)" style="isolation: isolate">
|
||||
<path id="Tracé_369" data-name="Tracé 369" d="M65.046,260.631v-7.353h-.529a1.375,1.375,0,0,1,0-2.751h.529v-2.38a1.6,1.6,0,0,1,3.2,0v2.38h2.513a1.376,1.376,0,1,1,0,2.751H68.247v6.85a1.524,1.524,0,0,0,1.719,1.746,7.557,7.557,0,0,0,.793-.079,1.349,1.349,0,0,1,1.349,1.323,1.377,1.377,0,0,1-.846,1.243,6.365,6.365,0,0,1-2.2.37C66.713,264.73,65.046,263.7,65.046,260.631Z" transform="translate(-63.142 -246.56)" fill="#fff"/>
|
||||
</g>
|
||||
<g id="Groupe_7905" data-name="Groupe 7905" transform="translate(11.73 5.29)" style="isolation: isolate">
|
||||
<path id="Tracé_370" data-name="Tracé 370" d="M104.07,269.887v-.053c0-3.015,2.354-4.5,5.766-4.5a11.663,11.663,0,0,1,3.756.582v-.344c0-1.983-1.217-3.041-3.465-3.041a8.3,8.3,0,0,0-3.095.555,1.792,1.792,0,0,1-.5.08,1.332,1.332,0,0,1-1.349-1.322,1.4,1.4,0,0,1,.873-1.27,11.967,11.967,0,0,1,4.5-.82,6.258,6.258,0,0,1,4.629,1.56,5.8,5.8,0,0,1,1.507,4.311V272.5a1.524,1.524,0,0,1-1.561,1.534,1.446,1.446,0,0,1-1.56-1.349v-.529a5.676,5.676,0,0,1-4.549,2.036C106.4,274.2,104.07,272.69,104.07,269.887Zm9.575-1.005v-.952a8.875,8.875,0,0,0-3.174-.555c-2.063,0-3.28.873-3.28,2.327v.053c0,1.349,1.19,2.116,2.724,2.116C112.031,271.87,113.645,270.654,113.645,268.882Z" transform="translate(-104.07 -259.757)" fill="#fff"/>
|
||||
</g>
|
||||
<g id="Groupe_7906" data-name="Groupe 7906" transform="translate(28.512)" style="isolation: isolate">
|
||||
<path id="Tracé_371" data-name="Tracé 371" d="M162.626,242.886a1.575,1.575,0,0,1,1.587-1.587,1.6,1.6,0,0,1,1.613,1.587v16.4a1.6,1.6,0,0,1-3.2,0Z" transform="translate(-162.626 -241.299)" fill="#fff"/>
|
||||
<path id="Tracé_372" data-name="Tracé 372" d="M192.864,273.96a6.968,6.968,0,0,1-7.168-7.247v-.053c0-3.994,2.83-7.273,6.824-7.273a6.606,6.606,0,0,1,6.638,6.877,1.5,1.5,0,0,1-1.507,1.534H188.9a3.9,3.9,0,0,0,4.02,3.544,5.019,5.019,0,0,0,3.306-1.217,1.192,1.192,0,0,1,.82-.291,1.259,1.259,0,0,1,1.269,1.3,1.4,1.4,0,0,1-.423.979A7.171,7.171,0,0,1,192.864,273.96Zm3.174-8.279c-.212-2.063-1.428-3.676-3.544-3.676-1.957,0-3.333,1.507-3.624,3.676Z" transform="translate(-179.084 -254.203)" fill="#fff"/>
|
||||
<path id="Tracé_373" data-name="Tracé 373" d="M244.11,261.133a1.581,1.581,0,0,1,1.587-1.613,1.6,1.6,0,0,1,1.614,1.613v.688a5.062,5.062,0,0,1,4.364-2.434c3.147,0,4.972,2.116,4.972,5.343v7.458a1.559,1.559,0,0,1-1.587,1.587,1.581,1.581,0,0,1-1.613-1.587v-6.48c0-2.169-1.084-3.412-2.989-3.412-1.851,0-3.147,1.3-3.147,3.465v6.427a1.6,1.6,0,0,1-3.2,0Z" transform="translate(-220.757 -254.203)" fill="#fff"/>
|
||||
<path id="Tracé_374" data-name="Tracé 374" d="M298.892,260.631v-7.353h-.529a1.375,1.375,0,0,1,0-2.751h.529v-2.38a1.6,1.6,0,0,1,3.2,0v2.38h2.513a1.376,1.376,0,1,1,0,2.751h-2.513v6.85a1.524,1.524,0,0,0,1.719,1.746,7.566,7.566,0,0,0,.794-.079,1.349,1.349,0,0,1,1.349,1.323,1.377,1.377,0,0,1-.846,1.243,6.362,6.362,0,0,1-2.2.37C300.558,264.73,298.892,263.7,298.892,260.631Z" transform="translate(-258.48 -245.052)" fill="#fff"/>
|
||||
<path id="Tracé_375" data-name="Tracé 375" d="M335.893,272.373a1.226,1.226,0,0,1-.608-1.111,1.281,1.281,0,0,1,1.3-1.3,1.4,1.4,0,0,1,.688.185,7.372,7.372,0,0,0,4.02,1.349c1.375,0,2.169-.582,2.169-1.508v-.053c0-1.084-1.481-1.454-3.121-1.957-2.063-.582-4.364-1.428-4.364-4.1v-.053c0-2.645,2.2-4.258,4.972-4.258a9.6,9.6,0,0,1,4.39,1.137,1.356,1.356,0,0,1,.767,1.217,1.287,1.287,0,0,1-1.322,1.3,1.256,1.256,0,0,1-.635-.159,7.615,7.615,0,0,0-3.28-.952c-1.243,0-1.957.582-1.957,1.375v.053c0,1.031,1.508,1.455,3.147,1.984,2.037.634,4.337,1.56,4.337,4.073v.053c0,2.936-2.274,4.39-5.184,4.39A9.544,9.544,0,0,1,335.893,272.373Z" transform="translate(-285.802 -254.335)" fill="#fff"/>
|
||||
<path id="Tracé_376" data-name="Tracé 376" d="M410.736,260.631v-7.353h-.529a1.375,1.375,0,1,1,0-2.751h.529v-2.38a1.6,1.6,0,0,1,3.2,0v2.38h2.513a1.376,1.376,0,1,1,0,2.751h-2.513v6.85a1.524,1.524,0,0,0,1.719,1.746,7.578,7.578,0,0,0,.794-.079,1.349,1.349,0,0,1,1.349,1.323,1.377,1.377,0,0,1-.846,1.243,6.364,6.364,0,0,1-2.2.37C412.4,264.73,410.736,263.7,410.736,260.631Z" transform="translate(-338.27 -245.052)" fill="#fff"/>
|
||||
<path id="Tracé_377" data-name="Tracé 377" d="M463.107,272.518a1.613,1.613,0,0,1-3.227,0V271.8a5.026,5.026,0,0,1-4.364,2.46c-3.147,0-4.972-2.116-4.972-5.369v-7.432a1.6,1.6,0,1,1,3.2,0v6.48c0,2.169,1.085,3.385,2.989,3.385,1.851,0,3.147-1.27,3.147-3.438v-6.427a1.6,1.6,0,0,1,1.613-1.613,1.62,1.62,0,0,1,1.613,1.613Z" transform="translate(-368.028 -254.533)" fill="#fff"/>
|
||||
<path id="Tracé_378" data-name="Tracé 378" d="M508.312,242.886A1.559,1.559,0,0,1,509.9,241.3a1.581,1.581,0,0,1,1.613,1.587V249.1a5.59,5.59,0,0,1,4.761-2.619c3.28,0,6.48,2.592,6.48,7.247v.053c0,4.628-3.174,7.247-6.48,7.247a5.7,5.7,0,0,1-4.761-2.46v.714a1.6,1.6,0,0,1-3.2,0Zm11.188,10.9v-.053c0-2.7-1.825-4.47-3.994-4.47a4.211,4.211,0,0,0-4.073,4.47v.053a4.211,4.211,0,0,0,4.073,4.47C517.7,258.253,519.5,256.534,519.5,253.783Z" transform="translate(-409.24 -241.299)" fill="#fff"/>
|
||||
<path id="Tracé_379" data-name="Tracé 379" d="M574.724,273.96a6.968,6.968,0,0,1-7.167-7.247v-.053c0-3.994,2.83-7.273,6.824-7.273a6.606,6.606,0,0,1,6.638,6.877,1.5,1.5,0,0,1-1.508,1.534h-8.754a3.9,3.9,0,0,0,4.02,3.544,5.02,5.02,0,0,0,3.306-1.217,1.191,1.191,0,0,1,.819-.291,1.259,1.259,0,0,1,1.27,1.3,1.4,1.4,0,0,1-.423.979A7.171,7.171,0,0,1,574.724,273.96Zm3.174-8.279c-.212-2.063-1.428-3.676-3.544-3.676-1.957,0-3.333,1.507-3.623,3.676Z" transform="translate(-451.506 -254.203)" fill="#fff"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="Groupe_7908" data-name="Groupe 7908" transform="translate(234.216 208.083)">
|
||||
<circle id="Ellipse_2" data-name="Ellipse 2" cx="5.337" cy="5.337" r="5.337" transform="translate(15.103 23.449)" fill="#fff"/>
|
||||
<circle id="Ellipse_3" data-name="Ellipse 3" cx="5.337" cy="5.337" r="5.337" transform="translate(15.103 9.198)" fill="#fff"/>
|
||||
<circle id="Ellipse_4" data-name="Ellipse 4" cx="6.416" cy="6.416" r="6.416" transform="translate(0 15.217)" fill="#fff"/>
|
||||
<circle id="Ellipse_5" data-name="Ellipse 5" cx="6.416" cy="6.416" r="6.416" fill="#fff"/>
|
||||
<circle id="Ellipse_6" data-name="Ellipse 6" cx="6.416" cy="6.416" r="6.416" transform="translate(0 30.376)" fill="#fff"/>
|
||||
<circle id="Ellipse_7" data-name="Ellipse 7" cx="4.429" cy="4.429" r="4.429" transform="translate(27.594 17.204)" fill="#fff"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 6.6 KiB |
Binary file not shown.
+1
-1
@@ -168,7 +168,7 @@ app.prepare()
|
||||
|
||||
server.get('/Player', (req, res) => {
|
||||
const actualPage = '/Player'
|
||||
const queryParams = { id: req.query.id, videoId:req.query.videoId, type:req.query.type }
|
||||
const queryParams = { id: req.query.id, url: req.query.url, videoId:req.query.videoId, typeEntite:req.query.typeEntite, nameCompany:req.query.nameCompany, nameOffre:req.query.nameOffre }
|
||||
app.render(req, res, actualPage, queryParams)
|
||||
})
|
||||
|
||||
|
||||
@@ -25,12 +25,12 @@ exports.sendTransactionnelEmail = function () {
|
||||
"Messages":[
|
||||
{
|
||||
"From": {
|
||||
"Email": "l.laniau@talentstube.com",
|
||||
"Email": "dev@talentstube.com",
|
||||
"Name": "Laurent"
|
||||
},
|
||||
"To": [
|
||||
{
|
||||
"Email": "l.laniau@talentstube.com",
|
||||
"Email": "dev@talentstube.com",
|
||||
"Name": "Laurent"
|
||||
}
|
||||
],
|
||||
|
||||
@@ -10,6 +10,14 @@ const formatDate = require("./formatDate");
|
||||
const robotsTxt = `# crawl setup
|
||||
User-agent: *
|
||||
Disallow: /Login*
|
||||
Disallow: /Help
|
||||
Disallow: /MentionsLegales
|
||||
Disallow: /Inscription
|
||||
Disallow: /Cgu
|
||||
Disallow: /Confidentialite
|
||||
Disallow: /Candidature
|
||||
Disallow: /CandidatureValidation
|
||||
Disallow: /profileStep
|
||||
# Sitemap
|
||||
Sitemap: https://www.talentstube.com/sitemap_local.xml`
|
||||
|
||||
@@ -33,8 +41,8 @@ const sitemapXml = `<?xml version="1.0" encoding="UTF-8"?>
|
||||
)}
|
||||
</urlset>`;
|
||||
|
||||
fs.writeFileSync("out/sitemap_local.xml", sitemapXml);
|
||||
console.log("sitemap_local.xml saved!");
|
||||
// fs.writeFileSync("out/sitemap_local.xml", sitemapXml);
|
||||
//console.log("sitemap_local.xml saved!");
|
||||
|
||||
// GOOGLE's VERIFY HTML
|
||||
// const googleVerify = `google-site-verification: google8f5d91a719b65f09.html`;
|
||||
|
||||
@@ -16,7 +16,7 @@ function setup() {
|
||||
const tranport = setup();
|
||||
const email = {
|
||||
from: process.env.EMAIL_FROM,
|
||||
to: "l.laniau@talentstube.com",
|
||||
to: "contact@talentstube.com",
|
||||
subject: "PWA feedback 💌⚡️",
|
||||
text: `
|
||||
Hello Team,
|
||||
|
||||
Reference in New Issue
Block a user