upload webrtc + Link stalling

This commit is contained in:
2019-10-18 10:54:10 +02:00
parent 69848dbe38
commit 5a43a2a9e1
14 changed files with 162 additions and 192 deletions
+1 -1
View File
@@ -96,7 +96,7 @@ class Messager extends Component {
}}
message={<span id="message-id">{this.state.title + " : " + this.state.body}</span>}
action={[
<Link href={this.state.link}><a>Voir</a></Link>,
<a href={this.state.link}>Voir</a>,
<IconButton
key="close"
aria-label="Close"
+3 -5
View File
@@ -267,11 +267,9 @@ function Footer(props) {
<Typography gutterBottom component="p" className={classes.textContainerRegion} align="center" >
Entreprise soutenue par
</Typography>
<Link href="https://www.bretagne.bzh/" >
<a target="_blank" className={classes.darkMenuItem} rel="noopener">
<img alt="Région Bretagne" src='/static/images/logos/Logo-region.svg' className={classes.footerLogo} />
</a>
</Link>
<a href="https://www.bretagne.bzh/" target="_blank" className={classes.darkMenuItem} rel="noopener">
<img alt="Région Bretagne" src='/static/images/logos/Logo-region.svg' className={classes.footerLogo} />
</a>
</section>
</div>
);
+40 -46
View File
@@ -197,7 +197,7 @@ const styles = theme => ({
active: {
'& span, & svg': {
color: theme.palette.primary.main+ ' !important',
color: theme.palette.primary.main + ' !important',
},
},
@@ -336,29 +336,29 @@ class Header extends React.Component {
<Divider />
<div className={classes.links}>
<div className={classes.linkGroup}>
<ActiveLink activeClassName={ classes.active } href="/" >
<ActiveLink activeClassName={classes.active} href="/" >
<a className={classes.darkMenuItem}><ListItem classes={{ root: classes.rootListItemIcon }}>
<HomeIcon className={classes.icon} />
<ListItemText classes={{ primary: classes.ListItemText }} primary='Accueil'>
</ListItemText>
</ListItem></a>
</ActiveLink>
<ActiveLink activeClassName={ classes.active } href="/Offres" >
<a className={classes.darkMenuItem +' '+ classes.darkMenuItemSpecific}><ListItem classes={{ root: classes.rootListItemIcon }}>
<ActiveLink activeClassName={classes.active} href="/Offres" >
<a className={classes.darkMenuItem + ' ' + classes.darkMenuItemSpecific}><ListItem classes={{ root: classes.rootListItemIcon }}>
<OfferIcon className={classes.icon} />
<ListItemText classes={{ primary: classes.ListItemText }} primary={`Offres d'emploi`}>
</ListItemText>
</ListItem></a>
</ActiveLink>
<ActiveLink activeClassName={ classes.active } href="/Entreprises" >
<a className={classes.darkMenuItem +' '+ classes.darkMenuItemSpecific}><ListItem classes={{ root: classes.rootListItemIcon }}>
<ActiveLink activeClassName={classes.active} href="/Entreprises" >
<a className={classes.darkMenuItem + ' ' + classes.darkMenuItemSpecific}><ListItem classes={{ root: classes.rootListItemIcon }}>
<CompanyIcon className={classes.icon} />
<ListItemText classes={{ primary: classes.ListItemText }} primary='Nos entreprises'>
</ListItemText>
</ListItem></a>
</ActiveLink>
<ActiveLink activeClassName={ classes.active } href="/Help" >
<a className={classes.darkMenuItem +' '+ classes.darkMenuItemSpecific}><ListItem classes={{ root: classes.rootListItem }}>
<ActiveLink activeClassName={classes.active} href="/Help" >
<a className={classes.darkMenuItem + ' ' + classes.darkMenuItemSpecific}><ListItem classes={{ root: classes.rootListItem }}>
<HelpIcon className={classes.icon} />
<ListItemText classes={{ primary: classes.ListItemText }} primary='Comment ça marche ?'>
</ListItemText>
@@ -368,31 +368,27 @@ class Header extends React.Component {
<div>
<div className={classes.videothequeLinkGroup}>
<Link href="https://www.talentstube.com/faire-offre-emploi-video" >
<a className={classes.lightMenuItem}><ListItem classes={{ root: classes.rootListItemIcon }}>
<VideoIcon className={classes.icon} />
<ListItemText classes={{ primary: classes.ListItemText }} primary='CV vidéothèque'>
</ListItemText>
</ListItem></a>
</Link>
<a href="https://www.talentstube.com/faire-offre-emploi-video" className={classes.lightMenuItem}><ListItem classes={{ root: classes.rootListItemIcon }}>
<VideoIcon className={classes.icon} />
<ListItemText classes={{ primary: classes.ListItemText }} primary='CV vidéothèque'>
</ListItemText>
</ListItem>
</a>
</div>
<div className={classes.blogLinkGroup}>
<Link href="https://blog.talentstube.com" >
<a className={classes.lightMenuItem}><ListItem classes={{ root: classes.rootListItemIcon }}>
<NotesIcon className={classes.icon} />
<ListItemText classes={{ primary: classes.ListItemText }} primary='Blog'>
</ListItemText>
</ListItem></a>
</Link>
<a href="https://blog.talentstube.com" className={classes.lightMenuItem}><ListItem classes={{ root: classes.rootListItemIcon }}>
<NotesIcon className={classes.icon} />
<ListItemText classes={{ primary: classes.ListItemText }} primary='Blog'>
</ListItemText>
</ListItem>
</a>
</div>
<div className={classes.recruteurLinkGroup}>
<Link href="https://www.talentstube.com/faire-offre-emploi-video" >
<a className={classes.lightMenuItem}><ListItem classes={{ root: classes.rootListItemIcon }}>
<SupervisorAccountIcon className={classes.icon} />
<ListItemText classes={{ primary: classes.ListItemText }} primary='Recruteurs'>
</ListItemText>
</ListItem></a>
</Link>
<a href="https://www.talentstube.com/faire-offre-emploi-video" className={classes.lightMenuItem}><ListItem classes={{ root: classes.rootListItemIcon }}>
<SupervisorAccountIcon className={classes.icon} />
<ListItemText classes={{ primary: classes.ListItemText }} primary='Recruteurs'>
</ListItemText>
</ListItem></a>
</div>
</div>
@@ -446,13 +442,12 @@ class Header extends React.Component {
<Divider light={true} />
<div className={classes.linkGroup}>
<Link href="https://www.talentstube.com/faire-offre-emploi-video" >
<a className={classes.lightMenuItem}><ListItem classes={{ primary: classes.ListItemText }} classes={{ root: classes.rootListItemIcon }}>
<WorkOutlineIcon className={classes.icon} />
<ListItemText primary='Connexion recruteurs'>
</ListItemText>
</ListItem></a>
</Link>
<a href="https://www.talentstube.com/faire-offre-emploi-video" className={classes.lightMenuItem}><ListItem classes={{ primary: classes.ListItemText }} classes={{ root: classes.rootListItemIcon }}>
<WorkOutlineIcon className={classes.icon} />
<ListItemText primary='Connexion recruteurs'>
</ListItemText>
</ListItem>
</a>
</div>
</List>
</div>}
@@ -532,19 +527,19 @@ class Header extends React.Component {
<List className={classes.desktopMenuList}>
<div>
<ActiveLink activeClassName={ classes.active } href="/Offres" >
<ActiveLink activeClassName={classes.active} href="/Offres" >
<a className={classes.desktopMenuItem}>
<ListItemText primary="Offres d'emploi">
</ListItemText>
</a>
</ActiveLink>
<ActiveLink activeClassName={ classes.active } href="/Entreprises" >
<ActiveLink activeClassName={classes.active} href="/Entreprises" >
<a className={classes.desktopMenuItem}>
<ListItemText primary='Nos entreprises'>
</ListItemText>
</a>
</ActiveLink>
<ActiveLink activeClassName={ classes.active } href="/Help" >
<ActiveLink activeClassName={classes.active} href="/Help" >
<a className={classes.desktopMenuItem}>
<ListItemText primary='Comment ça marche ?'>
</ListItemText>
@@ -598,13 +593,12 @@ class Header extends React.Component {
</List>
</section>
<section className={classes.appBarDesktopSection + ' ' + classes.appBarDesktopSection3}>
<Link href="https://www.talentstube.com/faire-offre-emploi-video" >
<a className={classes.desktopMenuItem}>
<ListItemText primary='Espace recruteurs'>
</ListItemText>
<ArrowForward className={classes.icon} />
</a>
</Link>
<a href="https://www.talentstube.com/faire-offre-emploi-video" className={classes.desktopMenuItem}>
<ListItemText primary='Espace recruteurs'>
</ListItemText>
<ArrowForward className={classes.icon} />
</a>
</section>
</Toolbar>
</AppBar>)
+54 -60
View File
@@ -299,8 +299,8 @@ function OffreDetail(props) {
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 socialShareUrl = typeof window !== 'undefined' ? window.location : publicRuntimeConfig.frontServerUrl + `/Offre/${offre.id}-${_.kebabCase(offre.title)}-${_.kebabCase(offre.location.gmap_address.name)}`;
const entrepriseLink = (offre.company && `/Entreprise/${offre.company.id}-${_.kebabCase(offre.company.brand_name)}-${_.kebabCase(offre.location.gmap_address.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]
const territoryVideoUrlTab = (offre.territories && offre.territories[0] && offre.territories[0].territory) ? offre.territories[0].territory.presentation_video.cdn_url.split('/') : '';
const territoryVideoId = territoryVideoUrlTab[2]
return (
<Fragment>
@@ -314,27 +314,24 @@ function OffreDetail(props) {
<Hidden smDown>
<section className={classes.headerContainerDesktop}>
<div className={classes.offerInfoContainer}>
<Link href={entrepriseLink} >
<a>
<div className={classes.logoContainer}>
<Avatar className={classes.logo} classes={{ img: classes.MuiAvatarImg }}
src={logoUrl} alt="companyLogo" />
<a href={entrepriseLink} >
<div className={classes.logoContainer}>
</div>
</a>
</Link>
<Avatar className={classes.logo} classes={{ img: classes.MuiAvatarImg }}
src={logoUrl} alt="companyLogo" />
</div>
</a>
<div className={classes.infoContainer}>
<Typography gutterBottom className={classes.offreTitle}>
{offre.title}
</Typography>
<Link href={entrepriseLink} >
<a>
<Typography gutterBottom variant="subtitle1" className={classes.companyName}>
{offre.company.brand_name && offre.company.brand_name}
</Typography>
</a>
</Link>
<a href={entrepriseLink} >
<Typography gutterBottom variant="subtitle1" className={classes.companyName}>
{offre.company.brand_name && offre.company.brand_name}
</Typography>
</a>
{offre.is_promoted && (
<Chip label="Pourvue" className={classes.chip} />
)}
@@ -342,11 +339,12 @@ function OffreDetail(props) {
</div>
</div>
{!!!offre.is_promoted && (
<Button
variant="contained"
className={classes.button + ' cypButtonApply'}
onClick={() => Router.push(`/Reponse?adId=${offre.id}`)}
>Postuler</Button>
<Link href={`/Reponse?adId=${offre.id}`}>
<Button
variant="contained"
className={classes.button + ' cypButtonApply'}
>Postuler</Button>
</Link>
)}
</section>
</Hidden>
@@ -356,27 +354,23 @@ function OffreDetail(props) {
<div className={classes.container}>
<Hidden mdUp>
<section className={classes.headerContainer}>
<Link href={entrepriseLink} >
<div className={classes.logoContainer}>
<div className={classes.logoContainer}>
<a>
<Avatar className={classes.logo} classes={{ img: classes.MuiAvatarImg }}
src={logoUrl} alt="companylogo" />
</a>
<a href={entrepriseLink} >
<Avatar className={classes.logo} classes={{ img: classes.MuiAvatarImg }}
src={logoUrl} alt="companylogo" />
</a>
</div>
</Link>
</div>
<div className={classes.infoContainer}>
<Typography gutterBottom variant="h5" component="h1" className={classes.title}>
{offre.title}
</Typography>
<Link href={entrepriseLink} >
<a>
<Typography gutterBottom variant="subtitle1" className={classes.text}>
{offre.company.brand_name && offre.company.brand_name}
</Typography>
</a>
</Link>
<a href={entrepriseLink} >
<Typography gutterBottom variant="subtitle1" className={classes.text}>
{offre.company.brand_name && offre.company.brand_name}
</Typography>
</a>
{/* ville */}
</div>
</section>
@@ -403,12 +397,12 @@ function OffreDetail(props) {
{offre.description}
</Typography>
<section className={classes.tagsContainer}>
{offre.public_tag.map((label, index) => {
return (
<Chip label={label} className={classes.tags} key={index} />
);
})}
</section>
{offre.public_tag.map((label, index) => {
return (
<Chip label={label} className={classes.tags} key={index} />
);
})}
</section>
</SimpleCollapse>
{!offre.is_promoted && (
@@ -439,33 +433,33 @@ function OffreDetail(props) {
Découvrir l'entreprise <span className={classes.primary}>{offre.company.brand_name && offre.company.brand_name}</span>
</Typography>
<Link href={entrepriseLink} >
<a href={entrepriseLink}>
<div className={classes.discoverContainerImage}>
<img src={isWidthUp('sm', props.width) ? imgUrlDesktop : imgUrl} alt="company" />
<KeyboardArrowleftIcon className={classes.iconPlay} />
</div>
</Link>
</a>
</section>
</div>
)}
{offre.territories && territoryVideoId && (
<div className={classes.container + ' ' + classes.discoverContainerTerritory}>
<section>
<Typography gutterBottom className={classes.title + ' ' + classes.discoverTitle} align="center">
Découvrir le <span className={classes.primary}>territoire</span>
<div className={classes.container + ' ' + classes.discoverContainerTerritory}>
<section>
<Typography gutterBottom className={classes.title + ' ' + classes.discoverTitle} align="center">
Découvrir le <span className={classes.primary}>territoire</span>
</Typography>
<section className={classes.discoverTerritoryContentContainer}>
<VideoVimeo classesOverride={classes.videoTerritory} videoId={territoryVideoId} autoplay='0' />
<Typography className={classes.territoryTitle}>
{(!!!offre.territories) ? offre.territories[0].territory.brand_name : ''}
</Typography>
<Typography className={classes.territoryType} gutterBottom>
{(!!!offre.territories) ? offre.territories[0].territory.extra.terType : ''}
</Typography>
<section className={classes.discoverTerritoryContentContainer}>
<VideoVimeo classesOverride={classes.videoTerritory} videoId={territoryVideoId} autoplay='0' />
<Typography className={classes.territoryTitle}>
{(!!!offre.territories) ? offre.territories[0].territory.brand_name : ''}
</Typography>
<Typography className={classes.territoryType} gutterBottom>
{(!!!offre.territories) ? offre.territories[0].territory.extra.terType : ''}
</Typography>
</section>
</section>
</div>
)
</section>
</div>
)
}
</Fragment>
)}
+20 -22
View File
@@ -47,6 +47,9 @@ const styles = theme => ({
maxWidth: '400px', [theme.breakpoints.down('md')]: {
maxWidth: `${100 - (theme.spacing(1))}vw`
},
sendContainer: {
textAlign: 'center'
},
button: {
textTransform: 'inherit',
marginLeft: theme.spacing(8),
@@ -54,17 +57,20 @@ const styles = theme => ({
marginTop: theme.spacing(4),
marginBottom: theme.spacing(2),
padding: theme.spacing(1.2, 2),
borderRadius: '3px',
color: theme.palette.secondary.main,
backgroundColor: theme.palette.primary.important,
//borderRadius: '3px',
[theme.breakpoints.up('sm')]: {
margin: 'auto',
},
},
}
})
class Recorder extends Component {
state={
canSend:false
}
async componentDidMount() {
var record = (await import('videojs-record')).default
// instantiate Video.js
@@ -79,11 +85,13 @@ class Recorder extends Component {
// device is ready
this.player.on('deviceReady', () => {
console.info('device is ready!');
this.setState({canSend:false});
});
// user clicked the record button and started recording
this.player.on('startRecord', () => {
console.log('started recording!');
this.setState({canSend:false});
});
// user completed recording and stream is available
@@ -91,15 +99,18 @@ class Recorder extends Component {
// recordedData is a blob object containing the recorded data that
// can be downloaded by the user, stored on server etc.
console.log('finished recording: ', this.player.recordedData);
this.setState({canSend:true});
});
// error handling
this.player.on('error', (element, error) => {
console.warn(error);
this.setState({canSend:false});
});
this.player.on('deviceError', () => {
console.error('device error:', this.player.deviceErrorCode);
this.setState({canSend:false});
});
}
@@ -111,24 +122,11 @@ class Recorder extends Component {
}
sendBlob = () => {
console.log('accessing recording: ', this.player.recordedData)
// console.log('accessing recording: ', this.player.recordedData)
var formData = new FormData();
formData.append('upload', this.player.recordedData, "myupload");
// formData.append('user', 7);//TODO: taking from auth
setAuthorizationHeader('eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJpYXQiOjE1NTk4OTE4ODIsImV4cCI6MTU1OTg5NTQ4Miwicm9sZXMiOlsiUk9MRV9UQUxFTlQiLCJST0xFX1VTRVIiXSwidXNlcm5hbWUiOiJ0aG9tYXMuYmVycm9kQGUtZGVjbGljLmNvbSJ9.dnXiifet5SIyZf1zOBnu6RvVqA6k-aT16O_YNy6ZAhRZUuQtqP21enNkug0KxLEFMy91gcj0gkGuETqMwcHBL_xkx7rJvb2dLoOo0yduZxJLzngWKroCZE152t-V5Edn2Gje3CHMGqTZLwjBowEgUTpgfyTE9IaJn-q2pizukWBzjmfmdz5mYFgoIQrsjThkPxRH8cNOTit0bj6SebjsCCsPb_jdM6rek03qtwELz2ABJaHJU1FiGGTLYtcF3k32AGlRwa5P9etKwQUrz0AL5q3lroKgbtwhxY3cKyRKAo-o68s3v12_T6R86WqEegOx6TyBb06GJhTcP1MIGBMMgNIm5GxSi0U0RvRDmLuFtsuZv5wBUZqkpth8Z_dK5H003k67XjLrYC4TnMhQXxUGV6Eji3lkCY5fOWbQjwXRO9R_rPCNSiPEZj0o_-ach0a4Y5nLhzVlnb3J0plpb4lwpN3D9t9FNfizKQ5VX9eLoozrzkI-apIbV-Z0is8i6j4yt7R24PR9dyreQXZ3-e_tEwu5UTKi-zYAaHaHrRgCSjWg4d6ozuyXQmzi64d1-Fnx6IkU_KtXtUYRVsZhQUvJpri2x1szLLM-Hqdsh2Ljuu5qDdJrHRKeG1gZeKWPfvZweZ3SWrfvlNZHKNWX-2pmEvz9sJdpsAO-NnmTEUVrpzY')
axios.post("http://localhost/app_dev.php/api/media",
formData,
{
headers: {
'Content-Type': `multipart/form-data;`
},
withCredentials: true
})
.then(res => console.info(res)).catch(err => console.error(err))
console.info('end send Blob')
this.props.uploader(formData);
}
render() {
@@ -138,12 +136,12 @@ class Recorder extends Component {
<div data-vjs-player>
<video id="myVideo" ref={node => this.videoNode = node} className="video-js vjs-default-skin" playsInline></video>
</div>
<div>
<Button type="submit" variant="outlined" color="secondary"
<div className={classes.sendContainer}>
{ this.state.canSend && <Button type="submit" variant="outlined" color="primary"
className={classes.button}
onClick={this.sendBlob}>
Send
</Button>
Envoyer
</Button>}
</div>
</div>
);
+11 -18
View File
@@ -51,26 +51,19 @@ export default function SocialShare(props) {
return (
<div className={classes.root}>
<Link href={"https://www.facebook.com/sharer/sharer.php?u=" + encodeURIComponent(props.url)} >
<a>
<Icon className={clsx(classes.icon, classes.FacebookIcon, 'fab fa-facebook-f')} color="secondary" />
</a>
</Link>
<Link href={"http://twitter.com/share?url=" + encodeURIComponent(props.url)} >
<a>
<Icon className={clsx(classes.icon, classes.TwitterIcon, 'fab fa-twitter')} color="secondary" />
</a>
</Link>
<Link href={"https://www.linkedin.com/shareArticle?mini=true&url=" +encodeURIComponent( props.url + "&title=Talent's Tube")} >
<a>
<a href={"https://www.facebook.com/sharer/sharer.php?u=" + encodeURIComponent(props.url)}>
<Icon className={clsx(classes.icon, classes.FacebookIcon, 'fab fa-facebook-f')} color="secondary" />
</a>
<a href={"http://twitter.com/share?url=" + encodeURIComponent(props.url)}>
<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")}>
<Icon className={clsx(classes.icon, classes.LinkedinIcon, 'fab fa-linkedin-in')} color="secondary" />
</a>
</Link>
<Link href={"mailto:?subject=Offre d'emploi Talent's Tube&body=Regardez cette offre : " + props.url} >
<a>
</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} >
<Icon className={clsx(classes.icon, classes.MailIcon, 'fas fa-envelope')} color="secondary" />
</a>
</Link>
</a>
</div>
);
}
-2
View File
@@ -1,7 +1,5 @@
import React, { Fragment } from 'react';
import PropTypes from "prop-types";
import Router from 'next/router'
import getConfig from 'next/config'
import { withStyles } from '@material-ui/core/styles';
import Typography from '@material-ui/core/Typography';
import IconText from './../atoms/IconText';
@@ -6,12 +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 Fragment from 'react';
import withWidth, { isWidthUp } from '@material-ui/core/withWidth'
import Header from '../organisms/Header'
import {AppBar,CssBaseline,Container,Toolbar,IconButton,Typography} from "@material-ui/core";
import MenuIcon from "@material-ui/icons/Menu";
import Box from "@material-ui/core/Box";
import Hidden from '@material-ui/core/Hidden';
const styles = theme => ({
@@ -108,8 +105,6 @@ function LayoutCompany(props) {
<Hidden mdUp>
<div id="F" className={classes.foot}>
{/* <div className={classes.inner}>
<div className={classes.grow} /> */}
<Button
variant="contained"
className={classes.button}
@@ -117,8 +112,6 @@ function LayoutCompany(props) {
onClick={() => Router.push(`/Reponse?companyId=${companyId}`)}
>
Candidature spontanée</Button>
{/* <div className={classes.grow} />
</div> */}
</div>
</Hidden>
-2
View File
@@ -122,7 +122,6 @@ export default {
},
},
stats: {
//
countAdView: id => {
if (!!localStorage.ttJWT)
setAuthorizationHeader(localStorage.ttJWT)
@@ -131,7 +130,6 @@ export default {
countCompanyView: id => {
if (!!localStorage.ttJWT)
setAuthorizationHeader(localStorage.ttJWT)
console.log(localStorage.ttJWT)
axios.get(`api/companyAjaxRecStat/${id}`)
},
}
+2 -2
View File
@@ -8,7 +8,7 @@
<lastmod>2019-09-17</lastmod>
</url>,<url>
<loc>https://app.talentstube.com/Confidentialite</loc>
<lastmod>2019-09-17</lastmod>
<lastmod>2019-10-18</lastmod>
</url>,<url>
<loc>https://app.talentstube.com/Entreprises</loc>
<lastmod>2019-09-17</lastmod>
@@ -20,7 +20,7 @@
<lastmod>2019-10-14</lastmod>
</url>,<url>
<loc>https://app.talentstube.com/MentionsLegales</loc>
<lastmod>2019-09-17</lastmod>
<lastmod>2019-10-18</lastmod>
</url>,<url>
<loc>https://app.talentstube.com/Offres</loc>
<lastmod>2019-10-16</lastmod>
+10 -10
View File
@@ -57,7 +57,7 @@ class Confidentialite extends Component {
</Head>
<div className={classes.container}>
<Typography className={classes.text} gutterBottom align="left">
Nous vous invitons à lire avec attention le présent document. Pour toute question concernant ce document et, dune manière générale, sur la collecte et le traitement de vos informations personnelles par la société talentstube.com, nhésitez pas à nous contacter via le formulaire présent sur la page contact : <Link href="https://blog.talentstube.com/contact.html"><a className={classes.link} target="_blank">https://blog.talentstube.com/contact.html</a></Link>
Nous vous invitons à lire avec attention le présent document. Pour toute question concernant ce document et, dune manière générale, sur la collecte et le traitement de vos informations personnelles par la société talentstube.com, nhésitez pas à nous contacter via le formulaire présent sur la page contact : <a href="https://blog.talentstube.com/contact.html" className={classes.link} target="_blank">https://blog.talentstube.com/contact.html</a>
</Typography>
<Typography className={classes.title} component="h2" gutterBottom align="left">
@@ -155,7 +155,7 @@ class Confidentialite extends Component {
`
Vous disposez d'un droit d'accès, de rectification, de suppression, dopposition et de portabilité des données. Nous disposons dun délai de 30 jours à compter de votre demande pour apporter une réponse.
Vous pouvez demander une limitation du traitement des données collectées. Lexercice de ces droits peut exercer ce droit auprès de TALENTS TUBE en adressant une requête soit par voie postale à l'adresse suivante : 3 Rue Louis de Broglie, Village By CA 56000 Vannes, soit par courrier électronique via le formulaire présent sur la page Contact `
}<Link href="https://blog.talentstube.com/contact.html"><a className={classes.link} target="_blank">https://blog.talentstube.com/contact.html</a></Link>{`. Cette requête devra être accompagnée d'une pièce d'identité revêtant la signature de l'Utilisateur et devra préciser l'adresse et le moyen par lesquelles une réponse pourra être envoyée..
}<a href="https://blog.talentstube.com/contact.html" className={classes.link} target="_blank">https://blog.talentstube.com/contact.html</a>{`. Cette requête devra être accompagnée d'une pièce d'identité revêtant la signature de l'Utilisateur et devra préciser l'adresse et le moyen par lesquelles une réponse pourra être envoyée..
`
}
</Typography>
@@ -171,14 +171,14 @@ class Confidentialite extends Component {
Vous avez la possibilité de désactiver les cookies en vous rendant dans les options de votre navigateur. Cliquez sur le lien correspondant à votre navigateur pour découvrir comment faire :
`
}
<Link href="https://support.google.com/chrome/answer/95647?hl=fr"><a className={classes.link} target="_blank">Google Chrome</a></Link><br />
<Link href="https://support.mozilla.org/fr/kb/activer-desactiver-cookies"><a className={classes.link} target="_blank">Mozilla Firefox</a></Link><br />
<Link href="http://support.apple.com/kb/PH17191?viewlocale=fr_FR&locale=en_US"><a className={classes.link} target="_blank">Safari</a></Link><br />
<Link href="http://help.opera.com/Windows/10.20/fr/cookies.html"><a className={classes.link} target="_blank">Opera</a></Link><br />
<Link href="http://windows.microsoft.com/fr-fr/internet-explorer/delete-manage-cookies#ie=ie-11"><a className={classes.link} target="_blank">Internet Explorer</a></Link><br />
{
<a className={classes.link} href="https://support.google.com/chrome/answer/95647?hl=fr" target="_blank">Google Chrome</a><br />
<a href="https://support.mozilla.org/fr/kb/activer-desactiver-cookies" className={classes.link} target="_blank">Mozilla Firefox</a><br />
<a href="http://support.apple.com/kb/PH17191?viewlocale=fr_FR&locale=en_US" className={classes.link} target="_blank">Safari</a><br />
<a href="http://help.opera.com/Windows/10.20/fr/cookies.html" className={classes.link} target="_blank">Opera</a><br />
<a href="http://windows.microsoft.com/fr-fr/internet-explorer/delete-manage-cookies#ie=ie-11" className={classes.link} target="_blank">Internet Explorer</a><br />
`
Pour plus dinformations sur les cookies et la façon de les gérer, nous vous recommandons de consulter le site `} <Link href="http://www.youronlinechoices.com/fr/"><a className={classes.link} target="_blank">www.youronlinechoices.com</a></Link>{`, développé par lorganisme EDAA (European Interactive Digital Advertising Alliance).
Pour plus dinformations sur les cookies et la façon de les gérer, nous vous recommandons de consulter le site `} <a href="http://www.youronlinechoices.com/fr/" className={classes.link} target="_blank">www.youronlinechoices.com</a>{`, développé par lorganisme EDAA (European Interactive Digital Advertising Alliance).
`
}
</Typography>
@@ -192,7 +192,7 @@ class Confidentialite extends Component {
Ce site utilise le service danalyse web Google Analytics. Cela nous permet danalyser la façon dont les internautes utilisent notre site afin de leur proposer une meilleure expérience de navigation. Pour ce faire, Google Analytics utilise des cookies de pistage permettant de suivre le parcours dun internaute sur le site. Ces cookies sont conservés pour une durée de 26 mois.
Nous avons activé lanonymisation des adresses IP pour ce site. Cela signifie que les adresses IP collectées par Google Analytics sont systématiquement raccourcies pour rendre impossible lidentification des internautes. Dans certains cas exceptionnels, ladresse IP complète peut être transférée sur un serveur de Google localisé aux Etats-Unis, et est ensuite raccourcie immédiatement sur celui-ci. Google utilise les informations récoltées via les cookies pour le compte de talents tube, dans le but danalyser les habitudes de navigation des internautes et de fournir des rapports sur lactivité du site.
Google met à disposition des utilisateurs un plug-in pour leur navigateur leur permettant dempêcher la récolte de données relatives à leur navigation sur les sites web utilisant Google Analytics.
Ce plug-in est disponible à cette adresse : `} <Link href="https://tools.google.com/dlpage/gaoptout?hl=fr"><a className={classes.link} target="_blank">tools.google.com/dlpage/gaoptout</a></Link> {`
Ce plug-in est disponible à cette adresse : `} <a href="https://tools.google.com/dlpage/gaoptout?hl=fr" className={classes.link} target="_blank">tools.google.com/dlpage/gaoptout</a>{`
`
}
</Typography>
+5 -6
View File
@@ -456,11 +456,10 @@ class Entreprise extends React.Component {
: ''
}
{(company.website) ?
(<Link href={company.website} >
<a className={classes.websiteLink} rel="noopener" target="_blank" rel="noopener">
(
<a href={company.website} className={classes.websiteLink} rel="noopener" target="_blank" rel="noopener">
<IconText classes={{ root: classes.iconText, icon: classes.iconTextIcon, text: classes.iconTextText }} variant="business_center" text={!!company.website ? company.website : "website"} />
</a>
</Link>
)
: ''
}
@@ -476,9 +475,9 @@ class Entreprise extends React.Component {
<section className={classes.IconTextContainerDesktop}>
<IconTextInline classes={{ icon: classes.iconTextIcon, text: classes.iconTextText }} variant="location_on" text={company.addresses.billing.city} />
{(company.website) ?
(<Link href={!!company.website ? company.website : "website"} >
<a target="_blank" rel="noopener" className={classes.websiteLink}><IconTextInline classes={{ icon: classes.iconTextIcon, text: classes.iconTextText }} variant="business_center" text={!!company.website ? company.website : "website"} /></a>
</Link>)
(
<a href={!!company.website ? company.website : "website"} target="_blank" rel="noopener" className={classes.websiteLink}><IconTextInline classes={{ icon: classes.iconTextIcon, text: classes.iconTextText }} variant="business_center" text={!!company.website ? company.website : "website"} /></a>
)
: ''
}
+2 -2
View File
@@ -75,7 +75,7 @@ class MentionsLegales extends Component {
{
`
TALENTS TUBE est joignable :
- Par internet : via le formulaire de contact sur le site ` }<Link href="http://blog.talentstube.com"><a className={classes.link} target="_blank">blog.talentstube.com</a></Link>{`;
- Par internet : via le formulaire de contact sur le site ` }<a href="http://blog.talentstube.com" className={classes.link} target="_blank">blog.talentstube.com</a>{`;
- Par téléphone au 02 30 05 06 31, du lundi au vendredi de 9 h à 18 h;
- Par voie postale :
TALENTS TUBE
@@ -90,7 +90,7 @@ class MentionsLegales extends Component {
</Typography>
<Typography className={classes.text} gutterBottom align="center">
<Link href="https://www.e-declic.com/"><a className={classes.link} target="_blank">e-declic</a></Link>
<a href="https://www.e-declic.com/" className={classes.link} target="_blank">e-declic</a>
{
`
27 Rue du Danemark - Porte océane 2
+9 -4
View File
@@ -279,11 +279,15 @@ class Reponse extends React.Component {
<link rel="canonical" href="https://app.talentstube.com" />
</Head>
{/* https://codesandbox.io/s/ii0us */}
{ loading ? <Loader /> :
{ loading ?
<Loader /> :
<Fragment>
<section className={classes.headerContainer}>
{ !!offre.company &&(<Fragment><div className={classes.logoContainer}>
{ !!offre.company && (
<Fragment>
<div className={classes.logoContainer}>
<Avatar className={classes.logo} classes={{ img: classes.MuiAvatarImg }} src={logoUrl} alt="companylogo"/>
</div>
<div className={classes.infoContainer}>
@@ -294,7 +298,8 @@ class Reponse extends React.Component {
{!!offre.company.brand_name? offre.company.brand_name: ''}
</Typography>
{/* ville */}
</div></Fragment>)
</div>
</Fragment>)
}
{ !!company.brand_name && (<Fragment><div className={classes.logoContainer}>
<Avatar className={classes.logo} classes={{ img: classes.MuiAvatarImg }} src={logoCompanyUrl} alt="companylogo"/>
@@ -367,7 +372,7 @@ class Reponse extends React.Component {
):
(
<div className={classes.recorderContainer}>
<Recorder/>
<Recorder uploader={this.props.uploadMedia} />
</div>
)
}