08/06/2025 - 16h30

branche_01062025
Cherif 2025-06-08 16:34:09 +02:00
parent 42e262b1c6
commit a1d3dc2508
32 changed files with 3658 additions and 439 deletions

View File

@ -145,8 +145,6 @@ function App() {
<scrollToTop />
<Switch>
<Route path="/v3" exact component={Recherche_new_v3} />
<Route path="/v4" exact component={Recherche_new_v4} />

View File

@ -285,7 +285,7 @@ const Apprenant = (props) => {
]
const columns_apprenant_inscriptions = [
{ field: 'id', headerName: 'id', hide: true },
@ -351,7 +351,7 @@ const Apprenant = (props) => {
}
},
{
{/*
field: "delete", headerName: 'Supprimer',
renderCell: (cellValues) => {
return (
@ -407,7 +407,7 @@ const Apprenant = (props) => {
);
}
},
*/},
]
@ -2429,6 +2429,18 @@ const Apprenant = (props) => {
setDialog_add_inscription_open(true);
}
if (String(actionmass_ftion_val) === String("create_ent")) {
Create_ENT_Account_Apprenant(liste_apprenant);
}
if (String(actionmass_ftion_val) === String("disable_ent")) {
Disable_ENT_Account_Apprenant(liste_apprenant);
}
if (String(actionmass_ftion_val) === String("enable_ent")) {
Enable_ENT_Account_Apprenant(liste_apprenant);
}
}
@ -4445,6 +4457,192 @@ const Apprenant = (props) => {
}
const [Disable_ENT_Account_Apprenant_api, setDisable_ENT_Account_Apprenant_api] = useState();
const [Disable_ENT_Account_Apprenant_message, setDisable_ENT_Account_Apprenant_message] = useState();
const [Disable_ENT_Account_Apprenant_result, setDisable_ENT_Account_Apprenant_result] = useState();
function Disable_ENT_Account_Apprenant(local_liste_apprenant) {
var form = new FormData();
const stored_cookie = getCookie('tokenmysypart');
form.append("token", stored_cookie);
form.append("tab_apprenant_ids", local_liste_apprenant);
var myurl = process.env.REACT_APP_API_URL + "myclass/api/ENT_Disable_Apprenant_Account/";
setLoading(true);
axios.post(myurl, form).then(res => {
//console.log(" In Disable_ENT_Account_Apprenant res.data.status = " + res.data.status);
//console.log(" In Disable_ENT_Account_Apprenant res.data.message r_class = " + res.data.message);
setLoading(false);
if (String(res.data.status) === String("true")) {
setDisable_ENT_Account_Apprenant_api("true");
setDisable_ENT_Account_Apprenant_result(res.data.message);
setSelectionModel([]);
setadd_One_Apprenant('');
setdisplay_detail_apprenant('');
Clear_Detail_Apprenant_Fields();
setselected_apprenant_id('');
setgridline_id('');
window.scrollTo({
top: 0,
behavior: "smooth",
});
Get_All_Apprenant();
// alert(res.data.message);
setdisplay_alert_mysy("1");
setalert_message(res.data.message);
setalert_type("success");
}
else {
setDisable_ENT_Account_Apprenant_api("false");
setDisable_ENT_Account_Apprenant_message(res.data.message);
alert(res.data.message);
}
}).catch((error) => {
setLoading(false);
console.warn('Disable_ENT_Account_Apprenant : Not good man :( mysearchtext = ' + error);
setDisable_ENT_Account_Apprenant_api("false");
alert(" Impossible de supprimer la liste des apprenants");
})
}
const [Enable_ENT_Account_Apprenant_api, setEnable_ENT_Account_Apprenant_api] = useState();
const [Enable_ENT_Account_Apprenant_message, setEnable_ENT_Account_Apprenant_message] = useState();
const [Enable_ENT_Account_Apprenant_result, setEnable_ENT_Account_Apprenant_result] = useState();
function Enable_ENT_Account_Apprenant(local_liste_apprenant) {
var form = new FormData();
//form.append("token","K3cw63eKokKSbV4spjQ48SUNnfy80yrXfA");
//console.log(" #### local_liste_session = ", local_liste_session)
const stored_cookie = getCookie('tokenmysypart');
form.append("token", stored_cookie);
form.append("tab_apprenant_ids", local_liste_apprenant);
var myurl = process.env.REACT_APP_API_URL + "myclass/api/ENT_Enable_Apprenant_Account/";
setLoading(true);
axios.post(myurl, form).then(res => {
//console.log(" In Enable_ENT_Account_Apprenant res.data.status = " + res.data.status);
//console.log(" In Enable_ENT_Account_Apprenant res.data.message r_class = " + res.data.message);
setLoading(false);
if (String(res.data.status) === String("true")) {
setEnable_ENT_Account_Apprenant_api("true");
setEnable_ENT_Account_Apprenant_result(res.data.message);
setSelectionModel([]);
setadd_One_Apprenant('');
setdisplay_detail_apprenant('');
Clear_Detail_Apprenant_Fields();
setselected_apprenant_id('');
setgridline_id('');
window.scrollTo({
top: 0,
behavior: "smooth",
});
Get_All_Apprenant();
// alert(res.data.message);
setdisplay_alert_mysy("1");
setalert_message(res.data.message);
setalert_type("success");
}
else {
setEnable_ENT_Account_Apprenant_api("false");
setEnable_ENT_Account_Apprenant_message(res.data.message);
alert(res.data.message);
}
}).catch((error) => {
setLoading(false);
console.warn('Enable_ENT_Account_Apprenant : Not good man :( mysearchtext = ' + error);
setEnable_ENT_Account_Apprenant_api("false");
alert(" Impossible de supprimer la liste des apprenants");
})
}
const [Create_ENT_Account_Apprenant_api, setCreate_ENT_Account_Apprenant_api] = useState();
const [Create_ENT_Account_Apprenant_message, setCreate_ENT_Account_Apprenant_message] = useState();
const [Create_ENT_Account_Apprenant_result, setCreate_ENT_Account_Apprenant_result] = useState();
function Create_ENT_Account_Apprenant(local_liste_apprenant) {
var form = new FormData();
//form.append("token","K3cw63eKokKSbV4spjQ48SUNnfy80yrXfA");
//console.log(" #### local_liste_session = ", local_liste_session)
const stored_cookie = getCookie('tokenmysypart');
form.append("token", stored_cookie);
form.append("tab_apprenant_ids", local_liste_apprenant);
var myurl = process.env.REACT_APP_API_URL + "myclass/api/ENT_Create_Apprenant_Account/";
setLoading(true);
axios.post(myurl, form).then(res => {
//console.log(" In Create_ENT_Account_Apprenant res.data.status = " + res.data.status);
//console.log(" In Create_ENT_Account_Apprenant res.data.message r_class = " + res.data.message);
setLoading(false);
if (String(res.data.status) === String("true")) {
setCreate_ENT_Account_Apprenant_api("true");
setCreate_ENT_Account_Apprenant_result(res.data.message);
setSelectionModel([]);
setadd_One_Apprenant('');
setdisplay_detail_apprenant('');
Clear_Detail_Apprenant_Fields();
setselected_apprenant_id('');
setgridline_id('');
window.scrollTo({
top: 0,
behavior: "smooth",
});
Get_All_Apprenant();
// alert(res.data.message);
setdisplay_alert_mysy("1");
setalert_message(res.data.message);
setalert_type("success");
}
else {
setCreate_ENT_Account_Apprenant_api("false");
setCreate_ENT_Account_Apprenant_message(res.data.message);
alert(res.data.message);
}
}).catch((error) => {
setLoading(false);
console.warn('Create_ENT_Account_Apprenant : Not good man :( mysearchtext = ' + error);
setCreate_ENT_Account_Apprenant_api("false");
alert(" Impossible de supprimer la liste des apprenants");
})
}
const [Delete_LIST_Apprenant_api, setDelete_LIST_Apprenant_api] = useState();
const [Delete_LIST_Apprenant_message, setDelete_LIST_Apprenant_message] = useState();
const [Delete_LIST_Apprenant_result, setDelete_LIST_Apprenant_result] = useState();
@ -5122,17 +5320,16 @@ const Apprenant = (props) => {
const New_Option = [
{ "id": "0", "label": "Dupliquer", "value": "dupliquer" },
{ "id": "1", "label": "Exporter", "value": "exporter" },
{ "id": "3", "label": "(R)Inscrire", "value": "inscrire" },
{ "id": "4", "label": "ENT Créer acceès", "value": "create_ent" },
{ "id": "5", "label": "ENT Désactiver", "value": "disable_ent" },
{ "id": "2", "label": "Supprimer", "value": "supprimer" },
]
const [Dialog_Suivi_Pedago_message, setDialog_Suivi_Pedago_message] = React.useState(false);
const [Dialog_Suivi_Pedago_open, setDialog_Suivi_Pedago_open] = React.useState(false);
function Dialog_Suivi_Pedago_handle_change_participant_session(message) {
@ -5783,6 +5980,16 @@ const Apprenant = (props) => {
}
// -- end champs specifiques
const New_Option_Filter = [
{ "id": "email", "label": "Email ", "value": "email" },
{ "id": "nom", "label": "Nom ", "value": "nom" },
{ "id": "prenom", "label": "Prénom ", "value": "prenom" },
{ "id": "", "label": "", "value": "" },
{ "id": "1", "label": "", "value": "1" }, // Cette ligne pour couvrir l'ajout d'une ligne de filter. C'est fait expres.
]
return (
<div className="apprenant">
@ -6546,7 +6753,7 @@ const Apprenant = (props) => {
<DialogTitle style={{ cursor: 'move', fontFamily: "DM Sans" }} id="draggable-dialog-title" > Inscrire </DialogTitle>
<DialogContent className="DialogContent_width">
{New_Getall_TrainingSession_result && <div className="session_caract_Dialog"> <b> Session</b>
{New_Getall_TrainingSession_result && <div className="session_caract_Dialog"> <b> Promotion</b>
<Autocomplete
disablePortal
@ -7119,7 +7326,10 @@ const Apprenant = (props) => {
if (value && value.value) {
if (String(value.value) === "supprimer"
|| String(value.value) === "dupliquer" || String(value.value) === "exporter"
|| String(value.value) === "inscrire") {
|| String(value.value) === "inscrire"
|| String(value.value) === "create_ent"
|| String(value.value) === "disable_ent"
) {
setactionmass_ftion_val(value.value);
}
else {
@ -7175,6 +7385,14 @@ const Apprenant = (props) => {
{String(actionmass_ftion_val) === "inscrire" &&
<font> Confirmer l'inscription en masse de {selectionModel.length} apprenant(s).
</font>}
{String(actionmass_ftion_val) === "create_ent" &&
<font> Confirmer la création des comptes ENT en masse de {selectionModel.length} apprenant(s).
</font>}
{String(actionmass_ftion_val) === "disable_ent" &&
<font> Confirmer la désactivation des comptes ENT en masse de {selectionModel.length} apprenant(s).
</font>}
</div>
<div className="gest_actions">
<div style={{ "width": "45%", "float": "left" }}>
@ -9169,84 +9387,7 @@ const Apprenant = (props) => {
</div>
{/*<div className="div_row">
{selectionModel && selectionModel.length >= 1 && <div className="block_en_mass">
<nav >Traitement en masse </nav>
&nbsp;
<TextField
select
InputLabelProps={{
shrink: true,
}}
inputProps={{ min: "0", max: "1", step: "1" }}
disabled={false}
className="block_en_mass_select"
value={actionmass_ftion_val}
onChange={actionmass_ftion}
>
<MenuItem value="n/a" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }}>Action &nbsp;&nbsp;</MenuItem>
<MenuItem value="supprimer" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }}>Supprimer &nbsp;</MenuItem>
<MenuItem value="dupliquer" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }}>Dupliquer &nbsp;</MenuItem>
</TextField>
{actionmass_ftion_val && <nav className='block_en_mass_bton_action'>
<Popup
trigger={<Button className="bton_enreg" style={{ "width": "90%" }}>
<FcAcceptDatabase /> Traiter
</Button>}
modal
nested
position="center center"
>
{close => (
<div>
<button className="gest_close" onClick={close}>
&times;
</button>
<div className="gest_header"> MySy Information </div>
<div className="gest_content">
{' '}
<font color="red"> Confirmer l'action <b> {actionmass_ftion_val} </b> en masse pour {selectionModel.length} lignes.
</font>
</div>
<div className="gest_actions">
<div style={{ "width": "45%", "float": "left" }}>
<button className="gest_bton_popup" onClick={(event) => {
actionmass_ftion_Traitemet();
close();
}}> Valider </button>
</div>
<div style={{ "width": "45%", "float": "right" }}>
<button
className="gest_bton_popup"
onClick={() => {
//console.log('modal closed ');
close();
}}
>
Annuler
</button>
</div>
</div>
</div>
)}
</Popup>
</nav>
}
</div>}
</div>*/}
</div>

View File

@ -4102,6 +4102,11 @@ const DisplayPartnerSession = (props) => {
var local_event_type = JSON.parse(x).event_type;
if (JSON.parse(x).mode_animation)
var local_mode_animation = JSON.parse(x).mode_animation;
else
var local_mode_animation = ""
//---
var node = {
@ -4114,6 +4119,7 @@ const DisplayPartnerSession = (props) => {
"local_objectif": local_objectif,
"local_comment": local_session_comment,
"local_event_type": local_event_type,
"local_mode_animation": local_mode_animation,
};
new_data2.push(node);
});
@ -6391,6 +6397,18 @@ const DisplayPartnerSession = (props) => {
form.append("formateur_id", p_formateur_id);
form.append("site_formation_id", p_session_site_formation_id);
if (ent_account_automatic) {
form.append("ent_account_automatic", "1");
} else {
form.append("ent_account_automatic", "0");
}
if (lms_account_automatic) {
form.append("lms_account_automatic", "1");
} else {
form.append("lms_account_automatic", "0");
}
// Il s'agit d'une mise à jour de session
if (String(p_class_is_published) === "1") {
@ -10268,6 +10286,8 @@ const DisplayPartnerSession = (props) => {
const [sequence_startDate, setsequence_startDate] = useState(new Date());
const [sequence_endDate, setsequence_endDate] = useState(new Date());
const [p_detail_mode_animation, setp_detail_mode_animation] = useState("");
const [selected_detail_sequence_title, setselected_detail_sequence_title] = useState();
const [selected_detail_sequence_comment, setselected_detail_sequence_comment] = useState();
@ -10306,6 +10326,8 @@ const DisplayPartnerSession = (props) => {
setp_detail_sequence_agenda("");
setp_detail_sequence_objectif("");
setp_detail_mode_animation("");
setsequence_startDate(new Date());
setsequence_endDate(new Date());
@ -10316,6 +10338,7 @@ const DisplayPartnerSession = (props) => {
setp_detail_sequence_title("");
setp_detail_sequence_comment("");
setp_detail_mode_animation("");
setp_detail_sequence_agenda("");
setp_detail_sequence_objectif("");
@ -10354,6 +10377,8 @@ const DisplayPartnerSession = (props) => {
form.append("objectif", p_detail_sequence_objectif);
form.append("commentaire", p_detail_sequence_comment);
form.append("mode_animation", p_detail_mode_animation);
//console.log(" form == ", form);
@ -10374,6 +10399,8 @@ const DisplayPartnerSession = (props) => {
setp_detail_sequence_title("");
setp_detail_sequence_comment("");
setp_detail_mode_animation("");
setp_detail_sequence_agenda("");
setp_detail_sequence_objectif("");
@ -10449,6 +10476,8 @@ const DisplayPartnerSession = (props) => {
setp_detail_sequence_title("");
setp_detail_sequence_comment("");
setp_detail_mode_animation("");
setp_detail_sequence_agenda("");
setp_detail_sequence_objectif("");
@ -10529,6 +10558,8 @@ const DisplayPartnerSession = (props) => {
setp_detail_sequence_title("");
setp_detail_sequence_comment("");
setp_detail_mode_animation("");
setp_detail_sequence_agenda("");
setp_detail_sequence_objectif("");
@ -10609,6 +10640,7 @@ const DisplayPartnerSession = (props) => {
setp_detail_sequence_title("");
setp_detail_sequence_comment("");
setp_detail_mode_animation("");
setp_detail_sequence_agenda("");
setp_detail_sequence_objectif("");
@ -10671,6 +10703,8 @@ const DisplayPartnerSession = (props) => {
form.append("objectif", p_detail_sequence_objectif);
form.append("commentaire", p_detail_sequence_comment);
form.append("mode_animation", p_detail_mode_animation);
form.append("_id", selected_sequence_id);
//console.log(" form == ", form);
@ -10692,6 +10726,8 @@ const DisplayPartnerSession = (props) => {
setp_detail_sequence_title("");
setp_detail_sequence_comment("");
setp_detail_mode_animation("");
setp_detail_sequence_agenda("");
setp_detail_sequence_objectif("");
@ -12857,6 +12893,8 @@ const DisplayPartnerSession = (props) => {
setp_detail_event_id("");
setp_detail_sequence_objectif("");
setp_detail_sequence_comment("");
setp_detail_mode_animation("");
setDialog_DIALOG_AGENDA_open(true);
};
@ -12893,6 +12931,13 @@ const DisplayPartnerSession = (props) => {
setp_detail_event_type("");
if (arg.event.extendedProps.local_mode_animation) {
setp_detail_mode_animation(arg.event.extendedProps.local_mode_animation);
}
else
setp_detail_mode_animation("");
if (arg.event.extendedProps.local_comment) {
setp_detail_sequence_comment(arg.event.extendedProps.local_comment);
}
@ -14732,6 +14777,8 @@ const DisplayPartnerSession = (props) => {
})
}
const [ent_account_automatic, setent_account_automatic] = React.useState(false);
const [lms_account_automatic, setlms_account_automatic] = React.useState(false);
return (
<div className="displaypartnersession">
@ -21374,7 +21421,7 @@ const DisplayPartnerSession = (props) => {
</div>
&nbsp;
&nbsp; <br />
<div class="separator">
<nav className="separator_label">
Dates & Prix </nav>
@ -21575,7 +21622,7 @@ const DisplayPartnerSession = (props) => {
</div>
</div>
&nbsp;
&nbsp; <br />
<div class="separator">
<nav className="separator_label">
Divers </nav>
@ -21698,9 +21745,6 @@ const DisplayPartnerSession = (props) => {
</div>}
</div>
@ -21778,6 +21822,50 @@ const DisplayPartnerSession = (props) => {
{/* -- end champs specifiques **/}
</div>
<div className="div_row" style={{ "border": "None" }}>
&nbsp; <br />
</div>
&nbsp;
<div class="separator">
<nav className="separator_label">
Configuration</nav>
</div>
<div style={{ width: '100%', float: 'left' }}>
<div style={{
display: 'flex', flexDirection: 'row', justifyContent: 'flex-start', width: '100%',
paddingLeft: '10px', flexWrap: 'wrap'
}}>
<div className="session_caract"> Création automatique compte ENT <br />
<Checkbox
disabled={!edit_session_form}
checked={ent_account_automatic}
onChange={(event) => {
setent_account_automatic(event.target.checked);
}
}
inputProps={{ 'aria-label': 'controlled' }}
/>
</div>
<div className="session_caract"> Création automatique compte LMS <br />
<Checkbox
disabled={!edit_session_form}
checked={lms_account_automatic}
onChange={(event) => {
setlms_account_automatic(event.target.checked);
}
}
inputProps={{ 'aria-label': 'controlled' }}
/>
</div>
</div>
</div>
<div className="div_row" style={{ "border": "None" }}>
&nbsp;
@ -22595,6 +22683,7 @@ const DisplayPartnerSession = (props) => {
setp_detail_sequence_agenda(newSelectionModel.row.agenda);
setp_detail_sequence_objectif(newSelectionModel.row.objectif);
setp_detail_sequence_comment(newSelectionModel.row.commentaire);
setp_detail_mode_animation(newSelectionModel.row.mode_animation);
Getall_List_Sequence_Ressource(newSelectionModel.row._id);

View File

@ -47,7 +47,7 @@ import { FcEditImage } from "react-icons/fc";
import { useHistory } from "react-router-dom";
import Module_Historique_Action from "./Module_Historique_Action";
import ToggleSwitch from "./ToggleSwitch";
import TextareaAutosize from '@mui/material/TextareaAutosize';
import Autocomplete from '@mui/material/Autocomplete';
import { FcSearch, FcViewDetails, FcOpenedFolder } from "react-icons/fc";
import Link from '@mui/material/Link';
@ -5570,6 +5570,7 @@ const DisplayPartnerStagiaires = (props) => {
// console.log(" #### selectedtraining_emails_liste = ", selectedtraining_emails_liste);
settab_email_pieces_jointes_result([]);
setDialog_PUSH_DOCUMENT_TO_ENT_open(true);
setent_push_doc_message_notif("");
}
}
@ -6921,6 +6922,7 @@ const DisplayPartnerStagiaires = (props) => {
const Dialog_PUSH_DOCUMENT_TO_ENT_handleClose = () => {
setDialog_PUSH_DOCUMENT_TO_ENT_open(false);
settab_email_pieces_jointes_result([]);
setent_push_doc_message_notif("");
}
const [tab_email_pieces_jointes_result, settab_email_pieces_jointes_result] = useState([]);
@ -7052,6 +7054,12 @@ const DisplayPartnerStagiaires = (props) => {
form.append("token", stored_cookie);
form.append("related_collection", "inscription");
form.append("list_email_dest", selectedtraining_emails_liste);
form.append("session_id", selected_session_id);
if (ent_push_doc_message_notif)
form.append("ent_push_doc_message_notif", ent_push_doc_message_notif);
else
form.append("ent_push_doc_message_notif", "");
// pièce jointe
@ -7107,6 +7115,9 @@ const DisplayPartnerStagiaires = (props) => {
})
}
const [ent_push_doc_message_notif, setent_push_doc_message_notif] = useState(false);
return (
<div className="displaypartnerstagiaire">
{isLoading && <div className="loader-container">
@ -7153,12 +7164,34 @@ const DisplayPartnerStagiaires = (props) => {
PaperComponent={PaperComponent}
aria-labelledby="draggable-dialog-title"
>
<DialogTitle style={{ cursor: 'move', fontFamily: "DM Sans" }} id="draggable-dialog-title"> &nbsp; </DialogTitle>
<DialogContent >
<DialogContentText>
<DialogContent className="DialogContent_width_session" style={{ background: '#fff', border: '1px solid #eaecee' }}>
<div className="gest_header"> MySy Information </div>
<div className="gest_content">
{' '}
<font> Ajouter un message à l'email de notification</font>
<br /> Message de notification : <br />
<TextareaAutosize
name="detail_soutenance_observation"
id="detail_soutenance_observation"
aria-label="minimum height"
minRows={3}
maxRows={5}
//placeholder="Minimum 3 rows"
style={{
border: "1px solid gainsboro", width: '100%', padding: '2px',
maxHeight: '5rem', height: '5rem', minHeight: '5rem', marginBottom: '3rem'
}}
value={ent_push_doc_message_notif}
onChange={(e) => {
setent_push_doc_message_notif(e.target.value);
}}
/>
</div>
</DialogContentText>
<div>
@ -11979,9 +12012,7 @@ const DisplayPartnerStagiaires = (props) => {
</div>
<div className="div_row">
Afficher ici les notes finales par UE xxx <br />
</div>
</div>}

View File

@ -0,0 +1,428 @@
.ent_student_header_automatic_files {
@media only screen and (max-width: 600px) {
position: fixed;
/* margin-top: 22px;*/
width: 100%;
opacity: 1;
background: #FFF;
.header_new_2025 {
border-bottom: 1px solid #dcdcdc;
width: 100%;
padding-left: 50px;
padding-top: 15px;
padding-bottom: 10px;
}
.header-content {
display: flex;
justify-content: space-between;
align-items: center;
width: 100%;
margin: 0 auto;
}
.logo-menu {
display: flex;
align-items: center;
gap: 40px;
margin-left: 2rem;
}
.logo {
width: 96px;
height: 32px;
}
.menu-list {
display: none;
}
.menu-link {
display: none;
}
.cta-login {
display: flex;
align-items: center;
gap: 12px;
}
.cta-buttons {
display: flex;
gap: 12px;
}
.hide_on_mobile {
display: none;
}
.btn {
padding: 10px 15px;
border-radius: 200px;
font-family: 'DM Sans', sans-serif;
font-size: 12px;
font-weight: 600;
line-height: 126%;
cursor: pointer;
}
.btn-primary {
background-color: #3e6ee3;
color: #ffffff;
border: none;
}
.btn-secondary {
background-color: transparent;
color: #4b5162;
border: 1px solid #c7c9ce;
}
.separator {
width: 1px;
height: 12px;
background-color: rgba(23, 23, 23, 0.1);
border-radius: 30px;
}
.login-link {
display: flex;
align-items: center;
gap: 8px;
cursor: pointer;
}
.user-icon {
width: 18px;
height: 18px;
}
.login-link span {
font-family: 'DM Sans', sans-serif;
font-size: 16px;
font-weight: 500;
color: #171717;
line-height: 122%;
}
}
@media only screen and (min-width: 601px) and (max-width: 991px) {
.header_new_2025 {
border-bottom: 1px solid #dcdcdc;
padding: 14px 48px;
width: 100%;
}
.header-content {
display: flex;
justify-content: space-between;
align-items: center;
width: 100%;
margin: 0 auto;
}
.logo-menu {
display: flex;
align-items: center;
gap: 10px;
max-width: 60%;
flex-direction: row;
}
.logo {
width: 96px;
height: 32px;
}
.menu-list {
display: flex;
align-items: center;
gap: 14px;
flex-direction: row;
flex-wrap: wrap;
}
.menu-link {
font-family: 'DM Sans', sans-serif;
font-size: 16px;
font-weight: 500;
color: #4b5162;
text-decoration: none;
line-height: 122%;
}
.cta-login {
display: flex;
align-items: center;
gap: 3px;
}
.cta-buttons {
display: flex;
gap: 1px;
}
.btn {
padding: 5px 8px;
border-radius: 200px;
font-family: 'DM Sans', sans-serif;
font-size: 12px;
font-weight: 700;
line-height: 126%;
cursor: pointer;
}
.btn-primary {
background-color: #3e6ee3;
color: #ffffff;
border: none;
}
.btn-secondary {
background-color: transparent;
color: #4b5162;
border: 1px solid #c7c9ce;
}
.separator {
width: 1px;
height: 12px;
background-color: rgba(23, 23, 23, 0.1);
border-radius: 30px;
}
.login-link {
display: flex;
align-items: center;
gap: 2px;
cursor: pointer;
}
.user-icon {
width: 18px;
height: 18px;
}
.login-link span {
font-family: 'DM Sans', sans-serif;
font-size: 16px;
font-weight: 500;
color: #171717;
line-height: 122%;
}
}
@media only screen and (min-width: 992px) and (max-width: 1199px) {
.header_new_2025 {
border-bottom: 1px solid #dcdcdc;
padding: 14px 48px;
width: 100%;
}
.header-content {
display: flex;
justify-content: space-between;
align-items: center;
width: 100%;
margin: 0 auto;
}
.logo-menu {
display: flex;
align-items: center;
gap: 10px;
width: 70%;
flex-direction: row;
}
.logo {
width: 96px;
height: 32px;
}
.menu-list {
display: flex;
align-items: center;
gap: 14px;
flex-direction: row;
flex-wrap: wrap;
}
.menu-link {
font-family: 'DM Sans', sans-serif;
font-size: 16px;
font-weight: 500;
color: #4b5162;
text-decoration: none;
line-height: 122%;
}
.cta-login {
display: flex;
align-items: center;
gap: 5px;
}
.cta-buttons {
display: flex;
gap: 5px;
}
.btn {
padding: 3px 10px;
border-radius: 200px;
font-family: 'DM Sans', sans-serif;
font-size: 14px;
font-weight: 700;
line-height: 126%;
cursor: pointer;
}
.btn-primary {
background-color: #3e6ee3;
color: #ffffff;
border: none;
}
.btn-secondary {
background-color: transparent;
color: #4b5162;
border: 1px solid #c7c9ce;
}
.separator {
width: 1px;
height: 5px;
background-color: rgba(23, 23, 23, 0.1);
border-radius: 30px;
}
.login-link {
display: flex;
align-items: center;
gap: 8px;
cursor: pointer;
}
.user-icon {
width: 18px;
height: 18px;
}
.login-link span {
font-family: 'DM Sans', sans-serif;
font-size: 16px;
font-weight: 500;
color: #171717;
line-height: 122%;
}
}
@media only screen and (min-width: 1200px) {
.header_new_2025 {
border-bottom: 1px solid #dcdcdc;
padding: 14px 48px;
width: 100%;
}
.header-content {
display: flex;
justify-content: space-between;
align-items: center;
width: 100%;
margin: 0 auto;
}
.logo-menu {
display: flex;
align-items: center;
gap: 40px;
}
.logo {
width: 96px;
height: 32px;
}
.menu-list {
display: flex;
align-items: center;
gap: 24px;
}
.menu-link {
font-family: 'DM Sans', sans-serif;
font-size: 16px;
font-weight: 500;
color: #4b5162;
text-decoration: none;
line-height: 122%;
}
.cta-login {
display: flex;
align-items: center;
gap: 12px;
}
.cta-buttons {
display: flex;
gap: 12px;
}
.btn {
padding: 12px 24px;
border-radius: 200px;
font-family: 'DM Sans', sans-serif;
font-size: 14px;
font-weight: 700;
line-height: 126%;
cursor: pointer;
}
.btn-primary {
background-color: #3e6ee3;
color: #ffffff;
border: none;
}
.btn-secondary {
background-color: transparent;
color: #4b5162;
border: 1px solid #c7c9ce;
}
.separator {
width: 1px;
height: 12px;
background-color: rgba(23, 23, 23, 0.1);
border-radius: 30px;
}
.login-link {
display: flex;
align-items: center;
gap: 8px;
cursor: pointer;
}
.user-icon {
width: 18px;
height: 18px;
}
.login-link span {
font-family: 'DM Sans', sans-serif;
font-size: 16px;
font-weight: 500;
color: #171717;
line-height: 122%;
}
}
}

View File

@ -0,0 +1,322 @@
import React, { useState, useEffect } from 'react';
import './ENT_Student_Header.css';
import moment from "moment";
import { getCookie } from 'react-use-cookie';
import { useHistory } from "react-router-dom";
import Header_MySy_Logo from '../../img_new_design_2025/header_mysy_logo.png';
import Header_User from '../../img_new_design_2025/header_user.png';
import Dialog from '@mui/material/Dialog';
import DialogActions from '@mui/material/DialogActions';
import DialogContent from '@mui/material/DialogContent';
import DialogContentText from '@mui/material/DialogContentText';
import DialogTitle from '@mui/material/DialogTitle';
import Button from '@mui/material/Button';
import { useCookies } from "react-cookie";
import CancelPresentationIcon from '@mui/icons-material/CancelPresentation';
import { makeStyles } from "@material-ui/core/styles";
import Paper from '@material-ui/core/Paper';
import Draggable from 'react-draggable';
import { IconButton } from '@material-ui/core';
function PaperComponent(props) {
return (
<Draggable
handle="#draggable-dialog-title"
cancel={'[class*="MuiDialogContent-root"]'}
>
<Paper {...props} />
</Draggable>
);
}
const useStyles = makeStyles((theme) => ({
dialog: {
position: 'absolute',
// left: 10,
top: 400
},
paper: {
overflowY: 'unset',
},
customizedButton: {
position: 'absolute',
left: '98%',
top: '-3%',
backgroundColor: 'lightgray',
color: 'gray',
},
}));
const ENT_Student_Header = () => {
const history = useHistory();
const classes = useStyles();
const [userconnected, setuserconnected] = useState("0");
const [someoneconnected, setsomeoneconnected] = useState("0");
const [partnerconnected, setpartnerconnected] = useState("0");
const stored_user = getCookie('tokenmysych');
const stored_part = getCookie('tokenmysypart');
const [cookie, setCookie, removeCookie] = useCookies(['tokenmysych'], { path: '/' });
const [partcookie, setpartCookie, removepartCookie] = useCookies(['tokenmysypart'], { path: '/' });
const [PartnerMenu, setPartnerMenu] = React.useState(null);
const [AccountMenu, setAccountMenu] = React.useState(null);
const [ProduitMenu, setproduitMenu] = React.useState(null);
useEffect(() => {
var local_user_connect = 0;
var local_part_connect = 0;
if (typeof (stored_user) === "undefined" || String(stored_user) === '') {
setuserconnected("0");
local_user_connect = 0;
} else {
setuserconnected("1");
setsomeoneconnected("1");
local_user_connect = 1;
//alert(" user connected OK");
}
if (typeof (stored_part) === "undefined" || String(stored_part) === '') {
setpartnerconnected("0");
local_part_connect = 0;
} else {
setpartnerconnected("1");
setsomeoneconnected("1");
local_part_connect = 1;
//alert(" partner connected OK");
}
}, []);
const handleAccountCreation = () => {
setAccountMenu(null);
history.push("/signup/")
};
const handleMyAccount = () => {
setAccountMenu(null);
history.push("/mysy-user-account")
};
const handleAccountConnexion = () => {
setAccountMenu(null);
history.push("/signin/")
};
const handleMyPartnerAccount = () => {
setAccountMenu(null);
history.push("/Partner")
};
function handleAccountConnexion_v2() {
if (String(userconnected) === String("1")) {
handleMyAccount();
}
else if (String(partnerconnected) === String("1")) {
handleMyPartnerAccount();
}
}
const [Dialog_1_open, setDialog_1_open] = React.useState(false);
const Dialog_1_handleClose = () => {
};
const Dialog_1_handleClose_buton = () => {
setDialog_1_open(false);
};
function part_logout_confirmation() {
/* si c'est une connexion partner qui est active */
if (typeof (stored_part) != "undefined") {
const stored_cookie = getCookie('tokenmysypart');
var acces_right_token_name = stored_cookie + "_uar";
setpartCookie("tokenmysypart", "", { path: '/' });
setpartCookie(acces_right_token_name, "", { path: '/' });
removeCookie(acces_right_token_name, { path: '/' });
setpartCookie("mysy_session_display_view", "", { path: '/' });
setpartCookie("mysy_menu_gauche_reduit", "", { path: '/' });
setpartCookie("mysy_catalog_data_row_grouped_by", "", { path: '/' });
removeCookie("tokenmysypart", { path: '/' });
removeCookie("mysy_session_display_view", { path: '/' });
removeCookie("mysy_menu_gauche_reduit", { path: '/' });
removeCookie("mysy_catalog_data_row_grouped_by", { path: '/' });
}
setsomeoneconnected("0");
setDialog_1_open(false);
history.push("/recherche-formation");
}
function user_logout_confirmation() {
/* si c'est une connexion partner qui est active */
if (typeof (stored_user) != "undefined") {
const stored_cookie = getCookie('tokenmysych');
var acces_right_token_name = stored_cookie + "_uar";
setpartCookie("tokenmysych", "", { path: '/' });
setpartCookie(acces_right_token_name, "", { path: '/' });
removeCookie(acces_right_token_name, { path: '/' });
removeCookie("tokenmysych", { path: '/' });
}
history.push("/ent_student");
}
return (
<div className='ent_student_header_automatic_files'>
{/*** GESTION Deconnexion */}
<Dialog
open={Dialog_1_open}
// onClose={Dialog_1_handleClose}
className="displaypartnersession"
static
onClose={() => null}
PaperProps={{
className: classes.paper, // Apply the paper style
style: {
overflowY: 'unset',
position: 'absolute',
top: '20rem',
margin: "2px",
},
}}
hideBackdrop={true}
disableScrollLock
classes={{
paper: classes.dialog
}}
PaperComponent={PaperComponent}
aria-labelledby="draggable-dialog-title"
>
<DialogTitle style={{ cursor: 'move', fontFamily:"DM Sans"}} id="draggable-dialog-title" >MySy Information</DialogTitle>
<DialogContent className="DialogContent_width">
<DialogContentText>
Confirmez la deconnexion de l'ENT <br />
</DialogContentText>
</DialogContent>
<DialogActions>
<IconButton
//autoFocus
onClick={Dialog_1_handleClose_buton}
color="primary"
className={classes.customizedButton}
>
<CancelPresentationIcon />
</IconButton>
<div className="div_row">
<div className="div_row_gauche">
<Button
onClick={(e) => {
if (partnerconnected && String(partnerconnected) === '1')
part_logout_confirmation();
if (userconnected && String(userconnected) === '1')
user_logout_confirmation();
}}
className="bton_enreg_dialog">Deconnexion</Button>
</div>
<div className="div_row_droite" style={{ "textAlign": 'center' }}>
<Button onClick={Dialog_1_handleClose_buton} className="bton_annule_dialog" >Annuler</Button>
</div>
</div>
</DialogActions>
</Dialog>
{/*** Fin GESTION Deconnexion */}
<header className="header_new_2025">
<div className="header-content">
<div className="logo-menu">
<img src={Header_MySy_Logo} alt="Logo MySy" className="logo" style={{ cursor: 'pointer' }} onClick={(e) => {
// e.preventDefault();
history.push("/");
}} />
<nav className="menu-list">
<a href="/apropos" className="menu-link">À propos</a>
<a href="/fonctionnalites" className="menu-link">Fonctionnalités</a>
<a href="#" className="menu-link">
<nav onClick={(e) => {
history.push("/tarif/#debut");
// window.open("/tarif/#debut", "_self");
}}>Tarifs </nav>
</a>
<a href="/Recherche-Article-formation" className="menu-link">Blog</a>
<div className="separator"></div>
<a href="/marketplace" className="menu-link">Marketplace</a>
</nav>
</div>
<div className="cta-login">
<div className="cta-buttons">
<button className="btn btn-primary" onClick={(e) => {
e.preventDefault();
var date2 = new Date();
const format2 = "YYYY-MM";
var dateTime2 = moment(date2).format(format2);
window.open(
"https://calendly.com/mysytraining/demo-mysy-training-solution?month=" + String(dateTime2),
'_blank'
);
}}>Réserver une démo</button>
</div>
<div className="cta-buttons hide_on_mobile">
{String(someoneconnected) !== String("1") && <button className="btn btn-secondary" onClick={handleAccountCreation}>Créer un compte</button>}
{String(someoneconnected) === String("1") && <button className="btn btn-secondary" onClick={handleAccountConnexion_v2}>Mon compte</button>}
</div>
<div className="separator hide_on_mobile"></div>
{String(someoneconnected) !== String("1") && <div className="login-link hide_on_mobile" onClick={handleAccountConnexion}>
<img src={Header_User} alt="User icon" className="user-icon hide_on_mobile" />
<span className='hide_on_mobile'>Connexion</span>
</div>}
{String(someoneconnected) === String("1") && <div className="login-link hide_on_mobile" onClick={(e) => setDialog_1_open(true)}>
<img src={Header_User} alt="User icon" className="user-icon hide_on_mobile" />
<span className='hide_on_mobile'>Deconnexion</span>
</div>}
</div>
</div >
</header >
</div >
);
};
export default ENT_Student_Header;

View File

@ -441,8 +441,8 @@ const Ent_Student_Affichage_Ftion_Grid = (props) => {
<p style={{ width: '100%', float: 'left' }}>
<p className="formation_prix" style={{ width: '100%', float: 'left' }}>{props.formation.business_prices[0].discounted_price} HT&nbsp;
<font className='training_price_barre' style={{ fontSize:'14px' }}> {props.formation.price} HT &nbsp;</font>
<font className='discount_block' style={{ fontSize:'14px' }}> ({props.formation.business_prices[0].discount} %) </font></p>
<font className='training_price_barre' style={{ fontSize: '14px' }}> {props.formation.price} HT &nbsp;</font>
<font className='discount_block' style={{ fontSize: '14px' }}> ({props.formation.business_prices[0].discount} %) </font></p>
</p>}
<p className="formation_description"> {String(parse(String(props.formation.description).replace(/(<([^>]+)>)/ig, ''))).substring(0, 80)}...</p>
@ -454,23 +454,14 @@ const Ent_Student_Affichage_Ftion_Grid = (props) => {
<nav className="block_cats_bton_detail_text"
onClick={(e) => {
e.preventDefault();
if (props.formation.url && props.formation.url.length > 5) {
props.display_detail_from_grid(props.formationid, props.formation_id, props.session_id,
props.inscription_id, props.class_id)
window.open(
props.formation.url,
'_blank'
);
} else {
window.open(
"/detaile-formation/" + props.formation.internal_url,
'_blank'
);
}
}}> Voir les détails </nav></button>
</div>
</div>
</div>
)

View File

@ -26,7 +26,7 @@ function Module_Connexion_Ent_Student() {
const [initpasswd, setinitpasswd] = useState();
const [result, setResult] = useState("");
const [myApiResponse, setmyApiResponse] = useState("false");
const url_login = process.env.REACT_APP_API_URL + "myclass/api/login/";
const url_login = process.env.REACT_APP_API_URL + "myclass/api/Ent_Student_login/";
const random1 = Math.floor(Math.random() * 10);
const random2 = Math.floor(Math.random() * 10);
@ -84,7 +84,7 @@ function Module_Connexion_Ent_Student() {
var partner_connexion = "";
var url_login = "";
url_login = process.env.REACT_APP_API_URL + "myclass/api/login/";
url_login = process.env.REACT_APP_API_URL + "myclass/api/Ent_Student_login/";
setmenucompte("user");
partner_connexion = "user";

View File

@ -14,7 +14,7 @@ import Visibility from '@mui/icons-material/Visibility';
import VisibilityOff from '@mui/icons-material/VisibilityOff';
import 'react-tooltip/dist/react-tooltip.css'
import { Tooltip } from 'react-tooltip'
import client_intranet from "../mysy_img/client_intranet.jpg";
function Module_Connexion_Intranet_Client() {
const [isconnected, setisconnected] = useState("");
@ -102,7 +102,7 @@ function Module_Connexion_Intranet_Client() {
formData.append("email", mymail);
formData.append("pwd", mypwd);
formData.append("type", "user");
formData.append("type", "user");
var re = /\S+@\S+\.\S+/;
if (re.test(mymail) === false) {
@ -375,138 +375,154 @@ function Module_Connexion_Intranet_Client() {
<div className="block_centrer">
<div className="display_screen_600_901">
<div className="div_centre_master">
<div className="div_centre_002">
<Button variant="outlined" onClick={menu_user_account} className="signin_menu"
id="user_account" name="user_account"
style={{ "float": "left", "textAlign": "center", "height": "3rem" }}>Intranet Client</Button>
<div style={{ width: '100%', }}>
<h3 style={{ fontFamily: 'DM Sans' }}> Bienvenue sur l'Intranet </h3>
</div>
<div style={{ width: '100%', }}>
<div style={{ width: '50%', float: 'left' }}>
<img src={client_intranet} style={{ height: '100%', marginTop:'5rem' }} />
</div>
<div className="div_centre">
<div style={{ width: '50%', float: 'left', paddingTop: '2rem' }}>
<div className="div_row_bis" >
<FormGroup>
<Label style={{ fontSize: "14px" }}>Votre adresse email</Label>
<Input type="email" placeholder="Email" name="email" />
</FormGroup>
<div style={{ height: '10px' }}> &nbsp; </div>
<div className="div_centre_master">
<div className="div_centre_002">
<Button variant="outlined" onClick={menu_user_account} className="signin_menu"
id="user_account" name="user_account"
style={{ "float": "left", "textAlign": "center", "height": "3rem" }}>Intranet Client</Button>
<FormGroup>
<div className="label_pwd_div">
<div className="label_div" >
<Label style={{ fontSize: "14px" }}>Votre mot de passe </Label>
</div>
<div className="show_pwd_div" onClick={handleClickShowPassword}>
{currentpawdvisible ? <Visibility style={{ fontSize: '15px' }} /> : <VisibilityOff style={{ fontSize: '15px' }} />}
</div>
</div>
<Input type="password" placeholder="Password" name="pwd" />
</FormGroup>
</div>
<div className="div_centre">
<div className="div_row_bis" >
<FormGroup>
<Label style={{ fontSize: "14px" }}>Votre adresse email</Label>
<Input type="email" placeholder="Email" name="email" />
</FormGroup>
<div style={{ height: '10px' }}> &nbsp; </div>
{String(initpasswd) === String("true") && closepopup === 1 && <div className="okUpdateData">
La demande reinitialisation a bien ete prise en compte.
Verifiez votre boite email.
</div>}
<div className="forgot_pass" >
{String(initpasswd) !== String("true") && String(closepopup) !== String("1")
&& <Popup trigger={<button className="avisformation"> Mot de passe oublié</button>}
position="center" className="signin popup-reset-pwd">
<div className="signin-content popup-reset-pwd-content">
<div className="div_row" style={{
"textAlign": "center", "background": "orangered",
"height": "2rem", "paddingTop": "5px", "fontSize": "14px", "fontWeight": "bold"
}}
> Modifier le mot de passe</div>
<br />
<FormGroup>
<div className="label_pwd_div">
<div className="label_div" >
<Label style={{ fontSize: "14px" }}>Votre mot de passe </Label>
</div>
<div className="show_pwd_div" onClick={handleClickShowPassword}>
{currentpawdvisible ? <Visibility style={{ fontSize: '15px' }} /> : <VisibilityOff style={{ fontSize: '15px' }} />}
</div>
<label for="exampleFormControlTextarea1">Saisir votre email</label>
<br />
<input type="text" id="resetemailvalue" name="resetemailvalue" rows="1" cols="20"
className="zone_mail" />
<br />
</div>
<Input type="password" placeholder="Password" name="pwd" />
</FormGroup>
<div>
<br />
<Tooltip className="tooltip_css" id="is_user_or_pro-tooltip" />
<a data-tooltip-id="is_user_or_pro-tooltip" data-tooltip-html="Compte partenaire : création et gestion de formation <br/>
compte utilisateur : non autorisé à la création et gestion de formation">
<label for="is_user_or_pro">Compte partenaire ou utilisateur * ?</label>
{String(initpasswd) === String("true") && closepopup === 1 && <div className="okUpdateData">
La demande reinitialisation a bien ete prise en compte.
Verifiez votre boite email.
</div>}
<div className="forgot_pass" >
{String(initpasswd) !== String("true") && String(closepopup) !== String("1")
&& <Popup trigger={<button className="avisformation"> Mot de passe oublié</button>}
position="center" className="signin popup-reset-pwd">
<div className="signin-content popup-reset-pwd-content">
<div className="div_row" style={{
"textAlign": "center", "background": "orangered",
"height": "2rem", "paddingTop": "5px", "fontSize": "14px", "fontWeight": "bold"
}}
> Modifier le mot de passe</div>
<br />
<label for="exampleFormControlTextarea1">Saisir votre email</label>
<br />
<input type="text" id="resetemailvalue" name="resetemailvalue" rows="1" cols="20"
className="zone_mail" />
<br />
<select id="is_user_or_pro" name="is_user_or_pro" style={{
"width": '100%', "height": "2.5rem",
'marginTop': '5px'
}}
onChange={(event) => settypecompte(event.target.value)}>
<option selected value="">Choisir </option>
<option value="partner">Partenaire </option>
<option value="user">Utilisateur </option>
</select>
</a>
<br />
</div>
<div>
<br />
<Tooltip className="tooltip_css" id="is_user_or_pro-tooltip" />
<a data-tooltip-id="is_user_or_pro-tooltip" data-tooltip-html="Compte partenaire : création et gestion de formation <br/>
compte utilisateur : non autorisé à la création et gestion de formation">
<label for="is_user_or_pro">Compte partenaire ou utilisateur * ?</label>
<br />
<select id="is_user_or_pro" name="is_user_or_pro" style={{
"width": '100%', "height": "2.5rem",
'marginTop': '5px'
}}
onChange={(event) => settypecompte(event.target.value)}>
<option selected value="">Choisir </option>
<div className="text_pwd_crit" style={{ "textAlign": "center" }}>
Je ne suis pas un robot <br />
<div >
<option value="partner">Partenaire </option>
<option value="user">Utilisateur </option>
</select>
</a>
<br />
<div name="pasrobot" > {random1} + {random2} = <input
type='text'
name='sommerandom'
id='sommerandom'
{...register('sommerandom', {
required: { value: true, message: 'sommes de valeurs' },
maxLength: {
value: 30,
}
})}
className="pasrobot_css"
placeholder='Le total est ?'
/>
{errors.sommerandom && (
<span className='koUpdateData'>la sommes est incorrect</span>
)}
</div>
<div className="text_pwd_crit" style={{ "textAlign": "center" }}>
Je ne suis pas un robot <br />
<div >
<div name="pasrobot" > {random1} + {random2} = <input
type='text'
name='sommerandom'
id='sommerandom'
{...register('sommerandom', {
required: { value: true, message: 'sommes de valeurs' },
maxLength: {
value: 30,
}
})}
className="pasrobot_css"
placeholder='Le total est ?'
/>
{errors.sommerandom && (
<span className='koUpdateData'>la sommes est incorrect</span>
)}
</div>
</div>
</div>
<button type="submit" class="btn btn-secondary btn-sm" onClick={resetpasswd_ok}>Envoyer</button> &nbsp; &nbsp; &nbsp;
<button type="submit" class="btn btn-secondary btn-sm" onClick={closepopupinitpwd}> Annuler</button>
</div>
</div>
<button type="submit" class="btn btn-secondary btn-sm" onClick={resetpasswd_ok}>Envoyer</button> &nbsp; &nbsp; &nbsp;
<button type="submit" class="btn btn-secondary btn-sm" onClick={closepopupinitpwd}> Annuler</button>
</div>
</Popup>
}
</div>
</div>
<FormGroup>
&nbsp;
</FormGroup>
<div className="div_row22">
<Button variant="contained" color="success" className="div_row22 btn_login button" onClick={onSubmit}>Connectez-Vous</Button>
</div>
</Popup>
}
</div>
</div>
<FormGroup>
&nbsp;
</FormGroup>
<div className="div_row22">
<Button variant="contained" color="success" className="div_row22 btn_login button" onClick={onSubmit}>Connectez-Vous</Button>
</div>
</div>
</div>
{isconnected === "false" && <div className="erreurconnexion">
<br />

View File

@ -388,7 +388,7 @@ const Module_Ent_Mes_Formations = (props) => {
setLoading(true);
axios.post(myurl, form).then(res => {
// console.log(" In Getall_Sequence_Of_Session res.data.status = " + res.data.status);
// console.log(" In Getall_Sequence_Of_Session res.data.message r_class = " + res.data.message);
console.log(" In Getall_Sequence_Of_Session res.data.message r_class = " + res.data.message);
setLoading(false);
if (String(res.data.status) === String("true")) {
@ -414,6 +414,15 @@ const Module_Ent_Mes_Formations = (props) => {
var local_objectif = JSON.parse(x).objectif;
var local_session_id = JSON.parse(x).session_id;
var local_session_comment = JSON.parse(x).commentaire;
var local_mode_animation = JSON.parse(x).mode_animation;
var local_session_color = "#3788d8";
if (local_mode_animation === "1") {
// sequence en distantiel, on va mettre un code couleur
local_session_color = "#4ea860"
}
var local_type = JSON.parse(x).type;
@ -424,9 +433,11 @@ const Module_Ent_Mes_Formations = (props) => {
"title": local_title,
"start": local_start,
"end": local_end,
"local_mode_animation": local_mode_animation,
"local_agenda": local_agenda,
"local_objectif": local_objectif,
"local_comment": local_session_comment,
"color": local_session_color,
"type": local_type,
};
new_data2.push(node);
@ -461,12 +472,21 @@ const Module_Ent_Mes_Formations = (props) => {
}
const New_Option_mode_animation = [
{ "id": "1", "label": "Distanciel", "value": "1" },
{ "id": "2", "label": "Hybride", "value": "2" },
{ "id": "0", "label": "Présentiel", "value": "0" },
{ "id": "", "label": "", "value": "" },
]
const [selected_id, setselected_id] = useState("");
const [gridline_id, setgridline_id] = useState("");
const [selected_session_id, setselected_session_id] = useState("");
const [selected_inscription_id, setselected_inscription_id] = useState("");
const [selected_class_external_code, setselected_class_external_code] = useState("");
const [selected_code_session, setselected_code_session] = useState("");
const [Get_Given_Class_Data_api, setGet_Given_Class_Data_api] = useState();
const [Get_Given_Class_Data_message, setGet_Given_Class_Data_message] = useState();
@ -568,12 +588,12 @@ const Module_Ent_Mes_Formations = (props) => {
}
}
function handleClick_Class_Selected_From_Line(selected_row_id) {
function handleClick_Class_Selected_From_Line(associated_session_id, associated_inscription_id) {
// Recuperer le planning liée à cette formation
Getall_Sequence_Of_Session(selected_row_id.associated_session_id);
Get_Inscrit_Notes_Of_Evaluations(selected_row_id.associated_inscription_id, selected_row_id.associated_session_id);
Get_List_Of_All_PJ(selected_row_id.associated_inscription_id);
Getall_Sequence_Of_Session(associated_session_id);
Get_Inscrit_Notes_Of_Evaluations(associated_inscription_id, associated_session_id);
Get_List_Of_All_PJ(associated_inscription_id);
}
@ -582,7 +602,9 @@ const Module_Ent_Mes_Formations = (props) => {
return (
<>
<b>{eventInfo.timeText}</b><br />
<i>{eventInfo.event.title}</i>
<i>{eventInfo.event.title}</i><br />
{eventInfo.event.extendedProps.local_mode_animation && String(eventInfo.event.extendedProps.local_mode_animation) === "1" &&
<i><b>Distanciel</b></i>}
</>
)
};
@ -662,6 +684,17 @@ const Module_Ent_Mes_Formations = (props) => {
setp_detail_sequence_comment("");
if (arg.event.extendedProps.local_mode_animation) {
if (String(arg.event.extendedProps.local_mode_animation) === "1")
setp_detail_mode_animation_label("Distanciel");
else if (String(arg.event.extendedProps.local_mode_animation) === "2")
setp_detail_mode_animation_label("Hybride");
else if (String(arg.event.extendedProps.local_mode_animation) === "0")
setp_detail_mode_animation_label("Présentiel");
}
else
setp_detail_mode_animation_label("");
if (arg.event.extendedProps.local_objectif) {
setp_detail_sequence_objectif(arg.event.extendedProps.local_objectif);
}
@ -1181,7 +1214,7 @@ const Module_Ent_Mes_Formations = (props) => {
var file_name = event.target.id;
var url = process.env.REACT_APP_API_URL + "myclass/api/Get_Ent_Student_Stored_Downloaded_File/" + token + "/" + file_name+"/"+props.apprenant_id;
var url = process.env.REACT_APP_API_URL + "myclass/api/Get_Ent_Student_Stored_Downloaded_File/" + token + "/" + file_name + "/" + props.apprenant_id;
setLoading(true);
axios.get(url, { responseType: 'blob', },)
@ -1556,10 +1589,34 @@ const Module_Ent_Mes_Formations = (props) => {
// -- end gestion pièces jointes
const [p_detail_mode_animation, setp_detail_mode_animation] = useState("");
const [p_detail_mode_animation_label, setp_detail_mode_animation_label] = useState("");
const [affichage_class, setaffichage_class] = useState("grid");
function display_detail_from_grid(localid, local_id, local_session_id, local_inscription_id,
local_class_id) {
setselected_id(local_id);
setgridline_id(localid);
setselected_session_id(local_session_id);
setselected_inscription_id(local_inscription_id);
submenu_detail();
Get_Given_Class_Data(local_id);
Get_List_UE_From_Class_Id(local_class_id);
Getall_Class_List_Evalution(local_class_id);
handleClick_Class_Selected_From_Line(local_session_id, local_inscription_id);
var line = New_Get_List_Ent_Formation_result[localid];
setselected_class_external_code(line.external_code);
setselected_code_session(line.session_code_session);
}
return (
<div className="module_ent_mes_formations" >
@ -1620,10 +1677,8 @@ const Module_Ent_Mes_Formations = (props) => {
</DialogContentText>
<div className="session_caract_Dialog" >
<nav style={{ "float": "left", "width": "30%", "paddingTop": "15px" }}> Type </nav>
<nav style={{ "float": "right", "width": "65%" }}>
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
@ -1638,6 +1693,23 @@ const Module_Ent_Mes_Formations = (props) => {
</nav>
</div>
<div className="session_caract_Dialog" >
<nav style={{ "float": "left", "width": "30%", "paddingTop": "15px" }}> Animation </nav>
<nav style={{ "float": "right", "width": "65%" }}>
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
name="event_dialog_event_type"
id="event_dialog_event_type"
fullWidth
value={p_detail_mode_animation_label}
disabled={true}
/>
</nav>
</div>
<div className="session_caract_Dialog" > Titre
@ -1777,7 +1849,7 @@ const Module_Ent_Mes_Formations = (props) => {
<h3 style={{ fontFamily: 'DM Sans' }}> Mes Formations </h3>
{/*<div>
<div className="titre1"> Utilisez les filtres !</div>
<div className="div_row" style={{ "marginBottom": "5px" }}>
@ -2075,12 +2147,17 @@ const Module_Ent_Mes_Formations = (props) => {
setgridline_id(newSelectionModel.row.id);
setselected_session_id(newSelectionModel.row.associated_session_id);
setselected_inscription_id(newSelectionModel.row.associated_inscription_id);
setselected_class_external_code(newSelectionModel.row.external_code);
setselected_code_session(newSelectionModel.row.session_code_session);
submenu_detail();
Get_Given_Class_Data(newSelectionModel.row._id);
Get_List_UE_From_Class_Id(newSelectionModel.row.class_id);
Getall_Class_List_Evalution(newSelectionModel.row.class_id);
handleClick_Class_Selected_From_Line(newSelectionModel.row);
handleClick_Class_Selected_From_Line(newSelectionModel.row.associated_session_id, newSelectionModel.row.associated_inscription_id);
}}
rowsPerPageOptions={[10]}
@ -2165,19 +2242,13 @@ const Module_Ent_Mes_Formations = (props) => {
{New_Get_List_Ent_Formation_result && New_Get_List_Ent_Formation_result.map((formation) => (
<div className="block_formation" >
<Ent_Student_Affichage_Ftion_Grid formation={(formation)} key={(formation).title}
ondblclick={() => {
console.log(" double client sur formation = ", formation)
setselected_id(formation._id);
setgridline_id(formation.id);
setselected_session_id(formation.associated_session_id);
setselected_inscription_id(formation.associated_inscription_id);
submenu_detail();
session_id={formation.associated_session_id}
inscription_id={formation.associated_inscription_id}
formation_id={formation._id}
formationid={formation.id}
class_id={formation.class_id}
display_detail_from_grid={display_detail_from_grid}
Get_Given_Class_Data(formation._id);
Get_List_UE_From_Class_Id(formation.class_id);
Getall_Class_List_Evalution(formation.class_id);
handleClick_Class_Selected_From_Line(formation);
}}
/>
</div>
))}
@ -2197,6 +2268,10 @@ const Module_Ent_Mes_Formations = (props) => {
<Button variant="outlined" onClick={submenu_piece_jointe} className="detail_class_submenu" id='piece_jointe' name='contrat'>Pièces Jointes </Button>
</div>
}
{selected_id && String(selected_id).length > 0 && <div className="div_row">
<nav style={{ textAlign: 'center', padding: '10px', fontFamily: 'DM Sans' }}> Formation &nbsp; &nbsp; : <b>{selected_class_external_code} - {selected_code_session} </b> &nbsp; </nav>
</div>}
{
String(submenu) === "detail" && Get_Given_Class_Data_result && Get_Given_Class_Data_result.length > 0 && <div className="div_row" >
@ -2458,7 +2533,7 @@ const Module_Ent_Mes_Formations = (props) => {
</div>
<div className="div_row" style={{ "padding": "5px" }}>
{/* <div className="div_row" style={{ "padding": "5px" }}>
<div style={{ "fontSize": "12px" }}>
<label htmlFor="upload-photo">
@ -2514,10 +2589,10 @@ const Module_Ent_Mes_Formations = (props) => {
{Record_All_PJ_api && String(Record_All_PJ_api) === "false" && <div className="koUpdateData"> {Record_All_PJ_message} </div>}
</div>
</div>*/}
{file_1_name && file_1_name.name && <div className="div_row">
{/*file_1_name && file_1_name.name && <div className="div_row">
<div className="div_row_gauche">
<Button variant="contained" onClick={Record_All_PJ}
@ -2525,14 +2600,14 @@ const Module_Ent_Mes_Formations = (props) => {
</div>
</div>}
</div>*/}
{Get_List_Of_All_PJ_result && <div className="div_row" style={{ "padding": "5px" }}>
<div className="div_row">
Liste des pièces jointes <br />
<div className="div_row">
{Get_List_Of_All_PJ_result && Get_List_Of_All_PJ_result.map((val) => (
<div className="div_row_list_pj" >
<div className="div_row_list_pj" style={{ fontFamily: "DM Sans", fontSize: '14px' }}>
<nav style={{ "color": "green", "cursor": "pointer" }} onClick={Download_one_attached_document} name={(JSON.parse(val).file_name)} id={(JSON.parse(val).file_name)}> Télécharger &nbsp;<i> {(JSON.parse(val).file_business_object)}</i> </nav> <br />
{/*<Popup
trigger={

View File

@ -162,6 +162,21 @@ const Module_Session_Planification = (props) => {
{ field: 'sequence_start', headerName: 'Debut', minWidth: 200, flex: 1, hide: false, editable: false },
{ field: 'sequence_end', headerName: 'Fin', minWidth: 200, flex: 1, hide: false, editable: false },
{
field: 'mode_animation', headerName: 'Animation', minWidth: 150, flex: 1,
renderCell: (cellValues) => {
return (
<div style={{ paddingLeft: "5px", paddingRight: "15px", "display": "block", wordBreak: "break-all" }}>
{cellValues.row.mode_animation && String(cellValues.row.mode_animation) === "1" && "Distanciel"}
{cellValues.row.mode_animation && String(cellValues.row.mode_animation) === "0" && "Présentiel"}
{cellValues.row.mode_animation && String(cellValues.row.mode_animation) === "2" && "Hybride"}
</div>
);
}
},
{ field: 'agenda', headerName: 'Agenda', minWidth: 200, flex: 1, hide: false, editable: false, renderCell: (params) => <Display_Colunm_text {...params} />, },
{ field: 'objectif', headerName: 'Objectif', width: 0, flex: 0, hide: true, editable: false, },
{ field: 'commentaire', headerName: 'Commentaire', width: 0, flex: 0, hide: true, editable: false, },
@ -183,6 +198,7 @@ const Module_Session_Planification = (props) => {
setp_detail_sequence_agenda(cellValues.row.agenda);
setp_detail_sequence_objectif(cellValues.row.objectif);
setp_detail_sequence_comment(cellValues.row.commentaire);
setp_detail_mode_animation(cellValues.row.mode_animation);
Getall_List_Sequence_Ressource(cellValues.row._id);
setselected_sequence_id(cellValues.row._id);
setdisplay_detail_sequence("1");
@ -236,6 +252,8 @@ const Module_Session_Planification = (props) => {
setp_detail_sequence_objectif(cellValues.row.objectif);
setp_detail_sequence_comment(cellValues.row.commentaire);
setp_detail_mode_animation(cellValues.row.mode_animation);
setp_detail_sequence_groupe_apprenant_id(cellValues.row.grp_apprenant_id);
if (cellValues.row.ue_id) {
@ -612,14 +630,15 @@ const Module_Session_Planification = (props) => {
const renderEventContent = (eventInfo) => {
//console.log(eventInfo.event);
// console.log(" TOTOTOTOTO ", eventInfo.event);
return (
<>
<b>{eventInfo.timeText}</b><br />
<i>{eventInfo.event.title}</i><br />
<i>{eventInfo.event.extendedProps.grp_code}</i>
{eventInfo.event.extendedProps.local_mode_animation && String(eventInfo.event.extendedProps.local_mode_animation) === "1" &&
<i><b>Distanciel</b></i>}
</>
)
};
@ -1145,6 +1164,8 @@ const Module_Session_Planification = (props) => {
form.append("objectif", p_detail_sequence_objectif);
form.append("commentaire", p_detail_sequence_comment);
form.append("mode_animation", p_detail_mode_animation);
form.append("grp_apprenant_id", p_detail_sequence_groupe_apprenant_id);
form.append("ue_id", p_detail_sequence_ue_id);
form.append("ue_planif_line_id", p_detail_sequence_ue_planif_line_id);
@ -1375,6 +1396,14 @@ const Module_Session_Planification = (props) => {
}
const [p_detail_mode_animation, setp_detail_mode_animation] = useState("");
const New_Option_mode_animation = [
{ "id": "1", "label": "Distanciel", "value": "1" },
{ "id": "2", "label": "Hybride", "value": "2" },
{ "id": "0", "label": "Présentiel", "value": "0" },
{ "id": "", "label": "", "value": "" },
]
const [Add_One_Sequence_Session_Ressource_Mass_api, setAdd_One_Sequence_Session_Ressource_Mass_api] = useState();
const [Add_One_Sequence_Session_Ressource_Mass_message, setAdd_One_Sequence_Session_Ressource_Mass_message] = useState();
@ -1502,6 +1531,14 @@ const Module_Session_Planification = (props) => {
var local_session_color = JSON.parse(x).grp_apprenant_color;
var local_session_grp_code = JSON.parse(x).grp_apprenant_code;
var local_mode_animation = JSON.parse(x).mode_animation;
// Si il n'y pas de relief avec le groupe d'apprenant, on va introduire un relief avec la notion de présentiel et distantiel
if (local_session_color === "" && local_mode_animation === "1") {
// sequence en distantiel, on va mettre un code couleur
local_session_color = "#4ea860"
}
//---
var node = {
@ -1513,6 +1550,8 @@ const Module_Session_Planification = (props) => {
"grp_code": local_session_grp_code,
"color": local_session_color,
"local_agenda": local_agenda,
"local_mode_animation": local_mode_animation,
"local_objectif": local_objectif,
"local_comment": local_session_comment,
"local_type": local_session_type,
@ -2145,6 +2184,7 @@ const Module_Session_Planification = (props) => {
setp_detail_sequence_title("");
setp_detail_sequence_comment("");
setp_detail_mode_animation("");
setp_detail_sequence_agenda("");
setp_detail_sequence_objectif("");
@ -2160,6 +2200,8 @@ const Module_Session_Planification = (props) => {
setp_detail_sequence_title("");
setp_detail_sequence_comment("");
setp_detail_mode_animation("");
setp_detail_sequence_agenda("");
setp_detail_sequence_objectif("");
@ -2211,9 +2253,9 @@ const Module_Session_Planification = (props) => {
setGetall_List_Sequence_Ressource_result([]);
setselectionModel_sequence([]);
console.log(" ### arg.event.extendedProps = ", arg.event.extendedProps);
// console.log(" ### arg.event.extendedProps = ", arg.event.extendedProps);
console.log(" ### arg.event.extendedProps.local_type = ", arg.event.extendedProps.local_type);
//console.log(" ### arg.event.extendedProps.local_type = ", arg.event.extendedProps.local_type);
if (arg.event.extendedProps._id) {
setselected_sequence_id(arg.event.extendedProps._id);
@ -2228,6 +2270,14 @@ const Module_Session_Planification = (props) => {
else
setp_detail_sequence_comment("");
if (arg.event.extendedProps.local_mode_animation) {
setp_detail_mode_animation(arg.event.extendedProps.local_mode_animation);
}
else
setp_detail_mode_animation("");
if (arg.event.extendedProps.local_type) {
setp_detail_event_type(arg.event.extendedProps.local_type);
}
@ -2383,6 +2433,7 @@ const Module_Session_Planification = (props) => {
setp_detail_sequence_title("");
setp_detail_sequence_comment("");
setp_detail_mode_animation("");
setp_detail_sequence_agenda("");
setp_detail_sequence_objectif("");
@ -2442,6 +2493,7 @@ const Module_Session_Planification = (props) => {
form.append("agenda", p_detail_sequence_agenda);
form.append("objectif", p_detail_sequence_objectif);
form.append("commentaire", p_detail_sequence_comment);
form.append("mode_animation", p_detail_mode_animation);
form.append("grp_apprenant_id", p_detail_sequence_groupe_apprenant_id);
form.append("ue_id", p_detail_sequence_ue_id);
@ -2469,6 +2521,8 @@ const Module_Session_Planification = (props) => {
setp_detail_sequence_title("");
setp_detail_sequence_comment("");
setp_detail_mode_animation("");
setp_detail_sequence_agenda("");
setp_detail_sequence_objectif("");
@ -2547,6 +2601,8 @@ const Module_Session_Planification = (props) => {
setp_detail_sequence_title("");
setp_detail_sequence_comment("");
setp_detail_mode_animation("");
setp_detail_sequence_agenda("");
setp_detail_sequence_objectif("");
@ -2632,6 +2688,8 @@ const Module_Session_Planification = (props) => {
setp_detail_sequence_title("");
setp_detail_sequence_comment("");
setp_detail_mode_animation("");
setp_detail_sequence_agenda("");
setp_detail_sequence_objectif("");
@ -2685,6 +2743,9 @@ const Module_Session_Planification = (props) => {
setselected_sequence_id("");
setp_detail_sequence_objectif("");
setp_detail_sequence_comment("");
setp_detail_mode_animation("");
setsubmenu_seq_dialog("dialog_detail");
setGetall_List_Sequence_Ressource_result([]);
@ -3415,7 +3476,7 @@ const Module_Session_Planification = (props) => {
className="displaypartnersession mysy_MuiPaper-root"
>
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily:'DM Sans'}} id="draggable-dialog-title">
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily: 'DM Sans' }} id="draggable-dialog-title">
Créer un nouveau modèle de planning
</DialogTitle>
<DialogContent className="DialogContent_width">
@ -3507,7 +3568,7 @@ const Module_Session_Planification = (props) => {
static
onClose={() => null}
PaperProps={{
PaperProps={{
className: classes.paper, // Apply the paper style
style: {
overflowY: 'unset',
@ -3528,7 +3589,7 @@ const Module_Session_Planification = (props) => {
className="displaypartnersession mysy_MuiPaper-root"
>
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily:'DM Sans'}} id="draggable-dialog-title">
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily: 'DM Sans' }} id="draggable-dialog-title">
Gestion Modèle de planning
</DialogTitle>
<DialogContent className="DialogContent_width">
@ -3701,14 +3762,14 @@ const Module_Session_Planification = (props) => {
className="displaypartnersession mysy_MuiPaper-root"
>
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily:'DM Sans'}} id="draggable-dialog-title">
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily: 'DM Sans' }} id="draggable-dialog-title">
{String(update_sequence) !== "1" && "Ajouter une séquence"}
{String(update_sequence) === "1" && "Mettre à jour une séquence"}
</DialogTitle>
<DialogContent className="DialogContent_width" style={{ width:'40rem'}}>
<DialogContent className="DialogContent_width" style={{ width: '40rem' }}>
<DialogContentText>
{Dialog_seq_1_message}
</DialogContentText>
@ -3982,10 +4043,7 @@ const Module_Session_Planification = (props) => {
{String(submenu_seq_dialog) !== "dialog_ressource" && <div>
<div className="session_caract_Dialog" >
<nav style={{ "float": "left", "width": "30%", "paddingTop": "15px" }}> Type </nav>
<nav style={{ "float": "right", "width": "65%" }}>
{New_Option_Type_Event && New_Option_Type_Event.length > 0 && <Autocomplete
disablePortal
@ -4016,7 +4074,41 @@ const Module_Session_Planification = (props) => {
</nav>
</div>
<div className="session_caract_Dialog" > Unité d'enseignement
<div className="session_caract_Dialog" >
<nav style={{ "float": "left", "width": "30%", "paddingTop": "15px" }}> Animation </nav>
<nav style={{ "float": "right", "width": "65%" }}>
{New_Option_mode_animation && New_Option_mode_animation.length > 0 && <Autocomplete
disablePortal
name="event_dialog_type"
id="event_dialog_type"
fullWidth
options={New_Option_mode_animation}
value={New_Option_mode_animation.filter((data) => (data).value === String(p_detail_mode_animation))[0].label}
onChange={(event, value) => {
if (value && value.value) {
setp_detail_mode_animation(value.value);
} else {
setp_detail_mode_animation("");
}
}}
renderInput={(params) => <TextField {...params} label="" placeholder="Choisir une option"
inputProps={{ ...params.inputProps, style: { fontSize: 12, height: "1.4rem" } }}
/>
}
/>}
</nav>
</div>
<div className="session_caract_Dialog" > UE / Matière
{New_Getall_Class_List_UE_result && New_Getall_Class_List_UE_result.length > 0 && <Autocomplete
@ -4330,7 +4422,7 @@ const Module_Session_Planification = (props) => {
className="displaypartnersession"
static
onClose={() => null}
PaperProps={{
PaperProps={{
className: classes.paper, // Apply the paper style
style: {
overflowY: 'unset',
@ -4350,7 +4442,7 @@ const Module_Session_Planification = (props) => {
>
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily:'DM Sans'}} id="draggable-dialog-title"> Ajout ressource {/*: <font size="3"> <i> {selected_sequence_startDate} au {selected_sequence_endDate} </i> </font> */} </DialogTitle>
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily: 'DM Sans' }} id="draggable-dialog-title"> Ajout ressource {/*: <font size="3"> <i> {selected_sequence_startDate} au {selected_sequence_endDate} </i> </font> */} </DialogTitle>
<DialogContent className="DialogContent_width">
<DialogContentText>
{Dialog_seq_ressource_1_message}
@ -4544,7 +4636,7 @@ const Module_Session_Planification = (props) => {
static
onClose={() => null}
PaperProps={{
PaperProps={{
className: classes.paper, // Apply the paper style
style: {
overflowY: 'unset',
@ -4564,17 +4656,14 @@ const Module_Session_Planification = (props) => {
>
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily:'DM Sans'}} id="draggable-dialog-title"> MySy Information</DialogTitle>
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily: 'DM Sans' }} id="draggable-dialog-title"> MySy Information</DialogTitle>
<DialogContent className="DialogContent_width">
<DialogContentText>
{Dialog_EVENT_SEMAINE_TYPE_message}
</DialogContentText>
<div className="session_caract_Dialog" >
<nav style={{ "float": "left", "width": "30%", "paddingTop": "15px" }}> Type </nav>
<nav style={{ "float": "left", "width": "30%", "paddingTop": "15px" }}> Type zzzz </nav>
<nav style={{ "float": "right", "width": "65%" }}>
<Autocomplete
@ -4605,7 +4694,38 @@ const Module_Session_Planification = (props) => {
</nav>
</div>
<div className="session_caract_Dialog" >
<nav style={{ "float": "left", "width": "30%", "paddingTop": "15px" }}> Animation </nav>
<nav style={{ "float": "right", "width": "65%" }}>
{New_Option_mode_animation && New_Option_mode_animation.length > 0 && <Autocomplete
disablePortal
name="event_dialog_type"
id="event_dialog_type"
fullWidth
options={New_Option_mode_animation}
value={New_Option_mode_animation.filter((data) => (data).value === String(p_detail_mode_animation))[0].label}
onChange={(event, value) => {
if (value && value.value) {
setp_detail_mode_animation(value.value);
} else {
setp_detail_mode_animation("");
}
}}
renderInput={(params) => <TextField {...params} label="" placeholder="Choisir une option"
inputProps={{ ...params.inputProps, style: { fontSize: 12, height: "1.4rem" } }}
/>
}
/>}
</nav>
</div>
<div className="session_caract_Dialog" > Titre
<TextField
@ -4852,7 +4972,7 @@ const Module_Session_Planification = (props) => {
className="displaypartnersession displaypopop_for_sequence_model_week"
static
onClose={() => null}
PaperProps={{
PaperProps={{
className: classes.paper, // Apply the paper style
style: {
overflowY: 'unset',
@ -4871,7 +4991,7 @@ const Module_Session_Planification = (props) => {
aria-labelledby="draggable-dialog-title"
>
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily:'DM Sans'}} id="draggable-dialog-title"> {Dialog_seq_CREATION_SEMAINE_TYPE_message} </DialogTitle>
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily: 'DM Sans' }} id="draggable-dialog-title"> {Dialog_seq_CREATION_SEMAINE_TYPE_message} </DialogTitle>
<DialogContent className="DialogContent_width_for_week_model">
<DialogContentText>
{Dialog_seq_CREATION_SEMAINE_TYPE_message}
@ -5135,7 +5255,7 @@ const Module_Session_Planification = (props) => {
>
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily:'DM Sans'}} id="draggable-dialog-title"> Choisir un modèle de planification </DialogTitle>
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily: 'DM Sans' }} id="draggable-dialog-title"> Choisir un modèle de planification </DialogTitle>
<DialogContent className="DialogContent_width" style={{ height: "15rem" }}>
<DialogContentText>
{Dialog_seq_choix_model_emargement_message}
@ -5259,7 +5379,7 @@ const Module_Session_Planification = (props) => {
static
onClose={() => null}
PaperProps={{
PaperProps={{
className: classes.paper, // Apply the paper style
style: {
overflowY: 'unset',
@ -5272,7 +5392,7 @@ const Module_Session_Planification = (props) => {
disableScrollLock
classes={{
paper: classes.dialog
}}
}}
PaperComponent={PaperComponent}
aria-labelledby="draggable-dialog-title"
@ -5280,13 +5400,13 @@ const Module_Session_Planification = (props) => {
className="module_agenda mysy_MuiPaper-root"
>
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily:'DM Sans'}} id="draggable-dialog-title"> MySy Information</DialogTitle>
<DialogContent className="DialogContent_width" style={{ width:"40rem"}}>
<DialogContentText>
{Dialog_DIALOG_AGENDA_message}
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily: 'DM Sans' }} id="draggable-dialog-title"> MySy Information</DialogTitle>
<DialogContent className="DialogContent_width" style={{ width: "40rem" }}>
<DialogContentText>
{Dialog_DIALOG_AGENDA_message}
</DialogContentText>
{<div className="session_caract_Dialog" style={{ textAlign: 'right' }} >
{<div className="session_caract_Dialog" style={{ textAlign: 'right' }} >
<Button variant="outlined" onClick={submenu_sequence_detail} className="detail_class_submenu" id='dialog_detail_seq_detail'
name='dialog_detail_seq_detail'>Détail</Button>
@ -5595,8 +5715,41 @@ const Module_Session_Planification = (props) => {
</nav>
</div>
<div className="session_caract_Dialog" >
<nav style={{ "float": "left", "width": "30%", "paddingTop": "15px" }}> Animation </nav>
<nav style={{ "float": "right", "width": "65%" }}>
<div className="session_caract_Dialog" > Unité d'enseignement
{New_Option_mode_animation && New_Option_mode_animation.length > 0 && <Autocomplete
disablePortal
name="event_dialog_type"
id="event_dialog_type"
fullWidth
options={New_Option_mode_animation}
value={New_Option_mode_animation.filter((data) => (data).value === String(p_detail_mode_animation))[0].label}
onChange={(event, value) => {
if (value && value.value) {
setp_detail_mode_animation(value.value);
} else {
setp_detail_mode_animation("");
}
}}
renderInput={(params) => <TextField {...params} label="" placeholder="Choisir une option"
inputProps={{ ...params.inputProps, style: { fontSize: 12, height: "1.4rem" } }}
/>
}
/>}
</nav>
</div>
<div className="session_caract_Dialog" > UE / Matière
{New_Getall_Class_List_UE_result && New_Getall_Class_List_UE_result.length > 0 &&
@ -6022,7 +6175,7 @@ const Module_Session_Planification = (props) => {
agenda: JSON.parse(item).agenda,
objectif: JSON.parse(item).objectif,
commentaire: JSON.parse(item).commentaire,
mode_animation: JSON.parse(item).mode_animation,
grp_apprenant_id: JSON.parse(item).grp_apprenant_id,
ue_id: JSON.parse(item).ue_id,
unite_enseignement_planif_id: JSON.parse(item).unite_enseignement_planif_id,
@ -6048,6 +6201,8 @@ const Module_Session_Planification = (props) => {
setp_detail_sequence_objectif(newSelectionModel.row.objectif);
setp_detail_sequence_comment(newSelectionModel.row.commentaire);
setp_detail_mode_animation(newSelectionModel.row.mode_animation);
Getall_List_Sequence_Ressource(newSelectionModel.row._id);
setselected_sequence_id(newSelectionModel.row._id);

View File

@ -233,7 +233,7 @@ const New_ButtonHilight_2025 = () => {
}
history.push("/intranet");
}
function user_logout() {
confirmAlert({

View File

@ -0,0 +1,493 @@
import React, { useState, useEffect } from 'react';
//import { slide as Menu } from "react-burger-menu";
import { NavLink } from "react-router-dom";
import { getCookie } from 'react-use-cookie';
import { useHistory } from "react-router-dom";
import LogoutOutlinedIcon from '@mui/icons-material/LogoutOutlined';
import Button from '@mui/material/Button';
import { confirmAlert } from 'react-confirm-alert'; // Import
import 'react-confirm-alert/src/react-confirm-alert.css'; // Import css
import { useCookies } from "react-cookie";
import { Helmet } from "react-helmet";
import logowhite from "../mysy_img/MYSY-LOGO-WHITE.png";
import connect_white from "../mysy_img/connect_white_v2.png";
import MenuItem from "@material-ui/core/MenuItem";
import Menu from "@material-ui/core/Menu";
import connect_green from "../mysy_img/connect_green.png";
import Dialog from '@mui/material/Dialog';
import DialogActions from '@mui/material/DialogActions';
import DialogContent from '@mui/material/DialogContent';
import DialogContentText from '@mui/material/DialogContentText';
import DialogTitle from '@mui/material/DialogTitle';
import { format } from 'date-fns'
import moment from "moment";
import SendIcon from '@mui/icons-material/Send';
import axios from "axios";
import mysy_logo2 from "../mysy_img2/Logo_MySy.png"
import New_C_Header_ENT_Student_2025_V2 from "./header_automatic_files/Header_ENT_Student";
const New_ButtonHilight_ENT_Student_2025 = () => {
const history = useHistory();
const [show, setShow] = useState(true);
const [lastScrollY, setLastScrollY] = useState(0);
const [cookie, setCookie, removeCookie] = useCookies(['tokenmysych']);
const [partcookie, setpartCookie, removepartCookie] = useCookies(['tokenmysypart']);
const [country_code, setcountry_code] = useState("FR");
const [country_name, setcountry_name] = useState("France");
const [city, setcity] = useState("Paris");
const [postal, setpostal] = useState("75001");
const [latitude, setlatitude] = useState("48.861000061035156");
const [longitude, setlongitude] = useState("2.3380000591278076");
const [IPv4, setIPv4] = useState("172.71.122.128");
const [state, setstate] = useState("France");
const [userIp, setuserIp] = useState("172.71.122.128");
const controlNavbar = () => {
if (typeof window !== 'undefined') {
if (window.scrollY > lastScrollY && window.scrollY > 100) {
setShow(false);
} else if (window.scrollY < lastScrollY && window.scrollY < 100) { // if scroll up show the navbar
setShow(true);
}
// remember current page location to use in the next move
setLastScrollY(window.scrollY);
}
};
const [userconnected, setuserconnected] = useState("0");
const [someoneconnected, setsomeoneconnected] = useState("0");
const [partnerconnected, setpartnerconnected] = useState("0");
var stored_user = getCookie('tokenmysych');
var stored_part = getCookie('tokenmysypart');
function whosisconnected() {
stored_user = getCookie('tokenmysych');
stored_part = getCookie('tokenmysypart');
var local_user_connect = 0;
var local_part_connect = 0;
if (typeof (stored_user) === "undefined" || String(stored_user) === '') {
setuserconnected("0");
local_user_connect = 0;
} else {
setuserconnected("1");
setsomeoneconnected("1");
local_user_connect = 1;
//alert(" user connected OK");
}
if (typeof (stored_part) === "undefined" || String(stored_part) === '') {
setpartnerconnected("0");
setsomeoneconnected("0");
local_part_connect = 0;
} else {
setpartnerconnected("1");
setsomeoneconnected("1");
local_part_connect = 1;
// alert(" partner connected OK");
}
}
useEffect(() => {
var local_user_connect = 0;
var local_part_connect = 0;
if (typeof (stored_user) === "undefined" || String(stored_user) === '') {
setuserconnected("0");
local_user_connect = 0;
} else {
setuserconnected("1");
setsomeoneconnected("1");
local_user_connect = 1;
//alert(" user connected OK");
}
if (typeof (stored_part) === "undefined" || String(stored_part) === '') {
setpartnerconnected("0");
local_part_connect = 0;
} else {
setpartnerconnected("1");
setsomeoneconnected("1");
local_part_connect = 1;
//alert(" partner connected OK");
}
if (typeof window !== 'undefined') {
window.addEventListener('scroll', controlNavbar);
// cleanup function
return () => {
window.removeEventListener('scroll', controlNavbar);
};
}
}, [lastScrollY]);
const [PartnerMenu, setPartnerMenu] = React.useState(null);
const [AccountMenu, setAccountMenu] = React.useState(null);
const [ProduitMenu, setproduitMenu] = React.useState(null);
const [AvisMenu, setavisMenu] = React.useState(null);
const PartnerMenu_Close = () => {
setPartnerMenu(null);
};
const AccountMenu_Close = () => {
setAccountMenu(null);
};
const ProduitMenu_Close = () => {
setproduitMenu(null);
};
const handlePartnerMenu = (event) => {
setPartnerMenu(event.currentTarget);
};
const handleAccountMenu = (event) => {
setAccountMenu(event.currentTarget);
};
const handleProduitMenu = (event) => {
setproduitMenu(event.currentTarget);
};
const handleQuisommesNousMenu = (event) => {
history.push("/qui-sommes-nous")
};
const handleClose_Account = () => {
alert(" my account");
setAccountMenu(null);
};
const handleAccountConnexion = () => {
setAccountMenu(null);
history.push("/Connexion")
};
const handleMyAccount = () => {
setAccountMenu(null);
history.push("/mysy-user-account")
};
const handleAccountCreation = () => {
setAccountMenu(null);
history.push("/create_account")
};
const handlePartnerConnexion = () => {
setAccountMenu(null);
history.push("/PartnerLogin")
};
const handleProduitService = () => {
setproduitMenu(null);
history.push("/tarifs_produits_services/")
};
const handleAvis = () => {
setavisMenu(null);
history.push("/Recherche-Article-formation")
};
function user_logout_confirmation() {
/* si c'est une connexion partner qui est active */
if (typeof (stored_user) != "undefined") {
const stored_cookie = getCookie('tokenmysych');
var acces_right_token_name = stored_cookie + "_uar";
setpartCookie("tokenmysych", "", { path: '/' });
setpartCookie(acces_right_token_name, "", { path: '/' });
removeCookie(acces_right_token_name, { path: '/' });
removeCookie("tokenmysych", { path: '/' });
}
history.push("/ent_student");
}
function user_logout() {
confirmAlert({
title: '',
message: 'Confirmez la deconnexion (user)',
buttons: [
{
label: 'Oui',
onClick: () => user_logout_confirmation()
},
{
label: 'Non',
onClick: () => { return }
}
]
});
}
function part_logout_confirmation() {
/* si c'est une connexion partner qui est active */
if (typeof (stored_part) != "undefined") {
const stored_cookie = getCookie('tokenmysypart');
var acces_right_token_name = stored_cookie + "_uar";
setpartCookie("tokenmysypart", "", { path: '/' });
setpartCookie(acces_right_token_name, "", { path: '/' });
removeCookie(acces_right_token_name, { path: '/' });
setpartCookie("mysy_session_display_view", "", { path: '/' });
setpartCookie("mysy_menu_gauche_reduit", "", { path: '/' });
setpartCookie("mysy_catalog_data_row_grouped_by", "", { path: '/' });
removeCookie("tokenmysypart", { path: '/' });
removeCookie("mysy_session_display_view", { path: '/' });
removeCookie("mysy_menu_gauche_reduit", { path: '/' });
removeCookie("mysy_catalog_data_row_grouped_by", { path: '/' });
}
setsomeoneconnected("0");
setDialog_1_open(false);
history.push("/recherche-formation");
}
function part_logout() {
confirmAlert({
title: '',
message: 'Confirmez la deconnexion (pro)',
buttons: [
{
label: 'Oui',
onClick: () => part_logout_confirmation()
},
{
label: 'Non',
onClick: () => { return }
}
]
});
}
function handleAccountLogout() {
if (String(userconnected) === String("1")) {
user_logout();
}
else if (String(partnerconnected) === String("1")) {
part_logout();
}
}
const [CategorieMenu, setCategorieMenu] = React.useState(null);
const CategorieMenu_Close = () => {
setCategorieMenu(null);
};
const handleCategorieMenu = (event) => {
setCategorieMenu(event.currentTarget);
};
const handleMarketplace = (event) => {
history.push("/recherche-formation")
};
const handleClassCategorie = (e) => {
setCategorieMenu(null);
const pieces = window.location.href.split("/")
const last = pieces[pieces.length - 1]
var mymetier = "";
mymetier = e.target.id
if (last === mymetier) {
//console.log(" ## RELAOD");
window.location.reload(true);
} else {
history.push("/Recherche_new_v2/0/" + mymetier);
}
};
function publiecatalogue() {
history.push("/Partner", { mysy_arg: 'partner' });
}
function resserver_demo() {
history.push("/Partner", { mysy_arg: 'partner' });
}
const handleBlogMenu = (event) => {
history.push("/Recherche-Article-formation")
};
const [Dialog_1_message, setDialog_1_message] = React.useState(false);
const [Dialog_1_open, setDialog_1_open] = React.useState(false);
function Dialog_1_handle_change_participant_session(message) {
setDialog_1_message(message);
setDialog_1_open(true);
}
const Dialog_1_handleClose = () => {
//alert(" Utiliser le bouton 'fermer' ");
//setOpen(false);
};
const Dialog_1_handleClose_buton = () => {
setDialog_1_open(false);
};
const [Dialog_contact_message, setDialog_contact_message] = React.useState(false);
const [Dialog_contact_open, setDialog_contact_open] = React.useState(false);
function Dialog_contact_handle_change_participant_session(message) {
setDialog_contact_message(message);
setDialog_contact_open(true);
}
const Dialog_contact_handleClose = () => {
};
const Dialog_contact_handleClose_buton = () => {
setDialog_contact_open(false);
clear_contact_message_fields();
};
function clear_contact_message_fields() {
setcontact_message_nom_prenom("");
setcontact_message_email("");
setcontact_message_phone("");
setcontact_message_sujet("");
setcontact_message_sujet("");
setcontact_message_message("");
}
const [contact_message_nom_prenom, setcontact_message_nom_prenom] = React.useState("");
const [contact_message_email, setcontact_message_email] = React.useState("");
const [contact_message_phone, setcontact_message_phone] = React.useState("");
const [contact_message_sujet, setcontact_message_sujet] = React.useState("");
const [contact_message_message, setcontact_message_message] = React.useState("");
function Send_Contact_Message(e) {
var sender_mail = "";
var sender_tel = "";
var token = "";
////console.log("contacter " + sender_mail + " - " + sender_tel + " - ")
var mysubject = contact_message_sujet;
var mymessage = contact_message_message;
var mysender_name = contact_message_nom_prenom;
var mysender_email = contact_message_email;
//alert("contacter "+mysender_email+" - "+mymessage+" - url = "
//+process.env.REACT_APP_API_URL+" - user_ip ="+IPv4+" - "+latitude);
var re = /\S+@\S+\.\S+/;
if (re.test(mysender_email) == false) {
alert("l'email est incorrecte");
return;
}
var myurl = process.env.REACT_APP_API_URL + "myclass/api/add_user_message/";
var form = new FormData();
form.append("type", "email");
form.append("recever_mail", "contact@mysy-training.com");
form.append("recever_tel", "+33769203945");
form.append("sender_mail", mysender_email);
form.append("sender_tel", sender_tel);
form.append("object", mysubject);
form.append("message", mymessage);
form.append("sender_name", mysender_name);
form.append("token", "");
form.append("user_ip", IPv4);
form.append("user_country_code", country_code);
form.append("user_country_name", country_name);
form.append("user_city", city);
form.append("user_postal", postal);
form.append("user_latitude", latitude);
form.append("user_longitude", longitude);
form.append("user_state", state);
// console.log("## form = ", form);
axios.post(myurl, form).then(res => {
if (String(res.data.status) === String("false")) {
alert(res.data.message);
}
else if (String(res.data.status) === String("true")) {
Dialog_contact_handleClose_buton();
alert(res.data.message);
}
else {
}
}).catch((error) => {
console.warn('contact-nous Not good man :( mysearchtext = ');
})
}
return (
<div className='new_buttonhilight_2025'>
<div className={`mini_entete ${show && 'hidden'}`} >
<New_C_Header_ENT_Student_2025_V2 />
</div>
</div>
);
}
export default New_ButtonHilight_ENT_Student_2025;

View File

@ -0,0 +1,33 @@
import React from 'react';
import { getCookie, } from 'react-use-cookie';
import { useHistory } from "react-router-dom";
import 'react-confirm-alert/src/react-confirm-alert.css'; // Import css
import New_Sidebar_ENT_Student_2025 from "./New_Sidebar_ENT_Student_2025";
import { useCookies } from "react-cookie";
import New_ButtonHilight_ENT_Student_2025 from "./New_ButtonHilight_ENT_Student_2025";
const New_Navigation_ENT_Student_2025 = () => {
const history = useHistory();
const [cookie, setCookie, removeCookie] = useCookies(['tokenmysych']);
const [cookie_part, setCookie_part, removeCookie_part] = useCookies(['tokenmysypart']);
return (
<div className={"navigation"}>
<div className="test_page">
<div className="bm-burger-button_label">
</div>
<New_Sidebar_ENT_Student_2025 />
<New_ButtonHilight_ENT_Student_2025 />
</div>
</div>
)
}
export default New_Navigation_ENT_Student_2025;

View File

@ -10,7 +10,7 @@ import { confirmAlert } from 'react-confirm-alert'; // Import
import 'react-confirm-alert/src/react-confirm-alert.css'; // Import css
import { useCookies } from "react-cookie";
const New_SideBar_2025 = () => {
const stored_cookie = getCookie('tokenmysych');

View File

@ -0,0 +1,336 @@
import React, { useState, useEffect } from 'react';
import { slide as Menu } from "react-burger-menu";
import { NavLink } from "react-router-dom";
import { getCookie } from 'react-use-cookie';
import { useHistory } from "react-router-dom";
import LogoutOutlinedIcon from '@mui/icons-material/LogoutOutlined';
import Button from '@mui/material/Button';
import { confirmAlert } from 'react-confirm-alert'; // Import
import 'react-confirm-alert/src/react-confirm-alert.css'; // Import css
import { useCookies } from "react-cookie";
const New_Sidebar_Client_Intranet_2025 = () => {
const stored_cookie = getCookie('tokenmysych');
const history = useHistory();
const [cookie, setCookie, removeCookie] = useCookies(['tokenmysych']);
const [cookie_part, setCookie_part, removeCookie_part] = useCookies(['tokenmysypart']);
// Gestion des Cookies
const stored_partner = cookie_part.tokenmysypart;
const stored_user = cookie.tokenmysych;
const environnment = process.env.REACT_APP_ENV
function logout_confirmation() {
// si c'est une connexion partner qui est active
if (typeof (stored_partner) !== "undefined") {
//alert(" c'est une connexion PARTTT qui est active");
removeCookie_part('tokenmysypart', { path: '/' });
history.push("/Connexion");
}
// si c'est une connexion user qui est active
if (typeof (stored_user) !== "undefined") {
//alert(" c'est une connexion USERR qui est active");
removeCookie_part('tokenmysych', { path: '/' });
history.push("/intranet");
}
}
function logout() {
confirmAlert({
title: 'Deconnexion ?',
message: 'Confirmez la deconnexion',
buttons: [
{
label: 'Oui',
onClick: () => logout_confirmation()
},
{
label: 'Non',
}
],
closeOnEscape: false,
closeOnClickOutside: false,
keyCodeForClose: [8, 32],
willUnmount: () => { },
afterClose: () => { },
onClickOutside: () => { },
onKeypress: () => { },
onKeypressEscape: () => { },
overlayClassName: "overlay-custom-class-name"
});
}
const [someoneconnected, setsomeoneconnected] = useState("0");
const [partnerconnected, setpartnerconnected] = useState("0");
const [userconnected, setuserconnected] = useState("0");
const stored_part = getCookie('tokenmysypart');
function whosisconnected() {
var local_user_connect = 0;
var local_part_connect = 0;
if (typeof (stored_user) === "undefined" || String(stored_user) === '') {
setuserconnected("0");
local_user_connect = 0;
} else {
setuserconnected("1");
setsomeoneconnected("1");
local_user_connect = 1;
//alert(" user connected OK");
}
if (typeof (stored_part) === "undefined" || String(stored_part) === '') {
setpartnerconnected("0");
local_part_connect = 0;
} else {
setpartnerconnected("1");
setsomeoneconnected("1");
local_part_connect = 1;
//alert(" partner connected OK");
}
}
useEffect(() => {
var local_user_connect = 0;
var local_part_connect = 0;
if (typeof (stored_user) === "undefined" || String(stored_user) === '') {
setuserconnected("0");
local_user_connect = 0;
} else {
setuserconnected("1");
setsomeoneconnected("1");
local_user_connect = 1;
//alert(" user connected OK");
}
if (typeof (stored_part) === "undefined" || String(stored_part) === '') {
setpartnerconnected("0");
local_part_connect = 0;
} else {
setpartnerconnected("1");
setsomeoneconnected("1");
local_part_connect = 1;
//alert(" partner connected OK");
}
}, []);
return (
// Pass on our props
<div>
{String(environnment) === "PROD" &&
<Menu className="ch_burger_menu">
<NavLink exact to={"/"} activeClassName={"nav-active"}>
A propos
</NavLink>
<NavLink exact to={"/fonctionnalites"} activeClassName={"nav-active"}>
Fonctionnalites
</NavLink>
<NavLink exact to={"/tarif"} activeClassName={"nav-active"}>
Tarifs
</NavLink>
<NavLink exact to={"/contact"} activeClassName={"nav-active"}>
Contact
</NavLink>
<NavLink exact to={"/Recherche-Article-formation"} activeClassName={"nav-active"}>
Blog
</NavLink>
<NavLink exact to={"/recherche-formation"} activeClassName={"nav-active"}>
Marketplace
</NavLink>
{String(someoneconnected) !== String("1") && <NavLink exact to={"/signin"} activeClassName={"nav-active"}>
Connexion
</NavLink>}
{String(someoneconnected) !== String("1") && <NavLink exact to={"/signup"} activeClassName={"nav-active"}>
Inscription
</NavLink>}
{String(someoneconnected) === String("1") && <NavLink exact to={"/mysy-user-account"} activeClassName={"nav-active"}>
Mon compte
</NavLink>}
{typeof (stored_partner) !== "undefined" &&
/* Connexion partner active */
<Button className='bton_annule' onClick={logout} style={{
color: "red", opacity: '100%', borderRadius: '5rem', fontSize: "12px", width: "100%", background: "black",
padding: "5px"
}}>
<i> Deconnexion </i>
</Button>
}
{typeof (stored_user) != "undefined" &&
/* Connexion utilisateur active */
<Button className='bton_annule' onClick={logout} startIcon={<LogoutOutlinedIcon />} sx={{ color: "white", background: "green", fontSize: 10 }} >
Deconnexion
</Button>
}
</Menu>}
{(String(environnment) === "REC" || String(environnment) === "DEM") &&
<Menu className="ch_burger_menu">
<NavLink exact to={"/"} activeClassName={"nav-active"}>
A propos
</NavLink>
<NavLink exact to={"/fonctionnalites"} activeClassName={"nav-active"}>
Fonctionnalites
</NavLink>
<NavLink exact to={"/tarif"} activeClassName={"nav-active"}>
Tarifs
</NavLink>
<NavLink exact to={"/contact"} activeClassName={"nav-active"}>
Contact
</NavLink>
<NavLink exact to={"/Recherche-Article-formation"} activeClassName={"nav-active"}>
Blog
</NavLink>
<NavLink exact to={"/recherche-formation"} activeClassName={"nav-active"}>
Marketplace
</NavLink>
{String(someoneconnected) !== String("1") && <NavLink exact to={"/signin"} activeClassName={"nav-active"}>
Connexion
</NavLink>}
{String(someoneconnected) !== String("1") && <NavLink exact to={"/signup"} activeClassName={"nav-active"}>
Inscription
</NavLink>}
{String(someoneconnected) === String("1") && <NavLink exact to={"/mysy-user-account"} activeClassName={"nav-active"}>
Mon compte
</NavLink>}
{typeof (stored_partner) !== "undefined" &&
/* Connexion partner active */
<Button className='bton_annule' onClick={logout} style={{
color: "red", opacity: '100%', borderRadius: '5rem', fontSize: "12px", width: "100%", background: "black",
padding: "5px"
}}>
<i> Deconnexion </i>
</Button>
}
{typeof (stored_user) != "undefined" &&
/* Connexion utilisateur active */
<Button className='bton_annule' onClick={logout} startIcon={<LogoutOutlinedIcon />} sx={{ color: "white", background: "green", fontSize: 10 }} >
Deconnexion
</Button>
}
</Menu>}
{String(environnment) === "DEV" &&
<Menu className="ch_burger_menu">
<NavLink exact to={"/"} activeClassName={"nav-active"}>
A propos
</NavLink>
<NavLink exact to={"/fonctionnalites"} activeClassName={"nav-active"}>
Fonctionnalites
</NavLink>
<NavLink exact to={"/tarif"} activeClassName={"nav-active"}>
Tarifs
</NavLink>
<NavLink exact to={"/contact"} activeClassName={"nav-active"}>
Contact
</NavLink>
<NavLink exact to={"/Recherche-Article-formation"} activeClassName={"nav-active"}>
Blog
</NavLink>
<NavLink exact to={"/recherche-formation"} activeClassName={"nav-active"}>
Marketplace
</NavLink>
{String(someoneconnected) !== String("1") && <NavLink exact to={"/signin"} activeClassName={"nav-active"}>
Connexion
</NavLink>}
{String(someoneconnected) !== String("1") && <NavLink exact to={"/signup"} activeClassName={"nav-active"}>
Inscription
</NavLink>}
{String(someoneconnected) === String("1") && <NavLink exact to={"/mysy-user-account"} activeClassName={"nav-active"}>
Mon compte
</NavLink>}
{typeof (stored_partner) !== "undefined" &&
/* Connexion partner active */
<Button className='bton_annule' onClick={logout} style={{
color: "red", opacity: '100%', borderRadius: '5rem', fontSize: "12px", width: "100%", background: "black",
padding: "5px"
}}>
<i> Deconnexion </i>
</Button>
}
{typeof (stored_user) != "undefined" &&
/* Connexion utilisateur active */
<Button className='bton_annule' onClick={logout} startIcon={<LogoutOutlinedIcon />} sx={{ color: "white", background: "green", fontSize: 10 }} >
Deconnexion
</Button>
}
</Menu>}
</div>
);
};
export default New_Sidebar_Client_Intranet_2025;

View File

@ -0,0 +1,336 @@
import React, { useState, useEffect } from 'react';
import { slide as Menu } from "react-burger-menu";
import { NavLink } from "react-router-dom";
import { getCookie } from 'react-use-cookie';
import { useHistory } from "react-router-dom";
import LogoutOutlinedIcon from '@mui/icons-material/LogoutOutlined';
import Button from '@mui/material/Button';
import { confirmAlert } from 'react-confirm-alert'; // Import
import 'react-confirm-alert/src/react-confirm-alert.css'; // Import css
import { useCookies } from "react-cookie";
const New_Sidebar_ENT_Student_2025 = () => {
const stored_cookie = getCookie('tokenmysych');
const history = useHistory();
const [cookie, setCookie, removeCookie] = useCookies(['tokenmysych']);
const [cookie_part, setCookie_part, removeCookie_part] = useCookies(['tokenmysypart']);
// Gestion des Cookies
const stored_partner = cookie_part.tokenmysypart;
const stored_user = cookie.tokenmysych;
const environnment = process.env.REACT_APP_ENV
function logout_confirmation() {
// si c'est une connexion partner qui est active
if (typeof (stored_partner) !== "undefined") {
//alert(" c'est une connexion PARTTT qui est active");
removeCookie_part('tokenmysypart', { path: '/' });
history.push("/Connexion");
}
// si c'est une connexion user qui est active
if (typeof (stored_user) !== "undefined") {
//alert(" c'est une connexion USERR qui est active");
removeCookie_part('tokenmysych', { path: '/' });
history.push("/ent_student");
}
}
function logout() {
confirmAlert({
title: 'Deconnexion ?',
message: 'Confirmez la deconnexion',
buttons: [
{
label: 'Oui',
onClick: () => logout_confirmation()
},
{
label: 'Non',
}
],
closeOnEscape: false,
closeOnClickOutside: false,
keyCodeForClose: [8, 32],
willUnmount: () => { },
afterClose: () => { },
onClickOutside: () => { },
onKeypress: () => { },
onKeypressEscape: () => { },
overlayClassName: "overlay-custom-class-name"
});
}
const [someoneconnected, setsomeoneconnected] = useState("0");
const [partnerconnected, setpartnerconnected] = useState("0");
const [userconnected, setuserconnected] = useState("0");
const stored_part = getCookie('tokenmysypart');
function whosisconnected() {
var local_user_connect = 0;
var local_part_connect = 0;
if (typeof (stored_user) === "undefined" || String(stored_user) === '') {
setuserconnected("0");
local_user_connect = 0;
} else {
setuserconnected("1");
setsomeoneconnected("1");
local_user_connect = 1;
//alert(" user connected OK");
}
if (typeof (stored_part) === "undefined" || String(stored_part) === '') {
setpartnerconnected("0");
local_part_connect = 0;
} else {
setpartnerconnected("1");
setsomeoneconnected("1");
local_part_connect = 1;
//alert(" partner connected OK");
}
}
useEffect(() => {
var local_user_connect = 0;
var local_part_connect = 0;
if (typeof (stored_user) === "undefined" || String(stored_user) === '') {
setuserconnected("0");
local_user_connect = 0;
} else {
setuserconnected("1");
setsomeoneconnected("1");
local_user_connect = 1;
//alert(" user connected OK");
}
if (typeof (stored_part) === "undefined" || String(stored_part) === '') {
setpartnerconnected("0");
local_part_connect = 0;
} else {
setpartnerconnected("1");
setsomeoneconnected("1");
local_part_connect = 1;
//alert(" partner connected OK");
}
}, []);
return (
// Pass on our props
<div>
{String(environnment) === "PROD" &&
<Menu className="ch_burger_menu">
<NavLink exact to={"/"} activeClassName={"nav-active"}>
A propos
</NavLink>
<NavLink exact to={"/fonctionnalites"} activeClassName={"nav-active"}>
Fonctionnalites
</NavLink>
<NavLink exact to={"/tarif"} activeClassName={"nav-active"}>
Tarifs
</NavLink>
<NavLink exact to={"/contact"} activeClassName={"nav-active"}>
Contact
</NavLink>
<NavLink exact to={"/Recherche-Article-formation"} activeClassName={"nav-active"}>
Blog
</NavLink>
<NavLink exact to={"/recherche-formation"} activeClassName={"nav-active"}>
Marketplace
</NavLink>
{String(someoneconnected) !== String("1") && <NavLink exact to={"/signin"} activeClassName={"nav-active"}>
Connexion
</NavLink>}
{String(someoneconnected) !== String("1") && <NavLink exact to={"/signup"} activeClassName={"nav-active"}>
Inscription
</NavLink>}
{String(someoneconnected) === String("1") && <NavLink exact to={"/mysy-user-account"} activeClassName={"nav-active"}>
Mon compte
</NavLink>}
{typeof (stored_partner) !== "undefined" &&
/* Connexion partner active */
<Button className='bton_annule' onClick={logout} style={{
color: "red", opacity: '100%', borderRadius: '5rem', fontSize: "12px", width: "100%", background: "black",
padding: "5px"
}}>
<i> Deconnexion </i>
</Button>
}
{typeof (stored_user) != "undefined" &&
/* Connexion utilisateur active */
<Button className='bton_annule' onClick={logout} startIcon={<LogoutOutlinedIcon />} sx={{ color: "white", background: "green", fontSize: 10 }} >
Deconnexion
</Button>
}
</Menu>}
{(String(environnment) === "REC" || String(environnment) === "DEM") &&
<Menu className="ch_burger_menu">
<NavLink exact to={"/"} activeClassName={"nav-active"}>
A propos
</NavLink>
<NavLink exact to={"/fonctionnalites"} activeClassName={"nav-active"}>
Fonctionnalites
</NavLink>
<NavLink exact to={"/tarif"} activeClassName={"nav-active"}>
Tarifs
</NavLink>
<NavLink exact to={"/contact"} activeClassName={"nav-active"}>
Contact
</NavLink>
<NavLink exact to={"/Recherche-Article-formation"} activeClassName={"nav-active"}>
Blog
</NavLink>
<NavLink exact to={"/recherche-formation"} activeClassName={"nav-active"}>
Marketplace
</NavLink>
{String(someoneconnected) !== String("1") && <NavLink exact to={"/signin"} activeClassName={"nav-active"}>
Connexion
</NavLink>}
{String(someoneconnected) !== String("1") && <NavLink exact to={"/signup"} activeClassName={"nav-active"}>
Inscription
</NavLink>}
{String(someoneconnected) === String("1") && <NavLink exact to={"/mysy-user-account"} activeClassName={"nav-active"}>
Mon compte
</NavLink>}
{typeof (stored_partner) !== "undefined" &&
/* Connexion partner active */
<Button className='bton_annule' onClick={logout} style={{
color: "red", opacity: '100%', borderRadius: '5rem', fontSize: "12px", width: "100%", background: "black",
padding: "5px"
}}>
<i> Deconnexion </i>
</Button>
}
{typeof (stored_user) != "undefined" &&
/* Connexion utilisateur active */
<Button className='bton_annule' onClick={logout} startIcon={<LogoutOutlinedIcon />} sx={{ color: "white", background: "green", fontSize: 10 }} >
Deconnexion
</Button>
}
</Menu>}
{String(environnment) === "DEV" &&
<Menu className="ch_burger_menu">
<NavLink exact to={"/"} activeClassName={"nav-active"}>
A propos
</NavLink>
<NavLink exact to={"/fonctionnalites"} activeClassName={"nav-active"}>
Fonctionnalites
</NavLink>
<NavLink exact to={"/tarif"} activeClassName={"nav-active"}>
Tarifs
</NavLink>
<NavLink exact to={"/contact"} activeClassName={"nav-active"}>
Contact
</NavLink>
<NavLink exact to={"/Recherche-Article-formation"} activeClassName={"nav-active"}>
Blog
</NavLink>
<NavLink exact to={"/recherche-formation"} activeClassName={"nav-active"}>
Marketplace
</NavLink>
{String(someoneconnected) !== String("1") && <NavLink exact to={"/signin"} activeClassName={"nav-active"}>
Connexion
</NavLink>}
{String(someoneconnected) !== String("1") && <NavLink exact to={"/signup"} activeClassName={"nav-active"}>
Inscription
</NavLink>}
{String(someoneconnected) === String("1") && <NavLink exact to={"/mysy-user-account"} activeClassName={"nav-active"}>
Mon compte
</NavLink>}
{typeof (stored_partner) !== "undefined" &&
/* Connexion partner active */
<Button className='bton_annule' onClick={logout} style={{
color: "red", opacity: '100%', borderRadius: '5rem', fontSize: "12px", width: "100%", background: "black",
padding: "5px"
}}>
<i> Deconnexion </i>
</Button>
}
{typeof (stored_user) != "undefined" &&
/* Connexion utilisateur active */
<Button className='bton_annule' onClick={logout} startIcon={<LogoutOutlinedIcon />} sx={{ color: "white", background: "green", fontSize: 10 }} >
Deconnexion
</Button>
}
</Menu>}
</div>
);
};
export default New_Sidebar_ENT_Student_2025;

View File

@ -176,7 +176,7 @@ const Partner_Header = () => {
}
history.push("/intranet");
history.push("/ent_student");
}
return (
@ -197,7 +197,7 @@ const Partner_Header = () => {
style: {
overflowY: 'unset',
position: 'absolute',
top: '7rem',
top: '20rem',
margin: "2px",
},
}}
@ -214,7 +214,7 @@ const Partner_Header = () => {
<DialogTitle style={{ cursor: 'move', fontFamily:"DM Sans"}} id="draggable-dialog-title" >MySy Information</DialogTitle>
<DialogContent className="DialogContent_width">
<DialogContentText>
Confirmez la deconnexion <br />
Confirmez la deconnexion de l'Intranet<br />
</DialogContentText>

View File

@ -316,6 +316,7 @@ function Student_Account() {
formData.append('File', selectedFile);
formData.append("token", stored_user);
formData.append("type", "user");
// formData.append("apprenant_id", apprenant_id);
fetch(
process.env.REACT_APP_API_URL + "myclass/api/recordImage/",
{
@ -392,7 +393,7 @@ function Student_Account() {
<hr className="my_hr" />
<div className="sousmenu" onClick={funct_menu_mes_formations}> MES FORMATIONS</div>
<hr className="my_hr" />
<div className="sousmenu" onClick={funct_menu_mon_planning}> MON PLANNING</div>
{/* <div className="sousmenu" onClick={funct_menu_mon_planning}> MON PLANNING</div>
<hr className="my_hr" />
<div className="sousmenu" onClick={"displayProfil_Objectif"}> MES NOTES</div>
<hr className="my_hr" />
@ -400,6 +401,7 @@ function Student_Account() {
<hr className="my_hr" />
<div className="sousmenu" onClick={displayProfil_Modules_Mes_Documents}> MODULE TOUS DOCUMENTS</div>
<hr className="my_hr" />
*/}
{/* <div className="sousmenu" onClick={deletemyaccount}> SUPPRIMER MON COMPTE</div>
<hr className="my_hr" />*/}
@ -429,10 +431,10 @@ function Student_Account() {
</div>}
{connected_user_data && connected_user_data.type && <h1 style={{ textAlign: 'center' }}> ESPACE ENT INTRANET - {connected_user_data.type} - apprenant_id = {apprenant_id} </h1>}
{connected_user_data && connected_user_data.type && <h1 style={{ textAlign: 'center' }}> ESPACE ENT </h1>}
{String(menu) === String("affichage") && <UpdateUserInfo />}
{String(menu) === String("affichage") && <UpdateUserInfo apprenant_id={apprenant_id}/>}
{String(menu) === String("recherche") && <UserHistoryRecherche />}

View File

@ -962,8 +962,6 @@ function UpdateParnterInfo(props) {
form.append("indicateur_4_taille", p_indicateur4_taille);
form.append("indicateur_4_color", p_indicateur4_color);
form.append("contact_public_email", p_contact_public_email);
form.append("contact_public_telephone", p_contact_public_telephone);
@ -975,6 +973,21 @@ function UpdateParnterInfo(props) {
form.append("indicateur_4_gras", "400");
if (partner_catalog_pub_url)
form.append("partner_catalog_pub_url", partner_catalog_pub_url);
else
form.append("partner_catalog_pub_url", "");
if (partner_intranet_pub_url)
form.append("partner_intranet_pub_url", partner_catalog_pub_url);
else
form.append("partner_intranet_pub_url", "");
if (partner_ent_student_url)
form.append("partner_ent_student_url", partner_ent_student_url);
else
form.append("partner_ent_student_url", "");
form.append("_id", selected_catalog_pub_config_id);
@ -1737,6 +1750,7 @@ function UpdateParnterInfo(props) {
const [partner_catalog_pub_url, setpartner_catalog_pub_url] = useState("");
const [partner_intranet_pub_url, setpartner_intranet_pub_url] = useState("");
const [partner_ent_student_url, setpartner_ent_student_url] = useState("");
async function submenu_donnee_catalog_pub() {
Get_Partner_Catalog_Pub_Config();
@ -1744,9 +1758,11 @@ function UpdateParnterInfo(props) {
var new_nom = (p_nom).replace(/[^0-9a-z]/gi, '').toLocaleLowerCase();
var new_catalog_url = window.location.protocol + "//" + new_nom + "." + process.env.REACT_APP_PART_PUB_CATALOG_DOMAIN + "moncatalog";
var new_intranet_url = window.location.protocol + "//" + new_nom + "." + process.env.REACT_APP_PART_PUB_CATALOG_DOMAIN + "intranet";
var new_ent_student = window.location.protocol + "//" + new_nom + "." + process.env.REACT_APP_PART_PUB_CATALOG_DOMAIN + "ent_student";
setpartner_catalog_pub_url(new_catalog_url);
setpartner_intranet_pub_url(new_intranet_url);
setpartner_ent_student_url(new_ent_student);
setsubmenu("submenu_donnee_catalog_pub");
}
@ -2175,7 +2191,7 @@ function UpdateParnterInfo(props) {
}).catch((error) => {
setLoading(false);
console.warn('Not good man :( Get_Partner_Catalog_Pub_Config = ', error);
alert(" Impossible de récuperer la configuration du catalogue public ")
alert(" Impossible de récuperer la configuration de vos sites publics ")
})
}
@ -2602,16 +2618,16 @@ function UpdateParnterInfo(props) {
form.append("_id", selected_catalog_pub_config_id);
form.append("banniere_img", img_bg_file);
// console.log("Add_Update_Catalog_Pub_Banniere form == ", form);
// console.log("Add_Update_Catalog_Pub_Banniere form == ", form);
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Add_Update_Partner_Catalog_Pub_Config/";
// console.log("myurl== ", myurl);
// console.log("myurl== ", myurl);
setLoading(true);
axios.post(myurl, form).then(res => {
setLoading(false);
// console.log(" In Add_Update_Catalog_Pub_Banniere res.data.status = " + res.data.status);
// console.log(" In Add_Update_Catalog_Pub_Banniere res.data.status = " + res.data.status);
//console.log(" In Add_Update_Catalog_Pub_Banniere res.data.message r_class = " + res.data.message);
if (String(res.data.status) === String("true")) {
@ -3362,7 +3378,7 @@ function UpdateParnterInfo(props) {
>
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily:'DM Sans'}} id="draggable-dialog-title"> Choisir une couleur</DialogTitle>
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily: 'DM Sans' }} id="draggable-dialog-title"> Choisir une couleur</DialogTitle>
<DialogContent className="DialogContent_color_pickup_width" >
<DialogContentText>
@ -3429,7 +3445,7 @@ function UpdateParnterInfo(props) {
{String(is_partner_admin_account) === "1" && <Button variant="outlined" onClick={submenu_donnee_facturation} className="detail_submenu" id='submenu_donnee_facturation' name='submenu_donnee_facturation'>DONNEES FACTURATION</Button>}
<Button variant="outlined" onClick={submenu_donnee_securite} className="detail_submenu" id='submenu_donnee_securite' name='submenu_donnee_securite'>SECURITE</Button>
{/*<Button variant="outlined" onClick={submenu_contact} className="detail_submenu" id='submenu_contact' name='submenu_contact'>Contact & Adresses</Button>*/}
{String(is_partner_admin_account) === "1" && <Button variant="outlined" onClick={submenu_donnee_catalog_pub} className="detail_submenu" id='submenu_donnee_catalog_pub' name='submenu_donnee_catalog_pub'>CATALOG. PUB</Button>}
{String(is_partner_admin_account) === "1" && <Button variant="outlined" onClick={submenu_donnee_catalog_pub} className="detail_submenu" id='submenu_donnee_catalog_pub' name='submenu_donnee_catalog_pub'>SITES PUBLICS</Button>}
</div>
@ -3447,7 +3463,7 @@ function UpdateParnterInfo(props) {
</div>}
{String(submenu).trim() === "submenu_donnee_catalog_pub" && <div className="training_data">
<h3 style={{ fontFamily:'DM Sans' }}> Configuration du Catalogue public </h3>
<h3 style={{ fontFamily: 'DM Sans' }}> Configuration des sites publics </h3>
<div className="partner_catalog_pub">
@ -3455,7 +3471,7 @@ function UpdateParnterInfo(props) {
<div className="div_row">
<TextField
name="config_url"
label="lien web (url) mon catalogue "
label="lien web (url) Catalogue "
className="texte_area"
sx={{ m: 1, width: '48%' }}
InputProps={{
@ -3484,8 +3500,8 @@ function UpdateParnterInfo(props) {
</div>
<div className="div_row">
<TextField
name="config_url"
label="lien web (url) mon intranet "
name="config_url_intranet"
label="lien web (url) Intranet "
className="texte_area"
sx={{ m: 1, width: '20%' }}
InputProps={{
@ -3513,6 +3529,40 @@ function UpdateParnterInfo(props) {
</Button>
</div>
<div className="div_row">
<TextField
name="config_url_ent_student"
label="lien web (url) Espace numérique de travail (ENT) "
className="texte_area"
sx={{ m: 1, width: '20%' }}
InputProps={{
startAdornment: (
<InputAdornment position="start">
<LanguageIcon />
</InputAdornment>
),
}}
value={partner_ent_student_url}
/> <Button
onClick={(event) => {
window.open(
String(partner_ent_student_url),
'_blank'
);
}}
style={{ marginTop: '10px' }}
>
<OpenInNewIcon />
</Button>
</div>
<div className="div_row">
<hr className="hr_break" />
</div>
@ -3520,7 +3570,6 @@ function UpdateParnterInfo(props) {
{String(submenu_catalog_pub) === String("design") &&
<div style={{ "border": "None" }}>
<div className="div_row">
@ -4749,7 +4798,7 @@ function UpdateParnterInfo(props) {
{Partner_Catalog_Pub_banniere && String(Partner_Catalog_Pub_banniere).length > 20 && <div className="div_row" style={{ "border": "None" }}>
Bannière actuelle : <br />
<img src={Partner_Catalog_Pub_banniere} alt={""} className="img_bg_file_css" />
<img src={Partner_Catalog_Pub_banniere} alt={""} className="img_bg_file_css" />
<br />
<br />
<Button variant="contained" className="btn_enreg" onClick={Delete_Catalog_Pub_Banniere_Img}>Supprimer Bannière
@ -6014,27 +6063,27 @@ function UpdateParnterInfo(props) {
<div className="koUpdateData" style={{ "color": "orange", "textAlign": "center" }}> /!\ Pensez à enregistrer les modifications</div>
</div>}
</div>
<div className="div_row22">
{fields1desabled == false && <div className="div_row">
<div className="div_row_gauche">
<Button variant="contained" color="success" className="div_row22 btn_enreg " onClick={RecordData}>Enregistrer</Button>
</div>
<div className="div_row_droite">
<Button variant="contained" color="success" className="div_row22 btn_modif" onClick={annuler_change_user_data}>Annuler</Button>
</div>
{fields1desabled == false && <div className="div_row">
<div className="div_row_gauche">
<Button variant="contained" color="success" className="div_row22 btn_enreg " onClick={RecordData}>Enregistrer</Button>
</div>
<div className="div_row_droite">
<Button variant="contained" color="success" className="div_row22 btn_modif" onClick={annuler_change_user_data}>Annuler</Button>
</div>
}
{fields1desabled == true &&
<Button variant="contained" color="success" className="div_row22 btn_modif" onClick={enablefieds1}>Editer</Button>
}
</div>
<div className="div_row"> &nbsp;</div>
}
{fields1desabled == true &&
<Button variant="contained" color="success" className="div_row22 btn_modif" onClick={enablefieds1}>Editer</Button>
}
</div>
<div className="div_row"> &nbsp;</div>
<div className="titre1"> Accès E-Learning </div>
<div style={{ display: 'flex', flexDirection: 'row', gap: '20px', width: '100%', flexWrap: 'wrap', justifyContent: 'left' }} onChange={DataUpdated}>

View File

@ -21,9 +21,11 @@ import TwitterIcon from '@mui/icons-material/Twitter';
import FacebookIcon from '@mui/icons-material/Facebook';
import LinkedInIcon from '@mui/icons-material/LinkedIn';
import axios from "axios";
import { propsToClassKey } from "@mui/styles";
import img_loading_spin from "./../mysy_img/mysy_spin_loading.gif";
import Module_Alert_Confirmation from "./Module_Alert_Confirmation";
function UpdateUserInfo() {
function UpdateUserInfo(props) {
const history = useHistory();
const [myApiResponse, setmyApiResponse] = useState("");
const [result, setResult] = useState("");
@ -118,6 +120,8 @@ function UpdateUserInfo() {
var mylocaltraining = JSON.parse(res.data.message);
if (mylocaltraining) {
console.log(" #### mylocaltraining === ", mylocaltraining)
if (mylocaltraining.adr_city) {
document.getElementsByName("adr_city")[0].value = mylocaltraining.adr_city;
document.getElementsByName("adr_city")[0].disabled = true;
@ -173,14 +177,14 @@ function UpdateUserInfo() {
document.getElementsByName("adr_street")[0].style.backgroundColor = "#ECEFF1";
}
if (mylocaltraining.surname) {
document.getElementsByName("surname")[0].value = mylocaltraining.surname;
if (mylocaltraining.prenom) {
document.getElementsByName("surname")[0].value = mylocaltraining.prenom;
document.getElementsByName("surname")[0].disabled = true;
document.getElementsByName("surname")[0].style.backgroundColor = "#ECEFF1";
}
if (mylocaltraining.last_name) {
document.getElementsByName("last_name")[0].value = mylocaltraining.last_name;
if (mylocaltraining.nom) {
document.getElementsByName("last_name")[0].value = mylocaltraining.nom;
document.getElementsByName("last_name")[0].disabled = true;
document.getElementsByName("last_name")[0].style.backgroundColor = "#ECEFF1";
}
@ -298,9 +302,11 @@ function UpdateUserInfo() {
}
const [isLoading, setLoading] = useState();
function RecordData() {
const formData = new FormData();
const url = process.env.REACT_APP_API_URL + "myclass/api/update_user_account/";
const url = process.env.REACT_APP_API_URL + "myclass/api/Get_Ent_Student_update_user_account/";
var adr_city = document.getElementsByName("adr_city")[0].value;
var adr_zip = document.getElementsByName("adr_zip")[0].value;
@ -310,8 +316,8 @@ function UpdateUserInfo() {
var link_linkedin = document.getElementsByName("link_linkedin")[0].value;
var link_twitter = document.getElementsByName("link_twitter")[0].value;
var adr_street = document.getElementsByName("adr_street")[0].value;
var surname = document.getElementsByName("surname")[0].value;
var last_name = document.getElementsByName("last_name")[0].value;
var prenom = document.getElementsByName("surname")[0].value;
var nom = document.getElementsByName("last_name")[0].value;
formData.append('token', stored_user);
@ -322,11 +328,13 @@ function UpdateUserInfo() {
formData.append('link_facebook', link_facebook);
formData.append('link_twitter', link_twitter);
formData.append('adr_street', adr_street);
formData.append('surname', surname);
formData.append('last_name', last_name);
formData.append('prenom', prenom);
formData.append('nom', nom);
formData.append('link_linkedin', link_linkedin);
formData.append('apprenant_id', props.apprenant_id);
setLoading(true);
fetch(
url,
{
@ -336,22 +344,39 @@ function UpdateUserInfo() {
)
.then((response) => response.json())
.then((result) => {
setLoading(false);
//console.log('Success:', result['message'], "result['status'] = ", result['status']);
setmyApiResponse(result['status']);
setResult(result['message']);
if (String(result['status']) === String("true")) {
settestval("true");
desablefield1();
}else if (String(result['status']) === String("Err_Connexion")) {
setdisplay_alert_mysy("1");
setalert_message(result['message']);
setalert_type("success");
} else if (String(result['status']) === String("false")) {
setmyApiResponse("false");
setdisplay_alert_mysy("1");
setalert_message(result['message']);
setalert_type("error");
}
else if (String(result['status']) === String("Err_Connexion")) {
alert('Erreur: ' + result['message']);
history.push("/Connexion");
}
}
})
.catch((error) => {
setLoading(false);
console.error('Error:', error);
setmyApiResponse("false");
setdisplay_alert_mysy("1");
setalert_message("Impossible de mettre à jour les données");
setalert_type("error");
});
@ -396,7 +421,7 @@ function UpdateUserInfo() {
function UpdateUserPwd() {
setupdatepwd(false);
const url = process.env.REACT_APP_API_URL + "myclass/api/change_user_pwd/";
const url = process.env.REACT_APP_API_URL + "myclass/api/Get_Ent_Student_change_user_pwd/";
const formData = new FormData();
formData.append('token', stored_user);
@ -413,8 +438,9 @@ function UpdateUserInfo() {
formData.append('pwd', pwd);
formData.append('new_pwd', new_pwd);
formData.append('conf_new_pwd', conf_new_pwd);
formData.append('apprenant_id', props.apprenant_id);
setLoading(true);
fetch(
url,
{
@ -424,16 +450,26 @@ function UpdateUserInfo() {
)
.then((response) => response.json())
.then((result) => {
setLoading(false);
//console.log('Success:', result['message'], "result['status'] = ", result['status']);
setmyApiResponse(result['status']);
setResult(result['message']);
if (String(result['status']) == String("true")) {
setupdatepwd(true);
setfields1desabled(true);
setdisplay_alert_mysy("1");
setalert_message(result['message']);
setalert_type("success");
} else {
setdisplay_alert_mysy("1");
setalert_message(result['message']);
setalert_type("error");
}
})
.catch((error) => {
setLoading(false);
console.error('Error:', error);
setmyApiResponse("false");
setupdatepwd(false);
@ -498,32 +534,53 @@ function UpdateUserInfo() {
};
const [display_alert_mysy, setdisplay_alert_mysy] = useState("");
const [alert_message, setalert_message] = useState("");
const [alert_type, setalert_type] = useState("");
function clear_alert_message() {
setalert_message("");
}
function clear_alert_type() {
setalert_type("");
}
function clear_display_alert_mysy() {
setdisplay_alert_mysy("");
}
return (
<div className='updateuserinfo'>
{isLoading && <div className="loader-container">
<div className="mysy_spinner"> <img src={img_loading_spin} /> </div>
</div>}
{/*** Affichage des messages d'alerte*/}
{display_alert_mysy && String(display_alert_mysy) === "1" &&
<Module_Alert_Confirmation alert_message={alert_message}
alert_type={alert_type}
clear_alert_message={clear_alert_message}
clear_alert_type={clear_alert_type}
clear_display_alert_mysy={clear_display_alert_mysy}
/>
}
{/*** FIN Affichage des messages d'alerte*/}
<div className="titre1"> Données personnelles </div>
<hr className="my_hr"/>
<hr className="my_hr" />
{String(testval) == String("true") && <div className="okUpdateData">
Les données ont été mises à jour.
</div>
}
{String(testval) == String("false") && <div className="koUpdateData">
Erreur mise à jour.
</div>
}
&nbsp;
<Box alignItems="left" sx={{ '& > :not(style)': { m: 1 }, width: '100%', }}>
&nbsp;
<Box alignItems="left" sx={{ '& > :not(style)': { m: 1 }, width: '100%', }}>
<TextField
required
label="Nom"
name="last_name"
className="texte_area"
sx={{ m: 1, width: '48%' }}
sx={{ m: 1, width: '48%', fontFamily: 'DM Sans' }}
InputProps={{
startAdornment: (
<InputAdornment position="start">
@ -539,7 +596,7 @@ function UpdateUserInfo() {
name="surname"
label="Prénom"
className="texte_area"
sx={{ m: 1, width: '48%' }}
sx={{ m: 1, width: '48%', fontFamily: 'DM Sans' }}
InputProps={{
startAdornment: (
<InputAdornment position="start">
@ -646,7 +703,7 @@ function UpdateUserInfo() {
/>
<br />
<TextField
className="texte_area"
className="texte_area"
name="adr_zip"
label="Code Postal"
sx={{ m: 1, width: '48%' }}
@ -661,7 +718,7 @@ function UpdateUserInfo() {
/>
<TextField
className="texte_area"
className="texte_area"
name="adr_city"
label="Ville"
sx={{ m: 1, width: '48%' }}
@ -677,7 +734,7 @@ function UpdateUserInfo() {
<br />
<TextField
className="texte_area"
className="texte_area"
name="adr_country"
label="Pays"
sx={{ m: 1, width: '48%' }}
@ -709,24 +766,14 @@ function UpdateUserInfo() {
</div>
</Box>
<hr className="my_hr"/>
<div style={{"width":"10%"}}> &nbsp;</div>
<hr className="my_hr" />
<div style={{ "width": "10%" }}> &nbsp;</div>
<div className="titre1"> Securité </div>
<hr className="my_hr"/>
<hr className="my_hr" />
&nbsp;
<Box alignItems="left" sx={{ '& > :not(style)': { m: 1 } }}>
{updatepwd == false && <div className="koUpdateData">
Erreur mise à jour.
</div>
}
{updatepwd == true && <div className="okUpdateData">
La mise à jour été faite
</div>
}
&nbsp;
<Box alignItems="left" sx={{ '& > :not(style)': { m: 1 } }}>
<FormControl sx={{ m: 1, width: '90%' }} variant="standard" size="small" className="texte_area_passwd">
<InputLabel htmlFor="outlined-adornment-password"></InputLabel>
<OutlinedInput
@ -751,7 +798,7 @@ function UpdateUserInfo() {
</FormControl>
<br />
<FormControl sx={{ m: 1, width: '90%' }} variant="standard" size="small" className="texte_area_passwd">
<FormControl sx={{ m: 1, width: '90%' }} variant="standard" size="small" className="texte_area_passwd">
<InputLabel htmlFor="outlined-adornment-password2"></InputLabel>
<OutlinedInput
id="new_pwd"

View File

@ -160,7 +160,7 @@ const Header = () => {
setsomeoneconnected("0");
setDialog_1_open(false);
history.push("/recherche-formation");
}
}
function user_logout_confirmation() {
/* si c'est une connexion partner qui est active */
@ -197,7 +197,7 @@ const Header = () => {
style: {
overflowY: 'unset',
position: 'absolute',
top: '7rem',
top: '20rem',
margin: "2px",
},
}}

View File

@ -0,0 +1,322 @@
import React, { useState, useEffect } from 'react';
import './Header.css';
import moment from "moment";
import { getCookie } from 'react-use-cookie';
import { useHistory } from "react-router-dom";
import Header_MySy_Logo from '../../img_new_design_2025/header_mysy_logo.png';
import Header_User from '../../img_new_design_2025/header_user.png';
import Dialog from '@mui/material/Dialog';
import DialogActions from '@mui/material/DialogActions';
import DialogContent from '@mui/material/DialogContent';
import DialogContentText from '@mui/material/DialogContentText';
import DialogTitle from '@mui/material/DialogTitle';
import Button from '@mui/material/Button';
import { useCookies } from "react-cookie";
import CancelPresentationIcon from '@mui/icons-material/CancelPresentation';
import { makeStyles } from "@material-ui/core/styles";
import Paper from '@material-ui/core/Paper';
import Draggable from 'react-draggable';
import { IconButton } from '@material-ui/core';
function PaperComponent(props) {
return (
<Draggable
handle="#draggable-dialog-title"
cancel={'[class*="MuiDialogContent-root"]'}
>
<Paper {...props} />
</Draggable>
);
}
const useStyles = makeStyles((theme) => ({
dialog: {
position: 'absolute',
// left: 10,
top: 400
},
paper: {
overflowY: 'unset',
},
customizedButton: {
position: 'absolute',
left: '98%',
top: '-3%',
backgroundColor: 'lightgray',
color: 'gray',
},
}));
const Header_Client_Intranet = () => {
const history = useHistory();
const classes = useStyles();
const [userconnected, setuserconnected] = useState("0");
const [someoneconnected, setsomeoneconnected] = useState("0");
const [partnerconnected, setpartnerconnected] = useState("0");
const stored_user = getCookie('tokenmysych');
const stored_part = getCookie('tokenmysypart');
const [cookie, setCookie, removeCookie] = useCookies(['tokenmysych'], { path: '/' });
const [partcookie, setpartCookie, removepartCookie] = useCookies(['tokenmysypart'], { path: '/' });
const [PartnerMenu, setPartnerMenu] = React.useState(null);
const [AccountMenu, setAccountMenu] = React.useState(null);
const [ProduitMenu, setproduitMenu] = React.useState(null);
useEffect(() => {
var local_user_connect = 0;
var local_part_connect = 0;
if (typeof (stored_user) === "undefined" || String(stored_user) === '') {
setuserconnected("0");
local_user_connect = 0;
} else {
setuserconnected("1");
setsomeoneconnected("1");
local_user_connect = 1;
//alert(" user connected OK");
}
if (typeof (stored_part) === "undefined" || String(stored_part) === '') {
setpartnerconnected("0");
local_part_connect = 0;
} else {
setpartnerconnected("1");
setsomeoneconnected("1");
local_part_connect = 1;
//alert(" partner connected OK");
}
}, []);
const handleAccountCreation = () => {
setAccountMenu(null);
history.push("/signup/")
};
const handleMyAccount = () => {
setAccountMenu(null);
history.push("/mysy-user-account")
};
const handleAccountConnexion = () => {
setAccountMenu(null);
history.push("/signin/")
};
const handleMyPartnerAccount = () => {
setAccountMenu(null);
history.push("/Partner")
};
function handleAccountConnexion_v2() {
if (String(userconnected) === String("1")) {
handleMyAccount();
}
else if (String(partnerconnected) === String("1")) {
handleMyPartnerAccount();
}
}
const [Dialog_1_open, setDialog_1_open] = React.useState(false);
const Dialog_1_handleClose = () => {
};
const Dialog_1_handleClose_buton = () => {
setDialog_1_open(false);
};
function part_logout_confirmation() {
/* si c'est une connexion partner qui est active */
if (typeof (stored_part) != "undefined") {
const stored_cookie = getCookie('tokenmysypart');
var acces_right_token_name = stored_cookie + "_uar";
setpartCookie("tokenmysypart", "", { path: '/' });
setpartCookie(acces_right_token_name, "", { path: '/' });
removeCookie(acces_right_token_name, { path: '/' });
setpartCookie("mysy_session_display_view", "", { path: '/' });
setpartCookie("mysy_menu_gauche_reduit", "", { path: '/' });
setpartCookie("mysy_catalog_data_row_grouped_by", "", { path: '/' });
removeCookie("tokenmysypart", { path: '/' });
removeCookie("mysy_session_display_view", { path: '/' });
removeCookie("mysy_menu_gauche_reduit", { path: '/' });
removeCookie("mysy_catalog_data_row_grouped_by", { path: '/' });
}
setsomeoneconnected("0");
setDialog_1_open(false);
history.push("/recherche-formation");
}
function user_logout_confirmation() {
/* si c'est une connexion partner qui est active */
if (typeof (stored_user) != "undefined") {
const stored_cookie = getCookie('tokenmysych');
var acces_right_token_name = stored_cookie + "_uar";
setpartCookie("tokenmysych", "", { path: '/' });
setpartCookie(acces_right_token_name, "", { path: '/' });
removeCookie(acces_right_token_name, { path: '/' });
removeCookie("tokenmysych", { path: '/' });
}
history.push("/intranet");
}
return (
<div className='header_automatic_files'>
{/*** GESTION Deconnexion */}
<Dialog
open={Dialog_1_open}
// onClose={Dialog_1_handleClose}
className="displaypartnersession"
static
onClose={() => null}
PaperProps={{
className: classes.paper, // Apply the paper style
style: {
overflowY: 'unset',
position: 'absolute',
top: '20rem',
margin: "2px",
},
}}
hideBackdrop={true}
disableScrollLock
classes={{
paper: classes.dialog
}}
PaperComponent={PaperComponent}
aria-labelledby="draggable-dialog-title"
>
<DialogTitle style={{ cursor: 'move', fontFamily:"DM Sans"}} id="draggable-dialog-title" >MySy Information</DialogTitle>
<DialogContent className="DialogContent_width">
<DialogContentText>
Confirmez la deconnexion <br />
</DialogContentText>
</DialogContent>
<DialogActions>
<IconButton
//autoFocus
onClick={Dialog_1_handleClose_buton}
color="primary"
className={classes.customizedButton}
>
<CancelPresentationIcon />
</IconButton>
<div className="div_row">
<div className="div_row_gauche">
<Button
onClick={(e) => {
if (partnerconnected && String(partnerconnected) === '1')
part_logout_confirmation();
if (userconnected && String(userconnected) === '1')
user_logout_confirmation();
}}
className="bton_enreg_dialog">Deconnexion</Button>
</div>
<div className="div_row_droite" style={{ "textAlign": 'center' }}>
<Button onClick={Dialog_1_handleClose_buton} className="bton_annule_dialog" >Annuler</Button>
</div>
</div>
</DialogActions>
</Dialog>
{/*** Fin GESTION Deconnexion */}
<header className="header_new_2025">
<div className="header-content">
<div className="logo-menu">
<img src={Header_MySy_Logo} alt="Logo MySy" className="logo" style={{ cursor: 'pointer' }} onClick={(e) => {
// e.preventDefault();
history.push("/");
}} />
<nav className="menu-list">
<a href="/apropos" className="menu-link">À propos</a>
<a href="/fonctionnalites" className="menu-link">Fonctionnalités</a>
<a href="#" className="menu-link">
<nav onClick={(e) => {
history.push("/tarif/#debut");
// window.open("/tarif/#debut", "_self");
}}>Tarifs </nav>
</a>
<a href="/Recherche-Article-formation" className="menu-link">Blog</a>
<div className="separator"></div>
<a href="/marketplace" className="menu-link">Marketplace</a>
</nav>
</div>
<div className="cta-login">
<div className="cta-buttons">
<button className="btn btn-primary" onClick={(e) => {
e.preventDefault();
var date2 = new Date();
const format2 = "YYYY-MM";
var dateTime2 = moment(date2).format(format2);
window.open(
"https://calendly.com/mysytraining/demo-mysy-training-solution?month=" + String(dateTime2),
'_blank'
);
}}>Réserver une démo</button>
</div>
<div className="cta-buttons hide_on_mobile">
{String(someoneconnected) !== String("1") && <button className="btn btn-secondary" onClick={handleAccountCreation}>Créer un compte</button>}
{String(someoneconnected) === String("1") && <button className="btn btn-secondary" onClick={handleAccountConnexion_v2}>Mon compte</button>}
</div>
<div className="separator hide_on_mobile"></div>
{String(someoneconnected) !== String("1") && <div className="login-link hide_on_mobile" onClick={handleAccountConnexion}>
<img src={Header_User} alt="User icon" className="user-icon hide_on_mobile" />
<span className='hide_on_mobile'>Connexion</span>
</div>}
{String(someoneconnected) === String("1") && <div className="login-link hide_on_mobile" onClick={(e) => setDialog_1_open(true)}>
<img src={Header_User} alt="User icon" className="user-icon hide_on_mobile" />
<span className='hide_on_mobile'>Deconnexion</span>
</div>}
</div>
</div >
</header >
</div >
);
};
export default Header_Client_Intranet;

View File

@ -0,0 +1,322 @@
import React, { useState, useEffect } from 'react';
import './Header.css';
import moment from "moment";
import { getCookie } from 'react-use-cookie';
import { useHistory } from "react-router-dom";
import Header_MySy_Logo from '../../img_new_design_2025/header_mysy_logo.png';
import Header_User from '../../img_new_design_2025/header_user.png';
import Dialog from '@mui/material/Dialog';
import DialogActions from '@mui/material/DialogActions';
import DialogContent from '@mui/material/DialogContent';
import DialogContentText from '@mui/material/DialogContentText';
import DialogTitle from '@mui/material/DialogTitle';
import Button from '@mui/material/Button';
import { useCookies } from "react-cookie";
import CancelPresentationIcon from '@mui/icons-material/CancelPresentation';
import { makeStyles } from "@material-ui/core/styles";
import Paper from '@material-ui/core/Paper';
import Draggable from 'react-draggable';
import { IconButton } from '@material-ui/core';
function PaperComponent(props) {
return (
<Draggable
handle="#draggable-dialog-title"
cancel={'[class*="MuiDialogContent-root"]'}
>
<Paper {...props} />
</Draggable>
);
}
const useStyles = makeStyles((theme) => ({
dialog: {
position: 'absolute',
// left: 10,
top: 400
},
paper: {
overflowY: 'unset',
},
customizedButton: {
position: 'absolute',
left: '98%',
top: '-3%',
backgroundColor: 'lightgray',
color: 'gray',
},
}));
const Header_ENT_Student = () => {
const history = useHistory();
const classes = useStyles();
const [userconnected, setuserconnected] = useState("0");
const [someoneconnected, setsomeoneconnected] = useState("0");
const [partnerconnected, setpartnerconnected] = useState("0");
const stored_user = getCookie('tokenmysych');
const stored_part = getCookie('tokenmysypart');
const [cookie, setCookie, removeCookie] = useCookies(['tokenmysych'], { path: '/' });
const [partcookie, setpartCookie, removepartCookie] = useCookies(['tokenmysypart'], { path: '/' });
const [PartnerMenu, setPartnerMenu] = React.useState(null);
const [AccountMenu, setAccountMenu] = React.useState(null);
const [ProduitMenu, setproduitMenu] = React.useState(null);
useEffect(() => {
var local_user_connect = 0;
var local_part_connect = 0;
if (typeof (stored_user) === "undefined" || String(stored_user) === '') {
setuserconnected("0");
local_user_connect = 0;
} else {
setuserconnected("1");
setsomeoneconnected("1");
local_user_connect = 1;
//alert(" user connected OK");
}
if (typeof (stored_part) === "undefined" || String(stored_part) === '') {
setpartnerconnected("0");
local_part_connect = 0;
} else {
setpartnerconnected("1");
setsomeoneconnected("1");
local_part_connect = 1;
//alert(" partner connected OK");
}
}, []);
const handleAccountCreation = () => {
setAccountMenu(null);
history.push("/signup/")
};
const handleMyAccount = () => {
setAccountMenu(null);
history.push("/mysy-user-account")
};
const handleAccountConnexion = () => {
setAccountMenu(null);
history.push("/signin/")
};
const handleMyPartnerAccount = () => {
setAccountMenu(null);
history.push("/Partner")
};
function handleAccountConnexion_v2() {
if (String(userconnected) === String("1")) {
handleMyAccount();
}
else if (String(partnerconnected) === String("1")) {
handleMyPartnerAccount();
}
}
const [Dialog_1_open, setDialog_1_open] = React.useState(false);
const Dialog_1_handleClose = () => {
};
const Dialog_1_handleClose_buton = () => {
setDialog_1_open(false);
};
function part_logout_confirmation() {
/* si c'est une connexion partner qui est active */
if (typeof (stored_part) != "undefined") {
const stored_cookie = getCookie('tokenmysypart');
var acces_right_token_name = stored_cookie + "_uar";
setpartCookie("tokenmysypart", "", { path: '/' });
setpartCookie(acces_right_token_name, "", { path: '/' });
removeCookie(acces_right_token_name, { path: '/' });
setpartCookie("mysy_session_display_view", "", { path: '/' });
setpartCookie("mysy_menu_gauche_reduit", "", { path: '/' });
setpartCookie("mysy_catalog_data_row_grouped_by", "", { path: '/' });
removeCookie("tokenmysypart", { path: '/' });
removeCookie("mysy_session_display_view", { path: '/' });
removeCookie("mysy_menu_gauche_reduit", { path: '/' });
removeCookie("mysy_catalog_data_row_grouped_by", { path: '/' });
}
setsomeoneconnected("0");
setDialog_1_open(false);
history.push("/recherche-formation");
}
function user_logout_confirmation() {
/* si c'est une connexion partner qui est active */
if (typeof (stored_user) != "undefined") {
const stored_cookie = getCookie('tokenmysych');
var acces_right_token_name = stored_cookie + "_uar";
setpartCookie("tokenmysych", "", { path: '/' });
setpartCookie(acces_right_token_name, "", { path: '/' });
removeCookie(acces_right_token_name, { path: '/' });
removeCookie("tokenmysych", { path: '/' });
}
history.push("/intranet");
}
return (
<div className='header_automatic_files'>
{/*** GESTION Deconnexion */}
<Dialog
open={Dialog_1_open}
// onClose={Dialog_1_handleClose}
className="displaypartnersession"
static
onClose={() => null}
PaperProps={{
className: classes.paper, // Apply the paper style
style: {
overflowY: 'unset',
position: 'absolute',
top: '20rem',
margin: "2px",
},
}}
hideBackdrop={true}
disableScrollLock
classes={{
paper: classes.dialog
}}
PaperComponent={PaperComponent}
aria-labelledby="draggable-dialog-title"
>
<DialogTitle style={{ cursor: 'move', fontFamily:"DM Sans"}} id="draggable-dialog-title" >MySy Information</DialogTitle>
<DialogContent className="DialogContent_width">
<DialogContentText>
Confirmez la deconnexion <br />
</DialogContentText>
</DialogContent>
<DialogActions>
<IconButton
//autoFocus
onClick={Dialog_1_handleClose_buton}
color="primary"
className={classes.customizedButton}
>
<CancelPresentationIcon />
</IconButton>
<div className="div_row">
<div className="div_row_gauche">
<Button
onClick={(e) => {
if (partnerconnected && String(partnerconnected) === '1')
part_logout_confirmation();
if (userconnected && String(userconnected) === '1')
user_logout_confirmation();
}}
className="bton_enreg_dialog">Deconnexion</Button>
</div>
<div className="div_row_droite" style={{ "textAlign": 'center' }}>
<Button onClick={Dialog_1_handleClose_buton} className="bton_annule_dialog" >Annuler</Button>
</div>
</div>
</DialogActions>
</Dialog>
{/*** Fin GESTION Deconnexion */}
<header className="header_new_2025">
<div className="header-content">
<div className="logo-menu">
<img src={Header_MySy_Logo} alt="Logo MySy" className="logo" style={{ cursor: 'pointer' }} onClick={(e) => {
// e.preventDefault();
history.push("/");
}} />
<nav className="menu-list">
<a href="/apropos" className="menu-link">À propos</a>
<a href="/fonctionnalites" className="menu-link">Fonctionnalités</a>
<a href="#" className="menu-link">
<nav onClick={(e) => {
history.push("/tarif/#debut");
// window.open("/tarif/#debut", "_self");
}}>Tarifs </nav>
</a>
<a href="/Recherche-Article-formation" className="menu-link">Blog</a>
<div className="separator"></div>
<a href="/marketplace" className="menu-link">Marketplace</a>
</nav>
</div>
<div className="cta-login">
<div className="cta-buttons">
<button className="btn btn-primary" onClick={(e) => {
e.preventDefault();
var date2 = new Date();
const format2 = "YYYY-MM";
var dateTime2 = moment(date2).format(format2);
window.open(
"https://calendly.com/mysytraining/demo-mysy-training-solution?month=" + String(dateTime2),
'_blank'
);
}}>Réserver une démo</button>
</div>
<div className="cta-buttons hide_on_mobile">
{String(someoneconnected) !== String("1") && <button className="btn btn-secondary" onClick={handleAccountCreation}>Créer un compte</button>}
{String(someoneconnected) === String("1") && <button className="btn btn-secondary" onClick={handleAccountConnexion_v2}>Mon compte</button>}
</div>
<div className="separator hide_on_mobile"></div>
{String(someoneconnected) !== String("1") && <div className="login-link hide_on_mobile" onClick={handleAccountConnexion}>
<img src={Header_User} alt="User icon" className="user-icon hide_on_mobile" />
<span className='hide_on_mobile'>Connexion</span>
</div>}
{String(someoneconnected) === String("1") && <div className="login-link hide_on_mobile" onClick={(e) => setDialog_1_open(true)}>
<img src={Header_User} alt="User icon" className="user-icon hide_on_mobile" />
<span className='hide_on_mobile'>Deconnexion</span>
</div>}
</div>
</div >
</header >
</div >
);
};
export default Header_ENT_Student;

View File

@ -25,7 +25,7 @@ const SideBar = () => {
const environnment = process.env.REACT_APP_ENV
function logout_confirmation() {

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

View File

@ -1,21 +1,21 @@
import Navigation from "../components/Navigation";
import Ent_Intranet from "./../components/Ent_Intranet";
import Partner_New_C_Header_2025_V2 from "../components/Partner_header_automatic_files/Partner_Header";
import ENT_Student_New_C_Header_2025_V2 from "../components/ENT_Student_header_automatic_files/ENT_Student_Header";
import New_C_Footer_Without_Testimony_2025_V2 from "../components/footer_automatic_files/Layout_Without_Testimony";
import New_Navigation_2025 from "../components/New_Navigation_2025";
import New_Navigation_ENT_Student_2025 from "../components/New_Navigation_ENT_Student_2025";
import Student_Account from "./../components/Student_Account";
const student_account = () => {
return (
<div>
<New_Navigation_2025 />
<Partner_New_C_Header_2025_V2 />
<New_Navigation_ENT_Student_2025 />
<ENT_Student_New_C_Header_2025_V2 />
<Student_Account />
<New_C_Footer_Without_Testimony_2025_V2 />
</div>
)
}
}
export default student_account;

View File

@ -1163,6 +1163,7 @@
text-align: left;
color: black;
margin-left: 5px;
max-width: 20rem;
}
.containerBox {

View File

@ -1845,7 +1845,7 @@
text-align: center;
margin-bottom: 0.8rem;
color: white;
cursor: pointer;
cursor: normal;
font-style: italic;
background-color: gray;
font-weight: normal;
@ -2498,7 +2498,7 @@
text-align: center;
margin-bottom: 0.8rem;
color: white;
cursor: pointer;
cursor: normal;
font-style: italic;
background-color: gray;
font-weight: normal;

View File

@ -2558,8 +2558,8 @@
}
.DialogContent_width {
width: 1500px !important;
max-width: 1500px !important;
width: 800px;
max-width: 800;
}
.DialogContent_width_session {

View File

@ -10,7 +10,7 @@
padding-right: 0.2rem !important;
height: 3rem !important;
margin-bottom: 1rem;
}
}
.css-1o9s3wi-MuiInputBase-input-MuiOutlinedInput-input {
height: 2.5rem !important;
@ -241,7 +241,7 @@
border: 1px solid #9cf;
color: #3b3e40;
font-family: "DM Sans", "sans-serif";
font-size: small;
font-size: 11px;
letter-spacing: 0.1rem;
font-weight: normal;
width: 100%;
@ -505,7 +505,7 @@
border: 1px solid #9cf;
color: #3b3e40;
font-family: "DM Sans", "sans-serif";
font-size: small;
font-size: 11px;
letter-spacing: 0.1rem;
font-weight: normal;
height: 2rem !important;
@ -766,7 +766,7 @@
border: 1px solid #9cf;
color: #3b3e40;
font-family: "DM Sans", "sans-serif";
font-size: small;
font-size: 11px;
letter-spacing: 0.1rem;
font-weight: normal;
height: 2rem !important;
@ -1046,7 +1046,7 @@
border: 1px solid #9cf;
color: #3b3e40;
font-family: "DM Sans", "sans-serif";
font-size: small;
font-size: 11px;
letter-spacing: 0.1rem;
font-weight: normal;
height: 2rem !important;

View File

@ -1,10 +1,40 @@
.updateuserinfo {
.loader-container {
width: 100%;
height: 100vh;
display: flex;
justify-content: center;
align-items: center;
position: fixed;
background: white;
background-color: transparent;
z-index: 1;
top: 0px;
opacity: 80%;
left: 0px;
}
.spinner {
width: 20rem;
height: 10rem;
border: 8px solid;
border-color: #3d5af1 transparent #3d5af1 transparent;
border-radius: 50%;
animation: spin-anim 1.2s linear infinite;
background-color: red;
color: black;
}
.mysy_spinner {
border-radius: 5px;
//border: 1px solid #d5d8dc;
opacity: 100%;
}
width: 100%;
float: left;
@media only screen and (max-width: 600px) {
@media only screen and (max-width: 600px) {
text-align: left;
font-size: small !important;
@ -18,21 +48,21 @@
margin-top: 0.3rem;
}
.texte_area{
.texte_area {
width: 90% !important;
font-size: x-small !important;
font-family: "DM Sans", "sans-serif";
margin: 0.4rem !important;
}
.texte_area_adress{
.texte_area_adress {
width: 90% !important;
font-size: x-small !important;
font-family: "DM Sans", "sans-serif";
margin: 0.4rem !important;
}
.texte_area_passwd{
.texte_area_passwd {
width: 90% !important;
font-size: x-small !important;
font-family: "DM Sans", "sans-serif";
@ -41,7 +71,7 @@
input{
input {
font-size: small !important;
padding-top: 0.2rem;
padding-bottom: 0.2rem;
@ -58,13 +88,13 @@
background-color: gray;
font-weight: normal;
}
.big_hr {
height: 0.2rem;
border-width: 0;
color: black;
}
.div_row22 {
text-align: center;
border-width: 0.01rem;
@ -73,49 +103,50 @@
border-radius: 1rem;
font-size: small;
}
.btn_modif {
width: 7rem;
background-color: #212121 !important;
}
.btn_enreg {
width: 7rem;
background-color: green !important;
}
.okUpdateData {
font-size: small;
color: green;
font-style: italic;
}
.koUpdateData {
font-size: small;
color: red;
font-style: italic;
}
}
@media only screen and (min-width: 601px) and (max-width: 991px) {
text-align: left;
font-size: medium !important;
.texte_area{
.texte_area {
width: 47% !important;
font-size: x-small !important;
font-family: "DM Sans", "sans-serif";
margin: 0.4rem !important;
}
.texte_area_adress{
.texte_area_adress {
width: 96% !important;
font-size: x-small !important;
font-family: "DM Sans", "sans-serif";
margin: 0.4rem !important;
}
.texte_area_passwd{
.texte_area_passwd {
width: 95% !important;
font-size: x-small !important;
font-family: "DM Sans", "sans-serif";
@ -124,7 +155,7 @@
input{
input {
font-size: small !important;
padding-top: 0.2rem;
padding-bottom: 0.2rem;
@ -142,13 +173,13 @@
background-color: gray;
font-weight: normal;
}
.big_hr {
height: 0.2rem;
border-width: 0;
color: black;
}
.div_row22 {
text-align: center;
border-width: 0.01rem;
@ -157,30 +188,31 @@
border-radius: 1rem;
font-size: small;
}
.btn_modif {
width: 10rem;
background-color: #212121 !important;
}
.btn_enreg {
width: 10rem;
background-color: green !important;
}
.okUpdateData {
font-size: small;
color: green;
font-style: italic;
}
.koUpdateData {
font-size: small;
color: red;
font-style: italic;
}
}
@media only screen and (min-width: 992px) and (max-width: 1199px) {
text-align: left;
font-size: larger !important;
@ -196,23 +228,23 @@
background-color: gray;
font-weight: normal;
}
.texte_area{
.texte_area {
width: 47% !important;
font-size: x-small !important;
font-family: "DM Sans", "sans-serif";
margin: 0.4rem !important;
}
.texte_area_adress{
.texte_area_adress {
width: 96% !important;
font-size: x-small !important;
font-family: "DM Sans", "sans-serif";
margin: 0.4rem !important;
}
.texte_area_passwd{
.texte_area_passwd {
width: 95% !important;
font-size: x-small !important;
font-family: "DM Sans", "sans-serif";
@ -221,7 +253,7 @@
input{
input {
font-size: small !important;
padding-top: 0.2rem;
padding-bottom: 0.2rem;
@ -233,7 +265,7 @@
border-width: 0;
color: black;
}
.div_row22 {
text-align: center;
border-width: 0.01rem;
@ -242,31 +274,31 @@
border-radius: 1rem;
font-size: small;
}
.btn_modif {
width: 10rem;
background-color: #212121 !important;
}
.btn_enreg {
width: 10rem;
background-color: green !important;
}
.okUpdateData {
font-size: small;
color: green;
font-style: italic;
}
.koUpdateData {
font-size: small;
color: red;
font-style: italic;
}
}
@media only screen and (min-width: 1200px) {
text-align: left;
font-size: medium !important;
@ -283,41 +315,41 @@
font-weight: normal;
}
.texte_area{
.texte_area {
width: 47% !important;
font-size: x-small !important;
font-family: "DM Sans", "sans-serif";
margin: 0.4rem !important;
}
.texte_area_adress{
.texte_area_adress {
width: 96% !important;
font-size: x-small !important;
font-family: "DM Sans", "sans-serif";
margin: 0.4rem !important;
}
.texte_area_passwd{
.texte_area_passwd {
width: 95% !important;
font-size: x-small !important;
font-family: "DM Sans", "sans-serif";
margin: 0.4rem !important;
}
input{
input {
font-size: medium !important;
padding-top: 0.2rem;
padding-bottom: 0.2rem;
}
.big_hr {
height: 0.2rem;
border-width: 0;
color: black;
}
.div_row22 {
text-align: center;
border-width: 0.01rem;
@ -326,28 +358,28 @@
border-radius: 1rem;
font-size: small;
}
.btn_modif {
width: 10rem;
background-color: #212121 !important;
}
.btn_enreg {
width: 10rem;
background-color: green !important;
}
.okUpdateData {
font-size: small;
color: green;
font-style: italic;
}
.koUpdateData {
font-size: small;
color: red;
font-style: italic;
}
}
}
}