05/06/2025 - 20h
parent
c2049afb63
commit
eb6b78b7b2
24
src/App.js
24
src/App.js
|
@ -13,15 +13,15 @@ import Recherche_new_v4 from "./pages/recherche_new_v4";
|
|||
import Mon_Catalogue_Public from "./pages/mon_catalogue_public";
|
||||
import Mon_Intranet_Public from "./pages/mon_intranet_public";
|
||||
|
||||
import Mon_Ent_Student from "./pages/mon_ent_student";
|
||||
|
||||
|
||||
import TestUrl from "./pages/testurl";
|
||||
import Account from "./pages/account";
|
||||
|
||||
import DisplayDetailClass_new_v2 from "./pages/displaydetailclass_new_v2";
|
||||
import DisplayDetailClass_new_v3 from "./pages/displaydetailclass_new_v3";
|
||||
import Student_Account from "./pages/student_account";
|
||||
|
||||
import Display_Partner_Catalog_DetailClass_new_v2 from "./pages/display_partner_catalog_detailclass_new_v2"
|
||||
|
||||
import DisplayDetailArticle from "./pages/displaydetailarticle";
|
||||
import AddArticleAvis from "./pages/addarticleavis";
|
||||
import Acceuil from "./pages/acceuil";
|
||||
import Partner from "./pages/partner";
|
||||
|
@ -34,9 +34,6 @@ import RechecheArticles from "./pages/recherchearticles";
|
|||
import AddArticle from "./pages/addarticle";
|
||||
import ResetUserPwd from "./pages/resetuserpwd";
|
||||
import DeleteUserAccount from "./pages/deleteuseraccount";
|
||||
|
||||
import ContactezNous from "./pages/contactez_nous";
|
||||
import CoupDeCoeur from "./pages/coupdecoeur";
|
||||
import AccountUserActivated from "./pages/accountuseractivated";
|
||||
import ProduitsService from "./pages/produitservice";
|
||||
|
||||
|
@ -50,8 +47,6 @@ import SeDesabonner from './pages/sedesabonner';
|
|||
import OrderConfirmation_3DS from "./pages/orderconfirmation_3DS";
|
||||
import Training_Inactive_Or_Not_Found from "./pages/Traning_Inactif_Or_Not_Exist";
|
||||
import TestUrl_New from "./pages/testurl_new";
|
||||
import QuiSommesNous_v3 from "./pages/quisommesnous_v3";
|
||||
import Fonctionnalites from "./pages/fonctionnalite";
|
||||
import Test_Drag_Drop from "./pages/test_drag_drop";
|
||||
import Test_Drag_Drop2 from "./pages/test_dnd";
|
||||
import ESign from "./pages/eSigne";
|
||||
|
@ -123,8 +118,7 @@ function App() {
|
|||
|
||||
var tab_action = ['/moncatalog', '/Display-Partner-Catalog-Detail-formation', 'Display-Partner-Catalog-Detail-formation', 'moncatalog'];
|
||||
|
||||
|
||||
|
||||
|
||||
if (tab_myurl_pathname.length > 0 && !tab_action.includes(tab_myurl_pathname[1]) && !tab_reserved_subdomain.includes(subdomain)) {
|
||||
|
||||
var new_url = window.location.protocol + "//" + domain.split('.')[0] + "." + domain.split('.')[1] + "/moncatalog";
|
||||
|
@ -156,12 +150,13 @@ function App() {
|
|||
<Route path="/v3" exact component={Recherche_new_v3} />
|
||||
<Route path="/v4" exact component={Recherche_new_v4} />
|
||||
|
||||
|
||||
<Route path="/subdomain" exact component={Subdomain_Recherche_new_v2} />
|
||||
|
||||
<Route path="/moncatalog" exact component={Mon_Catalogue_Public} />
|
||||
<Route path="/intranet" exact component={Mon_Intranet_Public} />
|
||||
|
||||
<Route path="/ent_student" exact component={Mon_Ent_Student} />
|
||||
|
||||
|
||||
<Route path="/acceuil" exact component={Acceuil} />
|
||||
|
||||
|
@ -184,9 +179,6 @@ function App() {
|
|||
<Route path="/Display-Partner-Catalog-Detail-formation/:classId/:action" exact component={Display_Partner_Catalog_DetailClass_new_v2} />
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<Route path="/mysy-account-activated/" exact component={AccountUserActivated} />
|
||||
{/* <Route path="/Produits-Services/" exact component={ProduitsService} />*/}
|
||||
<Route path="/tarifs_produits_services/" exact component={ProduitsService} />
|
||||
|
@ -284,7 +276,7 @@ function App() {
|
|||
|
||||
<Route path="/DeleteUserAccount/:token" exact component={DeleteUserAccount} />
|
||||
|
||||
|
||||
<Route path="/mysy-student-account" exact component={Student_Account} />
|
||||
|
||||
{/* Fin Migration */}
|
||||
|
||||
|
|
|
@ -398,7 +398,7 @@ function Account() {
|
|||
{isSelected && <div className="nonlable">
|
||||
<Button variant="outlined" onClick={sendImage} >Enregistrer</Button>
|
||||
</div>}
|
||||
|
||||
|
||||
</div>
|
||||
<div className="nom_prenom"> {username && <b> {username} </b>}
|
||||
{!username && <b> xxxx </b>} </div>
|
||||
|
@ -443,7 +443,7 @@ function Account() {
|
|||
|
||||
{/** Menu pour un utilisateur NON type 'user' exemple un apprenant */}
|
||||
{connected_user_data && connected_user_data.type &&
|
||||
String(connected_user_data.type) !== "user" &&
|
||||
String(connected_user_data.type) !== "student" &&
|
||||
<div>
|
||||
<div className="sousmenu" onClick={displayPersoInfo}> INFORMATIONS PERSONNELLES</div>
|
||||
<hr className="my_hr" />
|
||||
|
@ -568,8 +568,6 @@ function Account() {
|
|||
/>}
|
||||
|
||||
|
||||
|
||||
|
||||
{String(menu) === String("mes_documents") && <Profil_Objectif />}
|
||||
|
||||
|
||||
|
|
|
@ -6801,7 +6801,8 @@ const AddClassManual = (props) => {
|
|||
rows_champs_specifics.map((champ_spec) => (
|
||||
|
||||
<div className="training_caract">
|
||||
{String(JSON.parse(champ_spec).field_type) === "float" && <TextField
|
||||
{String(JSON.parse(champ_spec).field_type) === "float" &&
|
||||
<TextField
|
||||
name={JSON.parse(champ_spec).field_name}
|
||||
id={JSON.parse(champ_spec).field_name}
|
||||
label={JSON.parse(champ_spec).field_label}
|
||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -3887,10 +3887,7 @@ const DisplayPartnerSession = (props) => {
|
|||
|
||||
submenu_color_management("detail_session");
|
||||
|
||||
|
||||
await sleep(2);
|
||||
if (edit_session_form === false) {
|
||||
|
||||
desableSessionFields();
|
||||
}
|
||||
|
||||
|
@ -4166,24 +4163,8 @@ const DisplayPartnerSession = (props) => {
|
|||
setnb_stagiaire_Inscrit("0");
|
||||
|
||||
/* Activation des champs spécifiques */
|
||||
|
||||
// Pour les champs spécifiques
|
||||
|
||||
submenu_detail_session();
|
||||
|
||||
for (let i = 0; i < rows_champs_specifics.length; i++) {
|
||||
|
||||
var field_name = JSON.parse(rows_champs_specifics[i]).field_name;
|
||||
var field_type = JSON.parse(rows_champs_specifics[i]).field_type;
|
||||
var field_label = JSON.parse(rows_champs_specifics[i]).field_label;
|
||||
var is_mandatory = JSON.parse(rows_champs_specifics[i]).is_mandatory;
|
||||
|
||||
if (document.getElementsByName(String(field_name))) {
|
||||
|
||||
document.getElementsByName(String(field_name)).disabled = false;
|
||||
document.getElementsByName(String(field_name)).backgroundColor = "#FFFFFF";
|
||||
}
|
||||
}
|
||||
setsubmenu("detail_session");
|
||||
submenu_color_management("detail_session");
|
||||
|
||||
setgridline_id('');
|
||||
setsequence_gridline_id("");
|
||||
|
@ -4195,6 +4176,19 @@ const DisplayPartnerSession = (props) => {
|
|||
behavior: "smooth",
|
||||
});
|
||||
|
||||
for (let i = 0; i < rows_champs_specifics.length; i++) {
|
||||
|
||||
var field_name = JSON.parse(rows_champs_specifics[i]).field_name;
|
||||
var field_type = JSON.parse(rows_champs_specifics[i]).field_type;
|
||||
var field_label = JSON.parse(rows_champs_specifics[i]).field_label;
|
||||
var is_mandatory = JSON.parse(rows_champs_specifics[i]).is_mandatory;
|
||||
|
||||
if (document.getElementsByName(String(field_name))) {
|
||||
document.getElementsByName(String(field_name)).disabled = false;
|
||||
document.getElementsByName(String(field_name)).backgroundColor = "#FFFFFF";
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -5799,14 +5793,6 @@ const DisplayPartnerSession = (props) => {
|
|||
const [one_editorRef_contenu_ftion_limite, setone_editorRef_description_limite] = useState(800);
|
||||
|
||||
const [field_contenu_ftion, setfield_contenu_ftion] = useState("");
|
||||
function editor_contenu_ftion_keyup() {
|
||||
setsessionChanged(true);
|
||||
}
|
||||
|
||||
|
||||
function one_editor_contenu_ftion_keyup() {
|
||||
setsessionChanged(true);
|
||||
}
|
||||
|
||||
|
||||
function One_annuleSessionUpdate() {
|
||||
|
@ -5817,8 +5803,16 @@ const DisplayPartnerSession = (props) => {
|
|||
setCreateSessionFormation_message();
|
||||
setone_CreateSessionFormation_api();
|
||||
setone_CreateSessionFormation_message();
|
||||
setone_CreateSessionFormation_result()
|
||||
setaddOneSession();
|
||||
setone_CreateSessionFormation_result([])
|
||||
setaddOneSession("");
|
||||
|
||||
setsubmenu("");
|
||||
setselected_code_session("");
|
||||
|
||||
window.scrollTo({
|
||||
top: 0,
|
||||
behavior: "smooth",
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
@ -5965,9 +5959,7 @@ const DisplayPartnerSession = (props) => {
|
|||
|
||||
|
||||
// Pour les champs spécifiques
|
||||
|
||||
|
||||
if (String(addOneSession) !== "1") {
|
||||
if (String(addOneSession) !== "1") {
|
||||
for (let i = 0; i < rows_champs_specifics.length; i++) {
|
||||
|
||||
var field_name = JSON.parse(rows_champs_specifics[i]).field_name;
|
||||
|
@ -5986,6 +5978,7 @@ const DisplayPartnerSession = (props) => {
|
|||
|
||||
setfields1desabled(true);
|
||||
|
||||
|
||||
}
|
||||
|
||||
let [edit_session_form, setedit_session_form] = useState(false);
|
||||
|
@ -7112,7 +7105,7 @@ const DisplayPartnerSession = (props) => {
|
|||
setnb_valide_inscription_individuelle("");
|
||||
}
|
||||
|
||||
if (mylocaltraining.archive) {
|
||||
if (mylocaltraining.archive) {
|
||||
setp_detail_archive(mylocaltraining.archive);
|
||||
} else {
|
||||
setp_detail_archive("");
|
||||
|
@ -7583,17 +7576,17 @@ const DisplayPartnerSession = (props) => {
|
|||
return currentDate.getTime() < selectedDate.getTime();
|
||||
};
|
||||
|
||||
function One_annuleSessionUpdate() {
|
||||
One_clearSessionFields();
|
||||
//GetCurrentSession(selected_code_session);
|
||||
setsessionChanged(false);
|
||||
setCreateSessionFormation_api();
|
||||
setCreateSessionFormation_message();
|
||||
setone_CreateSessionFormation_api();
|
||||
setone_CreateSessionFormation_message();
|
||||
setone_CreateSessionFormation_result()
|
||||
setaddOneSession();
|
||||
}
|
||||
/* function One_annuleSessionUpdate() {
|
||||
One_clearSessionFields();
|
||||
//GetCurrentSession(selected_code_session);
|
||||
setsessionChanged(false);
|
||||
setCreateSessionFormation_api();
|
||||
setCreateSessionFormation_message();
|
||||
setone_CreateSessionFormation_api();
|
||||
setone_CreateSessionFormation_message();
|
||||
setone_CreateSessionFormation_result()
|
||||
setaddOneSession();
|
||||
}*/
|
||||
const [SessionendDateInscription, setSessionendDateInscription] = useState();
|
||||
|
||||
const [New_GetCurrentPartnerClass_result, setNew_GetCurrentPartnerClass_result] = useState([]);
|
||||
|
@ -18119,7 +18112,7 @@ const DisplayPartnerSession = (props) => {
|
|||
setinfo_affiche_date_fin(JSON.parse(rowss[session_selected_row_id]).date_fin);
|
||||
setinfo_affiche_etape(JSON.parse(rowss[session_selected_row_id]).session_etape);
|
||||
|
||||
var nb_place_dispo = String(parseInt(String(JSON.parse(rowss[session_selected_row_id]).nb_participant)) - parseInt(String(JSON.parse(rowss[session_selected_row_id]).nb_inscrit)))
|
||||
var nb_place_dispo = String(parseInt(String(JSON.parse(rowss[session_selected_row_id]).nb_participant)) - parseInt(String(JSON.parse(rowss[session_selected_row_id]).nb_inscrit)))
|
||||
//console.log(" ### nb_place_dispo = ", nb_place_dispo);
|
||||
|
||||
setinfo_affiche_place_disponible(nb_place_dispo);
|
||||
|
@ -21148,7 +21141,11 @@ const DisplayPartnerSession = (props) => {
|
|||
</Button>
|
||||
|
||||
|
||||
<Button variant="outlined" onClick={submenu_add_one_session}
|
||||
<Button variant="outlined" onClick={(e) => {
|
||||
setaddOneSession("1");
|
||||
submenu_add_one_session();
|
||||
|
||||
}}
|
||||
className="detail_class_submenu bton_add_session"
|
||||
id='menu_import_participant' name='menu_import_participant'>Ajout 1 Promo
|
||||
<IoAddCircleOutline style={{ "fontSize": "x-large", "color": "green" }} />
|
||||
|
@ -21210,8 +21207,6 @@ const DisplayPartnerSession = (props) => {
|
|||
|
||||
{String(submenu) === String("detail_session") && <div style={{ "border": "None" }}>
|
||||
|
||||
|
||||
|
||||
{String(addOneSession) !== "1" && <div className="session_data" onChange={IssessionChanged}>
|
||||
|
||||
{p_detail_archive && String(p_detail_archive) === "1" &&
|
||||
|
@ -22010,106 +22005,6 @@ const DisplayPartnerSession = (props) => {
|
|||
</div>}
|
||||
|
||||
|
||||
|
||||
{/* {edit_session_form && <div className="session_caract"> <b> Présentiel </b> <br />
|
||||
|
||||
<Autocomplete
|
||||
disablePortal
|
||||
name="presentiel"
|
||||
id="presentiel"
|
||||
className="disabled_style"
|
||||
options={presentiel_tab}
|
||||
value={p_session_presentiel_label}
|
||||
onChange={(event, value) => {
|
||||
if (value && value.value) {
|
||||
setp_session_presentiel(value.value);
|
||||
setp_session_presentiel_label(value.label);
|
||||
IssessionChanged();
|
||||
|
||||
} else {
|
||||
setp_session_presentiel("");
|
||||
setp_session_presentiel_label("");
|
||||
IssessionChanged();
|
||||
}
|
||||
}}
|
||||
|
||||
renderInput={(params) => <TextField {...params} label="" placeholder="Choisir une option"
|
||||
inputProps={{ ...params.inputProps, style: { fontSize: 12, height: "1.4rem" } }}
|
||||
|
||||
/>
|
||||
}
|
||||
/>
|
||||
|
||||
|
||||
</div>}
|
||||
|
||||
{!edit_session_form && <div className="session_caract"> <b>Présentiel </b> <br />
|
||||
<TextField
|
||||
name="presentiel"
|
||||
id="presentiel"
|
||||
text
|
||||
InputLabelProps={{
|
||||
shrink: true,
|
||||
}}
|
||||
inputProps={{ min: "0", max: "1", step: "1" }}
|
||||
disabled={false}
|
||||
className="disabled_style"
|
||||
value={p_session_presentiel_label}
|
||||
/>
|
||||
|
||||
</div>}
|
||||
|
||||
|
||||
{edit_session_form && <div className="session_caract"><b>A distance </b><br />
|
||||
|
||||
<Autocomplete
|
||||
disablePortal
|
||||
name="distantiel"
|
||||
id="distantiel"
|
||||
className="disabled_style"
|
||||
options={distaciel_tab}
|
||||
value={p_session_distance_label}
|
||||
onChange={(event, value) => {
|
||||
if (value && value.value) {
|
||||
setp_session_distance(value.value);
|
||||
setp_session_distance_label(value.label);
|
||||
IssessionChanged();
|
||||
|
||||
} else {
|
||||
setp_session_distance("");
|
||||
setp_session_distance_label("");
|
||||
IssessionChanged();
|
||||
}
|
||||
}}
|
||||
|
||||
renderInput={(params) => <TextField {...params} label="" placeholder="Choisir une option"
|
||||
inputProps={{ ...params.inputProps, style: { fontSize: 12, height: "1.4rem" } }}
|
||||
|
||||
/>
|
||||
}
|
||||
/>
|
||||
|
||||
|
||||
</div>}
|
||||
|
||||
{!edit_session_form && <div className="session_caract"><b>A distance </b><br />
|
||||
<TextField
|
||||
name="distantiel"
|
||||
id="distantiel"
|
||||
text
|
||||
InputLabelProps={{
|
||||
shrink: true,
|
||||
}}
|
||||
inputProps={{ min: "0", max: "1", step: "1" }}
|
||||
disabled={false}
|
||||
className="disabled_style"
|
||||
value={p_session_distance_label}
|
||||
/>
|
||||
|
||||
</div>}
|
||||
*/}
|
||||
|
||||
|
||||
{!edit_session_form && <div className="session_caract"> Inclus au BPF<br />
|
||||
<TextField
|
||||
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
|
||||
|
@ -22182,36 +22077,7 @@ const DisplayPartnerSession = (props) => {
|
|||
|
||||
|
||||
|
||||
{/* <div className="div_row" style={{ "border": "None" }}>
|
||||
|
||||
<div className="session_caract"> Contenu de la formation (max 800 caractères)<br />
|
||||
<i> (à afficher sur l'attestation) </i>
|
||||
{!fields1desabled && <br />}
|
||||
{!fields1desabled && <br />}
|
||||
|
||||
<Editor
|
||||
onInit={(evt, editor) => editorRef_contenu_ftion.current = editor}
|
||||
initialValue={field_contenu_ftion}
|
||||
onKeyUp={editor_contenu_ftion_keyup}
|
||||
disabled={fields1desabled}
|
||||
|
||||
init={{
|
||||
resize: false,
|
||||
|
||||
height: 200,
|
||||
menubar: false,
|
||||
plugins: [
|
||||
'advlist autolink lists link image charmap print preview anchor',
|
||||
'searchreplace visualblocks code fullscreen',
|
||||
'insertdatetime media table paste code help wordcount'
|
||||
],
|
||||
toolbar: false,
|
||||
content_style: 'body { font-family:Helvetica,Arial,sans-serif; font-size:12px; }'
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
|
||||
</div>*/}
|
||||
</div>
|
||||
|
||||
|
||||
|
@ -22231,8 +22097,8 @@ const DisplayPartnerSession = (props) => {
|
|||
{rows_champs_specifics &&
|
||||
rows_champs_specifics.map((champ_spec) => (
|
||||
|
||||
<div className="session_caract"> {JSON.parse(champ_spec).field_label} <br />
|
||||
<br />
|
||||
<div className="session_caract"> {String(JSON.parse(champ_spec).is_mandatory) === "1" && <font> <b> {JSON.parse(champ_spec).field_label} </b> </font>}
|
||||
{String(JSON.parse(champ_spec).is_mandatory) !== "1" && <font> {JSON.parse(champ_spec).field_label} </font>} <br />
|
||||
|
||||
{String(JSON.parse(champ_spec).field_type) === "float" &&
|
||||
<TextField
|
||||
|
@ -22867,55 +22733,7 @@ const DisplayPartnerSession = (props) => {
|
|||
</div>
|
||||
|
||||
|
||||
{/*<div className="session_caract"><b>Présentiel </b> <br />
|
||||
|
||||
<Autocomplete
|
||||
disablePortal
|
||||
name="one_presentiel"
|
||||
id="one_presentiel"
|
||||
className="disabled_style enable_style"
|
||||
options={presentiel_tab}
|
||||
value={p_one_session_presentiel_label}
|
||||
onChange={(event, value) => {
|
||||
if (value && value.value) {
|
||||
setp_one_session_presentiel(value.value);
|
||||
setp_one_session_presentiel_label(value.label);
|
||||
}
|
||||
}}
|
||||
|
||||
renderInput={(params) => <TextField {...params} label="" placeholder="Choisir une option"
|
||||
inputProps={{ ...params.inputProps, style: { fontSize: 12, height: "1.4rem" } }}
|
||||
|
||||
/>
|
||||
}
|
||||
/>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div className="session_caract"><b> A distance </b> <br />
|
||||
<Autocomplete
|
||||
disablePortal
|
||||
name="one_distantiel"
|
||||
id="one_distantiel"
|
||||
className="disabled_style enable_style"
|
||||
options={distaciel_tab}
|
||||
value={p_one_session_distance_label}
|
||||
onChange={(event, value) => {
|
||||
if (value && value.value) {
|
||||
setp_one_session_distance(value.value);
|
||||
setp_one_session_distance_label(value.label);
|
||||
}
|
||||
}}
|
||||
|
||||
renderInput={(params) => <TextField {...params} label="" placeholder="Choisir une option"
|
||||
inputProps={{ ...params.inputProps, style: { fontSize: 12, height: "1.4rem" } }}
|
||||
|
||||
/>
|
||||
}
|
||||
/>
|
||||
|
||||
</div>*/}
|
||||
|
||||
<div className="session_caract"> Inclus au BPF <br />
|
||||
<Autocomplete
|
||||
|
@ -22975,36 +22793,7 @@ const DisplayPartnerSession = (props) => {
|
|||
|
||||
</div>
|
||||
|
||||
{/*<div className="div_row" style={{ "border": "None" }}>
|
||||
|
||||
<div className="session_caract"> Contenu de la formation (max 800 caractères)<br />
|
||||
<i> (à afficher sur l'attestation) </i>
|
||||
{!fields1desabled && <br />}
|
||||
{!fields1desabled && <br />}
|
||||
|
||||
<Editor
|
||||
onInit={(evt, editor) => one_editorRef_contenu_ftion.current = editor}
|
||||
initialValue={one_field_contenu_ftion}
|
||||
onKeyUp={one_editor_contenu_ftion_keyup}
|
||||
disabled={false}
|
||||
|
||||
init={{
|
||||
resize: false,
|
||||
|
||||
height: 200,
|
||||
menubar: false,
|
||||
plugins: [
|
||||
'advlist autolink lists link image charmap print preview anchor',
|
||||
'searchreplace visualblocks code fullscreen',
|
||||
'insertdatetime media table paste code help wordcount'
|
||||
],
|
||||
toolbar: false,
|
||||
content_style: 'body { font-family:Helvetica,Arial,sans-serif; font-size:12px; }'
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
|
||||
</div>*/}
|
||||
</div>
|
||||
|
||||
|
||||
|
@ -23025,8 +22814,8 @@ const DisplayPartnerSession = (props) => {
|
|||
{rows_champs_specifics &&
|
||||
rows_champs_specifics.map((champ_spec) => (
|
||||
|
||||
<div className="session_caract"> {JSON.parse(champ_spec).field_label} <br />
|
||||
<br />
|
||||
<div className="session_caract"> {String(JSON.parse(champ_spec).is_mandatory) === "1" && <font> <b> {JSON.parse(champ_spec).field_label} </b> </font>}
|
||||
{String(JSON.parse(champ_spec).is_mandatory) !== "1" && <font> {JSON.parse(champ_spec).field_label} </font>} <br />
|
||||
{String(JSON.parse(champ_spec).field_type) === "float" &&
|
||||
<TextField
|
||||
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
|
||||
|
|
|
@ -2613,7 +2613,7 @@ const DisplayPartnerStagiaires = (props) => {
|
|||
|
||||
const stored_cookie = getCookie('tokenmysypart');
|
||||
form.append("token", stored_cookie);
|
||||
form.append("archive", "0");
|
||||
form.append("archive", "0");
|
||||
var myurl = process.env.REACT_APP_API_URL + "myclass/api/GetAllValideSessionPartner_List/";
|
||||
|
||||
setLoading(true);
|
||||
|
@ -7167,7 +7167,7 @@ const DisplayPartnerStagiaires = (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>
|
||||
<DialogContentText>
|
||||
{Dialog_1_message}
|
||||
|
@ -9549,7 +9549,8 @@ const DisplayPartnerStagiaires = (props) => {
|
|||
{rows_champs_specifics &&
|
||||
rows_champs_specifics.map((champ_spec) => (
|
||||
|
||||
<div className="session_caract"> {JSON.parse(champ_spec).field_label} <br />
|
||||
<div className="session_caract"> {String(JSON.parse(champ_spec).is_mandatory) === "1" && <font> <b> {JSON.parse(champ_spec).field_label} </b> </font>}
|
||||
{String(JSON.parse(champ_spec).is_mandatory) !== "1" && <font> {JSON.parse(champ_spec).field_label} </font>} <br />
|
||||
|
||||
{String(JSON.parse(champ_spec).field_type) === "float" && <TextField
|
||||
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
|
||||
|
@ -10497,7 +10498,8 @@ const DisplayPartnerStagiaires = (props) => {
|
|||
{rows_champs_specifics &&
|
||||
rows_champs_specifics.map((champ_spec) => (
|
||||
|
||||
<div className="session_caract"> {JSON.parse(champ_spec).field_label} <br />
|
||||
<div className="session_caract"> {String(JSON.parse(champ_spec).is_mandatory) === "1" && <font> <b> {JSON.parse(champ_spec).field_label} </b> </font>}
|
||||
{String(JSON.parse(champ_spec).is_mandatory) !== "1" && <font> {JSON.parse(champ_spec).field_label} </font>} <br />
|
||||
|
||||
{String(JSON.parse(champ_spec).field_type) === "float" && <TextField
|
||||
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
|
||||
|
|
|
@ -14,13 +14,13 @@ import { FcInfo } from "react-icons/fc";
|
|||
import { LiaDharmachakraSolid } from "react-icons/lia";
|
||||
import 'react-tooltip/dist/react-tooltip.css'
|
||||
import { Tooltip } from 'react-tooltip'
|
||||
import add_plus from "../mysy_img/plus.png";
|
||||
|
||||
import excel_icone from "../mysy_img/excel_icone.png";
|
||||
import participants from "../mysy_img/participants.png";
|
||||
|
||||
import fileDownload from 'js-file-download';
|
||||
import Popup from 'reactjs-popup';
|
||||
import 'reactjs-popup/dist/index.css';
|
||||
import { FcCancel, FcApproval, FcAcceptDatabase, FcPrint } from "react-icons/fc";
|
||||
import { FcAcceptDatabase, FcPrint } from "react-icons/fc";
|
||||
import DatePicker from "react-datepicker";
|
||||
import "react-datepicker/dist/react-datepicker.css";
|
||||
import { format } from 'date-fns'
|
||||
|
@ -35,7 +35,7 @@ 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 EmailIcon from '@mui/icons-material/Email'
|
||||
|
||||
import Visibility from '@mui/icons-material/Visibility';
|
||||
import VisibilityOff from '@mui/icons-material/VisibilityOff';
|
||||
import { Fab } from "@material-ui/core";
|
||||
|
@ -47,7 +47,7 @@ import img_loading_spin from "./../mysy_img/mysy_spin_loading.gif";
|
|||
import { gridClasses } from '@mui/x-data-grid';
|
||||
import Link from '@mui/material/Link';
|
||||
import { PiDotsThree } from "react-icons/pi";
|
||||
import { IoAddCircleOutline, IoCloseCircleOutline } from "react-icons/io5";
|
||||
import { IoAddCircleOutline } from "react-icons/io5";
|
||||
import Rating from '@mui/material/Rating';
|
||||
import { BarChart } from '@mui/x-charts';
|
||||
import { axisClasses } from '@mui/x-charts';
|
||||
|
@ -1794,6 +1794,7 @@ const Employes = (props) => {
|
|||
setliste_sessions_file_change_api("true");
|
||||
clean_all_filters();
|
||||
Getall_Training_Employee_No_Filter();
|
||||
|
||||
setdisplay_alert_mysy("1");
|
||||
setalert_message(" Les employés ont été correctement importés");
|
||||
setalert_type("success");
|
||||
|
@ -9161,8 +9162,8 @@ const Employes = (props) => {
|
|||
{rows_champs_specifics &&
|
||||
rows_champs_specifics.map((champ_spec) => (
|
||||
|
||||
<div className="session_caract"> {JSON.parse(champ_spec).field_label} <br />
|
||||
<br />
|
||||
<div className="session_caract"> {String(JSON.parse(champ_spec).is_mandatory) === "1" && <font> <b> {JSON.parse(champ_spec).field_label} </b> </font>}
|
||||
{String(JSON.parse(champ_spec).is_mandatory) !== "1" && <font> {JSON.parse(champ_spec).field_label} </font>} <br/>
|
||||
{String(JSON.parse(champ_spec).field_type) === "float" && <TextField
|
||||
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
|
||||
required
|
||||
|
@ -9615,7 +9616,7 @@ const Employes = (props) => {
|
|||
<nav style={{
|
||||
"border": "None", "fontSize": "18px", "fontWeight": "600", fontFamily: "DM Sans",
|
||||
textAlign: "center", paddingTop: "10px"
|
||||
}}> Ajouter un Employé </nav>
|
||||
}}> Ajouter un Employé </nav>
|
||||
|
||||
|
||||
<div class="separator">
|
||||
|
@ -10087,8 +10088,8 @@ const Employes = (props) => {
|
|||
{rows_champs_specifics &&
|
||||
rows_champs_specifics.map((champ_spec) => (
|
||||
|
||||
<div className="session_caract"> {JSON.parse(champ_spec).field_label} <br />
|
||||
<br />
|
||||
<div className="session_caract"> {String(JSON.parse(champ_spec).is_mandatory) === "1" && <font> <b> {JSON.parse(champ_spec).field_label} </b> </font>}
|
||||
{String(JSON.parse(champ_spec).is_mandatory) !== "1" && <font> {JSON.parse(champ_spec).field_label} </font>} <br/>
|
||||
{String(JSON.parse(champ_spec).field_type) === "float" && <TextField
|
||||
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
|
||||
required
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -6734,8 +6734,8 @@ Update du 22/10/2023 - Gestion des champs spécifiques ajoutés par le partenair
|
|||
{rows_champs_specifics_session &&
|
||||
rows_champs_specifics_session.map((champ_spec) => (
|
||||
|
||||
<div className="session_caract"> {JSON.parse(champ_spec).field_label} <br />
|
||||
<br />
|
||||
<div className="session_caract"> {String(JSON.parse(champ_spec).is_mandatory) === "1" && <font> <b> {JSON.parse(champ_spec).field_label} </b> </font>}
|
||||
{String(JSON.parse(champ_spec).is_mandatory) !== "1" && <font> {JSON.parse(champ_spec).field_label} </font>} <br/>
|
||||
{String(JSON.parse(champ_spec).field_type) === "float" && <TextField
|
||||
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
|
||||
required
|
||||
|
|
|
@ -1520,8 +1520,8 @@ function Inscription_Information(props) {
|
|||
{rows_champs_specifics &&
|
||||
rows_champs_specifics.map((champ_spec) => (
|
||||
|
||||
<div className="session_caract"> {JSON.parse(champ_spec).field_label} <br />
|
||||
<br />
|
||||
<div className="session_caract"> {String(JSON.parse(champ_spec).is_mandatory) === "1" && <font> <b> {JSON.parse(champ_spec).field_label} </b> </font>}
|
||||
{String(JSON.parse(champ_spec).is_mandatory) !== "1" && <font> {JSON.parse(champ_spec).field_label} </font>} <br/>
|
||||
<TextField
|
||||
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
|
||||
required
|
||||
|
@ -1764,8 +1764,8 @@ function Inscription_Information(props) {
|
|||
{rows_champs_specifics &&
|
||||
rows_champs_specifics.map((champ_spec) => (
|
||||
|
||||
<div className="session_caract"> {JSON.parse(champ_spec).field_label} <br />
|
||||
<br />
|
||||
<div className="session_caract"> {String(JSON.parse(champ_spec).is_mandatory) === "1" && <font> <b> {JSON.parse(champ_spec).field_label} </b> </font>}
|
||||
{String(JSON.parse(champ_spec).is_mandatory) !== "1" && <font> {JSON.parse(champ_spec).field_label} </font>} <br/>
|
||||
<TextField
|
||||
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
|
||||
required
|
||||
|
|
|
@ -0,0 +1,534 @@
|
|||
import React, { useState, useEffect } from "react";
|
||||
import { useForm } from "react-hook-form";
|
||||
import { useHistory } from "react-router-dom";
|
||||
import { Button, FormGroup, Label, Input } from "reactstrap";
|
||||
import { useCookies } from "react-cookie";
|
||||
import { confirmAlert } from 'react-confirm-alert'; // Import
|
||||
import 'react-confirm-alert/src/react-confirm-alert.css'; // Import css
|
||||
import Popup from 'reactjs-popup';
|
||||
import 'reactjs-popup/dist/index.css';
|
||||
import axios from "axios";
|
||||
import { useParams } from 'react-router-dom'
|
||||
import { useLocation } from "react-router-dom";
|
||||
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'
|
||||
|
||||
|
||||
function Module_Connexion_Ent_Student() {
|
||||
const [isconnected, setisconnected] = useState("");
|
||||
const [cookie_acces_right, setCookie_acces_right, removeCookie_acces_right] = useCookies(['mysy_user_access_right']);
|
||||
const [cookie, setCookie, removeCookie] = useCookies(['tokenmysych'], { path: '/' });
|
||||
const [cookie_part, setCookie_part, removeCookie_part] = useCookies(['tokenmysypart'], { path: '/' });
|
||||
const [retval, setretval] = useState("0");
|
||||
const [myApimyApiMessage, setmyApimyApiMessage] = useState("");
|
||||
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 random1 = Math.floor(Math.random() * 10);
|
||||
const random2 = Math.floor(Math.random() * 10);
|
||||
|
||||
const [closepopup, setclosepopup] = useState(0);
|
||||
const { obj, objid } = useParams();
|
||||
const [menucompte, setmenucompte] = useState("user");
|
||||
const [currentpawdvisible, setcurrentpawdvisible] = useState(false);
|
||||
const [typecompte, settypecompte] = useState("");
|
||||
|
||||
const {
|
||||
register,
|
||||
formState: { errors },
|
||||
handleSubmit,
|
||||
} = useForm();
|
||||
|
||||
|
||||
const history = useHistory();
|
||||
|
||||
function logout_partner_confirmation() {
|
||||
removeCookie_part('tokenmysypart', { path: '/' });
|
||||
}
|
||||
|
||||
function retnull() {
|
||||
setretval("-1");
|
||||
}
|
||||
|
||||
|
||||
function logout_user_confirmation() {
|
||||
removeCookie_part('tokenmysych', { path: '/' });
|
||||
}
|
||||
|
||||
function Logout_User() {
|
||||
confirmAlert({
|
||||
title: 'Deconnexion utilisateur ?',
|
||||
message: 'Confirmez la deconnexion utilisateur',
|
||||
buttons: [
|
||||
{
|
||||
label: 'Oui',
|
||||
onClick: () => logout_user_confirmation()
|
||||
},
|
||||
/* {
|
||||
label: 'Non',
|
||||
onClick: () => retnull()
|
||||
|
||||
}*/
|
||||
]
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
const onSubmit = async (data) => {
|
||||
|
||||
//console.log(" CONNEXION DE = ",menucompte);
|
||||
var partner_connexion = "";
|
||||
var url_login = "";
|
||||
|
||||
url_login = process.env.REACT_APP_API_URL + "myclass/api/login/";
|
||||
setmenucompte("user");
|
||||
partner_connexion = "user";
|
||||
|
||||
|
||||
|
||||
// console.log( " ### full url_login = ", url_login)
|
||||
|
||||
// Gestion des Cookies
|
||||
const stored_partner = cookie_part.tokenmysypart;
|
||||
const stored_user = cookie.tokenmysych;
|
||||
|
||||
const formData = new FormData();
|
||||
var mymail = document.getElementsByName("email")[0].value;
|
||||
var mypwd = document.getElementsByName("pwd")[0].value;
|
||||
|
||||
formData.append("email", mymail);
|
||||
formData.append("pwd", mypwd);
|
||||
|
||||
var re = /\S+@\S+\.\S+/;
|
||||
if (re.test(mymail) === false) {
|
||||
alert("l'adresse email est incorrecte");
|
||||
return;
|
||||
}
|
||||
|
||||
if (mypwd.length <= 0) {
|
||||
alert("Vous n'avez pas saisi de mot de passe");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
// si c'est une connexion user qui est active
|
||||
if (typeof (stored_user) != "undefined" && String(stored_user) !== String('')) {
|
||||
//alert(" c'est une connexion USERR qui est active");
|
||||
Logout_User();
|
||||
}
|
||||
|
||||
|
||||
fetch(
|
||||
url_login,
|
||||
{
|
||||
method: 'POST',
|
||||
body: formData,
|
||||
}
|
||||
).then((response) => response.json())
|
||||
.then((result) => {
|
||||
//console.log('Success:', result['message'], "result['status'] = ", result['status']);
|
||||
|
||||
var val = result['status'];
|
||||
|
||||
if (String(val) === String("true")) {
|
||||
setCookie("tokenmysych", result['message']);
|
||||
|
||||
// Verification vers quelle page les renvoyer
|
||||
if (obj === "training" && String(objid).length > 0) {
|
||||
// redirection vers l'affichage d'une formation
|
||||
history.push("/Display-Detail-formation/" + objid);
|
||||
}
|
||||
else {
|
||||
// Redirection par defaut vers la compte de l'apprenant - ENT
|
||||
history.push({
|
||||
pathname: "/mysy-student-account",
|
||||
state: {
|
||||
firstconnexion: String(result['firstconnexion'])
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
else {
|
||||
setisconnected("false");
|
||||
setmyApimyApiMessage(result['message']);
|
||||
}
|
||||
})
|
||||
.catch((error) => {
|
||||
console.error('Error:', error);
|
||||
setisconnected("false");
|
||||
setmyApimyApiMessage("Le service est momentanément indisponible, merci de ressayer plus tard. ");
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
const location = useLocation();
|
||||
|
||||
useEffect(() => {
|
||||
setmenucompte("partner");
|
||||
|
||||
const listener = event => {
|
||||
if (event.code === "Enter" || event.code === "NumpadEnter") {
|
||||
|
||||
event.preventDefault();
|
||||
|
||||
onSubmit();
|
||||
}
|
||||
};
|
||||
document.addEventListener("keydown", listener);
|
||||
|
||||
if (String(menucompte) === String("user")) {
|
||||
menu_user_account();
|
||||
}
|
||||
else {
|
||||
menu_parter_account();
|
||||
}
|
||||
|
||||
if (location && location.state && location.state.mysy_arg && String(location.state.mysy_arg) === "partner") {
|
||||
menu_parter_account();
|
||||
}
|
||||
|
||||
|
||||
}, []);
|
||||
|
||||
|
||||
|
||||
function menu_parter_account() {
|
||||
//alert(" menu_parter_account = "+String(menucompte));
|
||||
setmenucompte("partner");
|
||||
|
||||
if (document.getElementsByName("partner_account") && document.getElementsByName("partner_account")[0])
|
||||
document.getElementsByName("partner_account")[0].style.backgroundColor = "#81BC3A";
|
||||
|
||||
if (document.getElementsByName("user_account") && document.getElementsByName("user_account")[0])
|
||||
document.getElementsByName("user_account")[0].style.backgroundColor = "#ffffff";
|
||||
|
||||
|
||||
}
|
||||
|
||||
function menu_user_account() {
|
||||
|
||||
setmenucompte("user");
|
||||
|
||||
if (document.getElementsByName("user_account") && document.getElementsByName("user_account")[0])
|
||||
document.getElementsByName("user_account")[0].style.backgroundColor = "#81BC3A";
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
function resetpasswd_ok(e) {
|
||||
|
||||
var total = " ?? ";
|
||||
if (document.getElementsByName("sommerandom")[0].value) {
|
||||
total = document.getElementsByName("sommerandom")[0].value;
|
||||
}
|
||||
var calcaul_total = parseInt(random1) + parseInt(random2);
|
||||
if (parseInt(total) != parseInt(calcaul_total)) {
|
||||
document.getElementsByName("pasrobot")[0].style.backgroundColor = "red";
|
||||
|
||||
alert(" Le total dans la zone 'je ne suis pas un robot' est incohérent. Recommencez svp :) !!!");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
// Controle du mail
|
||||
var mymail = document.getElementsByName("resetemailvalue")[0].value;
|
||||
//alert(" le mail de reset = "+mymail);
|
||||
var re = /\S+@\S+\.\S+/;
|
||||
if (re.test(mymail) === false) {
|
||||
alert("l'adresse email est incorrecte");
|
||||
return;
|
||||
}
|
||||
|
||||
var form = new FormData();
|
||||
|
||||
form.append("email", mymail);
|
||||
|
||||
|
||||
// Controle du type de compte
|
||||
if (String(typecompte) !== "partner" && String(typecompte) !== "user") {
|
||||
alert("Le type de compte est inconnu");
|
||||
document.getElementsByName("is_user_or_pro")[0].style.backgroundColor = "orangered";
|
||||
return;
|
||||
}
|
||||
form.append("account_type", typecompte);
|
||||
|
||||
|
||||
var myurl = process.env.REACT_APP_API_URL + "myclass/api/InitUserPasswd/";
|
||||
|
||||
//alert("myurl = "+myurl);
|
||||
axios.post(myurl, form).then(res => {
|
||||
setclosepopup(1);
|
||||
setinitpasswd("true");
|
||||
if (String(res.data.status) != String("false")) {
|
||||
//console.log(" In test res.data.status = " + res.data.status);
|
||||
//console.log(" In test res.data.message = " + res.data.message);
|
||||
setmyApiResponse("true");
|
||||
|
||||
setResult(res.data.message);
|
||||
|
||||
}
|
||||
else {
|
||||
//console.log(" In test res.data.status = " + res.data.status);
|
||||
//console.log(" In test res.data.message = " + res.data.message);
|
||||
setmyApiResponse("false");
|
||||
setResult(res.data.message);
|
||||
}
|
||||
|
||||
|
||||
}).catch((error) => {
|
||||
console.warn('Not good man :( mysearchtext = ');
|
||||
setmyApiResponse("false");
|
||||
setinitpasswd("false");
|
||||
//setmyApimyApiMessage("")
|
||||
})
|
||||
|
||||
|
||||
}
|
||||
|
||||
function resetpasswd(e) {
|
||||
confirmAlert({
|
||||
title: 'Reinitialisation Mot de Passe?',
|
||||
message: 'Confirmez la reinitialisation',
|
||||
buttons: [
|
||||
{
|
||||
label: 'Oui',
|
||||
onClick: () => resetpasswd_ok()
|
||||
},
|
||||
{
|
||||
label: 'Non',
|
||||
onClick: () => { return }
|
||||
|
||||
},
|
||||
|
||||
],
|
||||
closeOnEscape: false,
|
||||
closeOnClickOutside: false,
|
||||
keyCodeForClose: [8, 32],
|
||||
willUnmount: () => { },
|
||||
afterClose: () => { },
|
||||
onClickOutside: () => { },
|
||||
onKeypress: () => { },
|
||||
onKeypressEscape: () => { },
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
||||
function closepopupinitpwd() {
|
||||
setclosepopup("1");
|
||||
}
|
||||
|
||||
// Cette fonction permet de cacher le mot de passer et eviter les
|
||||
// autocompletion
|
||||
const [realpwdvalue, setrealpwdvalue] = useState("");
|
||||
const [realpwdhidenvalue, setrealpwdhidenvalue] = useState("");
|
||||
function realpwd(e) {
|
||||
const val = e.target.value;
|
||||
const last = val.charAt(val.length - 1);
|
||||
var new_val = realpwdvalue;
|
||||
var new_val_hiden = realpwdhidenvalue;
|
||||
|
||||
//alert(" new_val avant saisie= "+new_val);
|
||||
new_val = new_val + last;
|
||||
new_val_hiden = new_val_hiden + "*";
|
||||
|
||||
//alert(" - new_val apres sisie = "+new_val+" new_val_hiden = "+new_val_hiden);
|
||||
setrealpwdhidenvalue(new_val_hiden);
|
||||
setrealpwdvalue(new_val);
|
||||
|
||||
//setrealpwdvalue(val);
|
||||
//document.getElementById("cle_secrete").value = new_val_hiden;
|
||||
|
||||
}
|
||||
|
||||
/* function displayvlaue(){
|
||||
alert(" la valeur secrete = "+realpwdvalue);
|
||||
}*/
|
||||
|
||||
|
||||
const handleClickShowPassword = () => {
|
||||
if (currentpawdvisible == false) {
|
||||
document.getElementsByName("pwd")[0].type = "text";
|
||||
setcurrentpawdvisible(true);
|
||||
}
|
||||
else if (currentpawdvisible == true) {
|
||||
document.getElementsByName("pwd")[0].type = "password";
|
||||
setcurrentpawdvisible(false);
|
||||
}
|
||||
};
|
||||
|
||||
return (
|
||||
<div style={{ width: "100%", float: "left" }}>
|
||||
|
||||
<div className="module_connexion_intranet_client">
|
||||
|
||||
|
||||
<div className="div_mobile">
|
||||
<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" }}> Espace numérique de travail - ENT</Button>
|
||||
</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' }}> </div>
|
||||
|
||||
|
||||
<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>
|
||||
|
||||
|
||||
{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 />
|
||||
|
||||
|
||||
<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>
|
||||
|
||||
<option value="partner">Partenaire </option>
|
||||
<option value="user">Utilisateur </option>
|
||||
</select>
|
||||
</a>
|
||||
<br />
|
||||
|
||||
</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>
|
||||
<button type="submit" class="btn btn-secondary btn-sm" onClick={closepopupinitpwd}> Annuler</button>
|
||||
</div>
|
||||
|
||||
</Popup>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
<FormGroup>
|
||||
|
||||
</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 />
|
||||
{myApimyApiMessage}</div>
|
||||
}
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
{/* <div style={{ height: "5rem", width: "100%" }}>
|
||||
<Fotter_v3 />
|
||||
</div>*/}
|
||||
|
||||
</div>
|
||||
|
||||
);
|
||||
}
|
||||
|
||||
export default Module_Connexion_Ent_Student;
|
|
@ -2,9 +2,6 @@ import React, { useState, useEffect } from "react";
|
|||
import { useForm } from "react-hook-form";
|
||||
import { useHistory } from "react-router-dom";
|
||||
import { Button, FormGroup, Label, Input } from "reactstrap";
|
||||
import { FacebookLoginButton, GoogleLoginButton } from "react-social-login-buttons";
|
||||
//import { getCookie, setCookie, removeCookie } from 'react-use-cookie';
|
||||
import { Helmet } from "react-helmet";
|
||||
import { useCookies } from "react-cookie";
|
||||
import { confirmAlert } from 'react-confirm-alert'; // Import
|
||||
import 'react-confirm-alert/src/react-confirm-alert.css'; // Import css
|
||||
|
@ -12,14 +9,12 @@ import Popup from 'reactjs-popup';
|
|||
import 'reactjs-popup/dist/index.css';
|
||||
import axios from "axios";
|
||||
import { useParams } from 'react-router-dom'
|
||||
|
||||
import Header from "./Header";
|
||||
import { useLocation } from "react-router-dom";
|
||||
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 Fotter_v3 from "./Fotter_v3";
|
||||
|
||||
|
||||
function Module_Connexion_Intranet_Client() {
|
||||
const [isconnected, setisconnected] = useState("");
|
||||
|
@ -385,7 +380,7 @@ function Module_Connexion_Intranet_Client() {
|
|||
<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 Utilisateur</Button>
|
||||
style={{ "float": "left", "textAlign": "center", "height": "3rem" }}>Intranet Client</Button>
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -1,65 +1,18 @@
|
|||
import React, { useRef, useState, useMemo, useEffect } from "react";
|
||||
import { useForm } from "react-hook-form";
|
||||
import axios from "axios";
|
||||
import Formation_Partner_Catalog from "./Formation_Partner_Catalog";
|
||||
import { FaSearch, FaRegArrowAltCircleDown, FaRegArrowAltCircleUp } from 'react-icons/fa';
|
||||
import { BsFillXCircleFill } from "react-icons/bs";
|
||||
import { IoAppsSharp, IoListSharp } from "react-icons/io5";
|
||||
import Formation_Grid_2Col from "./Formation_Grid_2Col";
|
||||
import Pagination from "./TestPagination";
|
||||
import data from "./data/mock-data.json";
|
||||
import { useHistory } from "react-router-dom";
|
||||
import { getCookie, removeCookie } from 'react-use-cookie';
|
||||
import { Helmet } from "react-helmet";
|
||||
|
||||
import AideRecherche from "./AideRecherche"
|
||||
import { useParams } from 'react-router-dom'
|
||||
import Fotter_Catalog_Pub from "./Fotter_Catalog_Pub";
|
||||
import Footer from "./Fotter";
|
||||
import LogoutOutlinedIcon from '@mui/icons-material/LogoutOutlined';
|
||||
import Button from '@mui/material/Button';
|
||||
import MenuItem from "@material-ui/core/MenuItem";
|
||||
import Menu from "@material-ui/core/Menu";
|
||||
import Header from "./Header";
|
||||
|
||||
import connect_white from "../mysy_img/connect_white_v2.png";
|
||||
import connect_green from "../mysy_img/connect_green.png";
|
||||
import { getCookie, } from 'react-use-cookie';
|
||||
import { useParams } from 'react-router-dom';
|
||||
import { confirmAlert } from 'react-confirm-alert'; // Import
|
||||
import { useCookies } from "react-cookie";
|
||||
import InputRange from 'react-input-range';
|
||||
import 'react-input-range/lib/css/index.css';
|
||||
import tick_ko from "../mysy_img/tick_KO.png";
|
||||
|
||||
|
||||
import { SelectChangeEvent } from '@mui/material/Select';
|
||||
import Chip from '@mui/material/Chip';
|
||||
import Select, { StylesConfig } from 'react-select';
|
||||
|
||||
import img_header from "../mysy_img2/img_header.png"
|
||||
|
||||
import mysy_logo2 from "../mysy_img2/Logo_MySy.png"
|
||||
|
||||
import { AiTwotoneFolder } from "react-icons/ai";
|
||||
import serv_img_market_digi from "../mysy_img/market_digi.jpg";
|
||||
import serv_img_gestion_admin from "../mysy_img/gestion_admin_2.jpg";
|
||||
import serv_img_publication from "../mysy_img/publication.jpg";
|
||||
|
||||
import mysy_search from "../mysy_img2/mysy_search.jpg";
|
||||
import mysy_lms from "../mysy_img2/mysy_e_learning.jpg";
|
||||
import mysy_consulting from "../mysy_img2/mysy_consulting.jpg";
|
||||
import mysy_datacenter from "../mysy_img2/mysy_datacenter.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 Module_Connexion_Intranet_Client from "./Module_Connexion_Intranet_Client";
|
||||
|
||||
import Fotter_Intranet_Client_Pub from "./Fotter_Intranet_Client_Pub"
|
||||
|
||||
import { CiCircleRemove, CiCircleMinus } from "react-icons/ci";
|
||||
import Fotter_v3 from "./Fotter_v3";
|
||||
|
||||
let PageSize = 10;
|
||||
const Mon_Intranet_Public = (props) => {
|
||||
|
@ -119,8 +72,6 @@ const Mon_Intranet_Public = (props) => {
|
|||
const inputEl = useRef(null);
|
||||
|
||||
|
||||
|
||||
|
||||
const url = process.env.REACT_APP_API_URL + "myclass/api/add_user_account/";
|
||||
const {
|
||||
register,
|
||||
|
@ -3060,7 +3011,7 @@ const Mon_Intranet_Public = (props) => {
|
|||
{New_Get_Subdomain_Partner_Data_result && New_Get_Subdomain_Partner_Data_result.length > 0
|
||||
&& New_Get_Subdomain_Partner_Data_result[0].catalog_pub_indicateur_2_txt &&
|
||||
<div style={{
|
||||
textAlign: "left",
|
||||
textAlign: "left",
|
||||
width: '100%',
|
||||
fontSize: `${New_Get_Subdomain_Partner_Data_result[0].catalog_pub_indicateur_2_taille}` + "px",
|
||||
color: `${New_Get_Subdomain_Partner_Data_result[0].catalog_pub_indicateur_2_color}`,
|
||||
|
|
|
@ -109,11 +109,11 @@ const New_C_Formation_2025 = (props) => {
|
|||
setisclassimage(res.data.message.img);
|
||||
var ch_img = "data:image/png;base64," + res.data.message.img;
|
||||
setclass_img_stored_in_bdd(ch_img);
|
||||
// console.log(" getClassImage_no_token: setclass_img_stored_in_bdd = ", setclass_img_stored_in_bdd);
|
||||
// console.log(" getClassImage_no_token: setclass_img_stored_in_bdd = ", setclass_img_stored_in_bdd);
|
||||
|
||||
}
|
||||
else {
|
||||
// console.log(" In Erreur res.data.status = " + res.data.status);
|
||||
// console.log(" In Erreur res.data.status = " + res.data.status);
|
||||
//console.log(" In Erreur res.data.message = " + res.data.message);
|
||||
setisclassimage("False");
|
||||
setuserimgclassprofil();
|
||||
|
@ -140,7 +140,7 @@ const New_C_Formation_2025 = (props) => {
|
|||
useEffect(() => {
|
||||
setmyfilter(props.myfil);
|
||||
|
||||
// console.log(" #### useEffect props.formation = ", props.formation);
|
||||
// console.log(" #### useEffect props.formation = ", props.formation);
|
||||
|
||||
|
||||
if (typeof (stored_user) === "undefined" || String(stored_user) === '') {
|
||||
|
@ -354,7 +354,7 @@ const New_C_Formation_2025 = (props) => {
|
|||
|
||||
{class_img_stored_in_bdd && String(class_img_stored_in_bdd).length > 50 &&
|
||||
<img src={class_img_stored_in_bdd} alt="Formation" style={styles.image} />
|
||||
}
|
||||
}
|
||||
|
||||
{(!class_img_stored_in_bdd || String(class_img_stored_in_bdd).length < 50) &&
|
||||
(!props.formation.img_url || String(props.formation.img_url).length <= 10) &&
|
||||
|
@ -415,7 +415,7 @@ const New_C_Formation_2025 = (props) => {
|
|||
</div>}
|
||||
|
||||
{(!class_img_stored_in_bdd || String(class_img_stored_in_bdd).length < 50) && String(ismetiermanaged) === "1" &&
|
||||
<div>
|
||||
<div>
|
||||
<img src={props.formation.img_url} alt="autre" style={styles.image} />
|
||||
{/*props.formation.institut_formation && <div style={{ width: '100%', "textAlign": "center" }}> Dispensé par : <br />
|
||||
{String(props.formation.institut_formation)} </div>*/}
|
||||
|
@ -432,7 +432,19 @@ const New_C_Formation_2025 = (props) => {
|
|||
</div>
|
||||
|
||||
<h3 className="formation_titre">{String(parse(String(props.formation.title).replace(/(<([^>]+)>)/ig, ''))).substring(0, 50)}</h3>
|
||||
<p className="formation_prix">{props.formation.price} € HT </p>
|
||||
{props.formation.discounted_price && props.formation.business_prices && <p className="formation_prix">{props.formation.discounted_price} € HT 111</p>}
|
||||
|
||||
{props.formation.business_prices.length <= 0
|
||||
&& <p className="formation_prix">{props.formation.price} € HT 22 </p>}
|
||||
|
||||
{props.formation.business_prices && props.formation.business_prices.length > 0 &&
|
||||
<p style={{ width: '100%', float: 'left' }}>
|
||||
|
||||
<p className="formation_prix" style={{ width: '100%', float: 'left' }}>{props.formation.business_prices[0].discounted_price}€ HT
|
||||
<font className='training_price_barre' style={{ fontSize:'14px' }}> {props.formation.price} € HT </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>
|
||||
</div>
|
||||
|
||||
|
@ -619,7 +631,7 @@ const New_C_Formation_2025 = (props) => {
|
|||
</nav>
|
||||
</div>
|
||||
}
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div className="div_row row_formation_desc">
|
||||
|
|
|
@ -1,38 +1,21 @@
|
|||
import React, { useState, useEffect } from "react";
|
||||
import { useForm } from "react-hook-form";
|
||||
import { useHistory } from "react-router-dom";
|
||||
import { Button, FormGroup, Label, Input } from "reactstrap";
|
||||
import { FacebookLoginButton, GoogleLoginButton } from "react-social-login-buttons";
|
||||
//import { getCookie, setCookie, removeCookie } from 'react-use-cookie';
|
||||
import { Helmet } from "react-helmet";
|
||||
import { useCookies } from "react-cookie";
|
||||
import { confirmAlert } from 'react-confirm-alert'; // Import
|
||||
import { Button, } from "reactstrap";
|
||||
import 'react-confirm-alert/src/react-confirm-alert.css'; // Import css
|
||||
import bannerimg2 from "../mysy_img/MYSY-LOGO-BLUE.png";
|
||||
import Popup from 'reactjs-popup';
|
||||
import 'reactjs-popup/dist/index.css';
|
||||
import axios from "axios";
|
||||
import { useParams } from 'react-router-dom'
|
||||
import logowhite from "../mysy_img/MYSY-LOGO-WHITE.png";
|
||||
import Footer from "./Fotter";
|
||||
import MenuItem from "@material-ui/core/MenuItem";
|
||||
import Button2 from "@material-ui/core/Button";
|
||||
import Menu from "@material-ui/core/Menu";
|
||||
import Header from "./Header";
|
||||
import { useLocation } from "react-router-dom";
|
||||
import { AiOutlineEdit, AiOutlinePlusCircle, AiTwotoneDelete } from "react-icons/ai";
|
||||
import { getCookie } from 'react-use-cookie';
|
||||
import { DataGrid, GridToolbar, frFR } from '@mui/x-data-grid';
|
||||
import Box from '@mui/material/Box';
|
||||
import InputLabel from '@mui/material/InputLabel';
|
||||
import InputAdornment from '@mui/material/InputAdornment';
|
||||
import FormControl from '@mui/material/FormControl';
|
||||
import TextField from '@mui/material/TextField';
|
||||
import AccountCircle from '@mui/icons-material/AccountCircle';
|
||||
import DatePicker from "react-datepicker";
|
||||
import "react-datepicker/dist/react-datepicker.css";
|
||||
import moment from "moment";
|
||||
import { set } from "date-fns";
|
||||
|
||||
|
||||
|
||||
function Pricing() {
|
||||
|
@ -50,7 +33,7 @@ function Pricing() {
|
|||
{ field: 'price_line_id', headerName: '_id', hide: true },
|
||||
{ field: 'client', headerName: 'Client', width: 150, flex: 1 },
|
||||
{ field: 'client_recid', headerName: 'Client Id', width: 150, hide: true },
|
||||
{ field: 'discount', headerName: 'Réduction (%)', width: 100, flex: 1 },
|
||||
{ field: 'discount', headerName: 'Réduction (%)', width: 100, flex: 1 },
|
||||
{ field: 'date_debut', headerName: 'Date début', width: 150, flex: 1 },
|
||||
{ field: 'date_fin', headerName: 'Date Fin', width: 150, flex: 1 },
|
||||
|
||||
|
@ -328,14 +311,14 @@ function Pricing() {
|
|||
|
||||
if (document.getElementsByName("new_sessiondatedebut") && document.getElementsByName("new_sessiondatedebut")[0]) {
|
||||
document.getElementsByName("new_sessiondatedebut")[0].disabled = true;
|
||||
document.getElementsByName("new_sessiondatedebut")[0].style.backgroundColor = "#ECEFF1";
|
||||
document.getElementsByName("new_sessiondatedebut")[0].style.backgroundColor = "#ECEFF1";
|
||||
|
||||
}
|
||||
|
||||
if (document.getElementById("new_sessiondatefin")) {
|
||||
document.getElementById("new_sessiondatefin").disabled = true;
|
||||
document.getElementById("new_sessiondatefin").style.backgroundColor = "#ECEFF1";
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -395,6 +378,11 @@ function Pricing() {
|
|||
GetClientPrices();
|
||||
GetClientlinked();
|
||||
GetClientClass();
|
||||
|
||||
window.scrollTo({
|
||||
top: 0,
|
||||
behavior: "smooth",
|
||||
});
|
||||
}, []);
|
||||
|
||||
let [sessionStatus, setsessionStatus] = useState(false);
|
||||
|
@ -828,8 +816,8 @@ function Pricing() {
|
|||
|
||||
{String(iseditclientprice) === "1" && <div>
|
||||
Modification du prix
|
||||
|
||||
<Box alignItems="left" sx={{ '& > :not(style)': { m: 1 }, width: '100%', }} onChange={DataUpdated_exist_price}>
|
||||
|
||||
<Box alignItems="left" sx={{ '& > :not(style)': { m: 1 }, width: '100%', }} onChange={DataUpdated_exist_price}>
|
||||
|
||||
<TextField
|
||||
required
|
||||
|
@ -866,7 +854,7 @@ function Pricing() {
|
|||
variant="standard"
|
||||
/>
|
||||
|
||||
|
||||
|
||||
|
||||
<div className="div_row">
|
||||
<div className="div_row_gauche">
|
||||
|
@ -951,8 +939,8 @@ function Pricing() {
|
|||
|
||||
{String(isaddprice) === "1" && <div>
|
||||
Creation d'un nouveau prix client
|
||||
|
||||
<Box alignItems="left" sx={{ '& > :not(style)': { m: 1 }, width: '100%', }} onChange={DataUpdated}>
|
||||
|
||||
<Box alignItems="left" sx={{ '& > :not(style)': { m: 1 }, width: '100%', }} onChange={DataUpdated}>
|
||||
|
||||
<div className="div_row">
|
||||
<div className="div_row_gauche">
|
||||
|
@ -998,7 +986,7 @@ function Pricing() {
|
|||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<div className="div_row">
|
||||
<div className="div_row_gauche">
|
||||
|
|
|
@ -0,0 +1,552 @@
|
|||
import React, { useState, useEffect } from "react";
|
||||
import UpdateUserInfo from "../components/UpdateUserInfo";
|
||||
import bannerimg from "../mysy_img/MYSY_banner_compte.png";
|
||||
import profileimg from "../mysy_img/MYSY-profil-2.png";
|
||||
import Button from '@mui/material/Button';
|
||||
import { useHistory } from "react-router-dom";
|
||||
|
||||
import UserHistoryRecherche from "../components/UserHistoryRecherche";
|
||||
import { confirmAlert } from 'react-confirm-alert'; // Import
|
||||
import 'react-confirm-alert/src/react-confirm-alert.css'; // Import css
|
||||
import { Helmet } from "react-helmet";
|
||||
import { useCookies } from "react-cookie";
|
||||
import axios from "axios";
|
||||
import { getCookie, } from 'react-use-cookie';
|
||||
|
||||
import UpgradeToPro from "./UpgradeToPro"
|
||||
import Profil_Objectif from "./ProfilObjectif";
|
||||
import { useLocation } from "react-router-dom";
|
||||
import { FaHandPointRight } from "react-icons/fa";
|
||||
import Intranet_Factures_Client from "./Intranet_Factures_Client";
|
||||
import Intranet_Tous_Documents from "./Intranet_Tous_Documents";
|
||||
import Modules_Mes_Documents from "./Modules_Mes_Documents";
|
||||
import Intranet_Mes_Stagiaires from "./Intranet_Mes_Stagiaires";
|
||||
|
||||
function Student_Account() {
|
||||
const [menu, setmenu] = useState("mes_stagiaires");
|
||||
const [cookie, setCookie, removeCookie] = useCookies(['tokenmysych']);
|
||||
const [result, setResult] = useState("");
|
||||
const [myApiResponse, setmyApiResponse] = useState("");
|
||||
const stored_user = getCookie('tokenmysych');
|
||||
const history = useHistory();
|
||||
const [country_code, setcountry_code] = useState("");
|
||||
const [country_name, setcountry_name] = useState("");
|
||||
const [city, setcity] = useState("");
|
||||
const [postal, setpostal] = useState("");
|
||||
const [latitude, setlatitude] = useState("");
|
||||
const [longitude, setlongitude] = useState("");
|
||||
const [IPv4, setIPv4] = useState("");
|
||||
const [state, setstate] = useState("");
|
||||
const [userimgprofil, setuserimgprofil] = useState();
|
||||
const [userIp, setuserIp] = useState("");
|
||||
const [username, setusername] = useState("");
|
||||
const [migratedaccount, setmigratedaccount] = useState("0");
|
||||
|
||||
const apiUrl = process.env.REACT_APP_API_URL;
|
||||
const formData = new FormData();
|
||||
|
||||
//alert("stored_user = "+stored_user);
|
||||
const location = useLocation();
|
||||
useEffect(() => {
|
||||
|
||||
var list_menu = ["affichage", "recherche", "upgradecompte", "profil_objectif", "mes_factures", "mes_documents"]
|
||||
|
||||
// getImage();
|
||||
|
||||
if (typeof (stored_user) === "undefined" || String(stored_user) === '') {
|
||||
//alert(" début puch");
|
||||
history.push("/Connexion");
|
||||
}
|
||||
|
||||
|
||||
async function fetchData() {
|
||||
const result = await axios('https://geolocation-db.com/json/',);
|
||||
//alert(result.data.IPv4);
|
||||
setuserIp(result.data.IPv4);
|
||||
setcountry_code(result.data.country_code);
|
||||
setcountry_name(result.data.country_name);
|
||||
setcity(result.data.city);
|
||||
setpostal(result.data.postal);
|
||||
setlatitude(result.data.latitude);
|
||||
setlongitude(result.data.longitude);
|
||||
setIPv4(result.data.IPv4);
|
||||
setstate(result.data.state);
|
||||
setuserIp(result.data.IPv4);
|
||||
}
|
||||
GetUserNameFromToken();
|
||||
|
||||
fetchData();
|
||||
|
||||
|
||||
if (location && location.state && location.state.menu) {
|
||||
displayProfil_Objectif();
|
||||
}
|
||||
|
||||
if (location && location.state && location.state.firstconnexion) {
|
||||
setfirstConnexion(location.state.firstconnexion);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}, []);
|
||||
|
||||
const [myimage, setmyimage] = useState();
|
||||
const [isimage, setisimage] = useState();
|
||||
|
||||
function getImage(e) {
|
||||
var myurl = process.env.REACT_APP_API_URL + "myclass/api/getRecodedImage/";
|
||||
var form = new FormData();
|
||||
form.append("token", stored_user);
|
||||
form.append("type", "user");
|
||||
|
||||
axios.post(myurl, form).then(res => {
|
||||
if (res.data.status != "False") {
|
||||
//console.log(" getImage : In test res.data.status = " + res.data.status);
|
||||
//console.log(" getImage: res.data.message.img = " + res.data.message);
|
||||
if (res.data.message.img.length > 0) {
|
||||
setisimage("True");
|
||||
}
|
||||
else {
|
||||
setisimage("False");
|
||||
}
|
||||
setmyimage(res.data.message.img);
|
||||
var ch_img = "data:image/png;base64," + res.data.message.img;
|
||||
setuserimgprofil(ch_img);
|
||||
}
|
||||
else {
|
||||
//console.log(" In Erreur res.data.status = " + res.data.status);
|
||||
//console.log(" In Erreur res.data.message = " + res.data.message);
|
||||
setisimage("False");
|
||||
setuserimgprofil(profileimg);
|
||||
}
|
||||
}).catch((error) => {
|
||||
console.warn('Not good man :( mysearchtext = ');
|
||||
setisimage("False");
|
||||
setuserimgprofil(profileimg);
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
const [firstConnexion, setfirstConnexion] = useState("");
|
||||
|
||||
|
||||
function logout_confirmation() {
|
||||
/* si c'est une connexion partner qui est active */
|
||||
if (typeof (stored_user) != "undefined") {
|
||||
removeCookie('tokenmysych', { path: '/' });
|
||||
history.push("/Connexion");
|
||||
}
|
||||
}
|
||||
|
||||
function logout() {
|
||||
confirmAlert({
|
||||
title: 'Deconnexion ?',
|
||||
message: 'Confirmez la deconnexion',
|
||||
buttons: [
|
||||
{
|
||||
label: 'Oui',
|
||||
onClick: () => logout_confirmation()
|
||||
},
|
||||
{
|
||||
label: 'Non',
|
||||
onClick: () => { return }
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
const displayHistory = () => {
|
||||
setmenu("recherche");
|
||||
};
|
||||
|
||||
|
||||
const displayProfil_Objectif = () => {
|
||||
setmenu("profil_objectif");
|
||||
};
|
||||
|
||||
|
||||
const displayProfil_Facture = () => {
|
||||
setmenu("mes_factures");
|
||||
};
|
||||
|
||||
const displayProfil_Devis = () => {
|
||||
setmenu("mes_devis");
|
||||
};
|
||||
|
||||
const displayProfil_Convention = () => {
|
||||
setmenu("mes_conventions");
|
||||
};
|
||||
|
||||
const displayProfil_Convocation = () => {
|
||||
setmenu("mes_convocations");
|
||||
};
|
||||
|
||||
|
||||
const displayProfil_Attestation = () => {
|
||||
setmenu("mes_attestations");
|
||||
};
|
||||
|
||||
|
||||
const displayProfil_Stagiaires = () => {
|
||||
setmenu("mes_stagiaires");
|
||||
};
|
||||
|
||||
const displayProfil_Tout_Documents = () => {
|
||||
setmenu("tout_documents");
|
||||
};
|
||||
|
||||
const displayProfil_Modules_Mes_Documents = () => {
|
||||
setmenu("modules_mes_documents");
|
||||
};
|
||||
|
||||
const upgradetopro = () => {
|
||||
setmenu("upgradecompte");
|
||||
};
|
||||
|
||||
const displayPersoInfo = () => {
|
||||
setmenu("affichage");
|
||||
};
|
||||
|
||||
|
||||
|
||||
const [connected_user_data, setconnected_user_data] = useState();
|
||||
|
||||
function GetUserNameFromToken(event) {
|
||||
|
||||
var form = new FormData();
|
||||
|
||||
form.append("token", stored_user);
|
||||
var myurl = process.env.REACT_APP_API_URL + "myclass/api/get_user_account/";
|
||||
|
||||
axios.post(myurl, form).then(res => {
|
||||
// console.log(" In GetUserNameFromToken res.data.status = " + res.data.status);
|
||||
// console.log(" In GetUserNameFromToken res.data.message = " + res.data.message);
|
||||
if (String(res.data.status) === String("true")) {
|
||||
|
||||
setusername(JSON.parse(res.data.message).email);
|
||||
if (JSON.parse(res.data.message).migrated &&
|
||||
String(JSON.parse(res.data.message).migrated) === String("1")) {
|
||||
setmigratedaccount(String(JSON.parse(res.data.message).migrated));
|
||||
}
|
||||
|
||||
|
||||
setconnected_user_data(JSON.parse(res.data.message));
|
||||
|
||||
}
|
||||
else {
|
||||
//console.log(" In GetUserNameFromToken res.data.status = " + res.data.status);
|
||||
//console.log(" In GetUserNameFromToken res.data.message = " + res.data.message);
|
||||
//setmyApiResponse("false");
|
||||
//setmyApimyApiMessage("")
|
||||
}
|
||||
|
||||
|
||||
}).catch((error) => {
|
||||
console.warn('In GetUserNameFromToken Not good man :( mysearchtext = ', error);
|
||||
//setmyApiResponse("false");
|
||||
//setmyApimyApiMessage("")
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
|
||||
function finaldeleteuseraccount(e) {
|
||||
|
||||
var form = new FormData();
|
||||
form.append("token", stored_user);
|
||||
// Ajout des info IP user
|
||||
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);
|
||||
|
||||
|
||||
var myurl = process.env.REACT_APP_API_URL + "myclass/api/send_mail_delete_user/";
|
||||
|
||||
|
||||
axios.post(myurl, form).then(res => {
|
||||
if (String(res.data.status) != String("false")) {
|
||||
//console.log(" In test res.data.status = " + res.data.status);
|
||||
//console.log(" In test res.data.message = " + res.data.message);
|
||||
setmyApiResponse("true");
|
||||
setResult(res.data.message)
|
||||
alert(res.data.message);
|
||||
|
||||
}
|
||||
else {
|
||||
//console.log(" In test res.data.status = " + res.data.status);
|
||||
//console.log(" In test res.data.message = " + res.data.message);
|
||||
setmyApiResponse("false");
|
||||
//setmyApimyApiMessage("")
|
||||
}
|
||||
|
||||
|
||||
}).catch((error) => {
|
||||
console.warn('Not good man :( mysearchtext = ');
|
||||
setmyApiResponse("false");
|
||||
//setmyApimyApiMessage("")
|
||||
})
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
function deletemyaccount(e) {
|
||||
confirmAlert({
|
||||
title: 'Suppremier votre compte',
|
||||
message: 'Cette action va supprimer toutes vos données, Confirmez-vous la suppression du compte ?',
|
||||
buttons: [
|
||||
{
|
||||
label: 'Oui',
|
||||
onClick: () => finaldeleteuseraccount()
|
||||
},
|
||||
{
|
||||
label: 'Non',
|
||||
onClick: () => { return }
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
|
||||
const [selectedFile, setSelectedFile] = useState();
|
||||
const [isSelected, setIsSelected] = useState(false);
|
||||
const [isnewimage, setisnewimage] = useState();
|
||||
|
||||
|
||||
const changeHandler = (event) => {
|
||||
let file_size = event.target.files[0].size;
|
||||
|
||||
//or if you like to have name and type
|
||||
let file_name = event.target.files[0].name;
|
||||
let file_type = event.target.files[0].type;
|
||||
|
||||
|
||||
//alert("file_size = "+file_size+" file_type = "+file_type+" a = "+a);
|
||||
if (file_size > 100000) {
|
||||
alert("L'image doit faire moins de 100 Kilo Octets");
|
||||
return;
|
||||
}
|
||||
setSelectedFile(event.target.files[0]);
|
||||
setIsSelected(true);
|
||||
setuserimgprofil(URL.createObjectURL(event.target.files[0]));
|
||||
};
|
||||
|
||||
function sendImage(e) {
|
||||
formData.append('File', selectedFile);
|
||||
formData.append("token", stored_user);
|
||||
formData.append("type", "user");
|
||||
fetch(
|
||||
process.env.REACT_APP_API_URL + "myclass/api/recordImage/",
|
||||
{
|
||||
method: 'POST',
|
||||
body: formData,
|
||||
}
|
||||
).then((response) => response.json())
|
||||
.then((result) => {
|
||||
//console.log('Success:', result['message']);
|
||||
setIsSelected(false);
|
||||
|
||||
})
|
||||
.catch((error) => {
|
||||
console.error('Error:');
|
||||
setIsSelected(true);
|
||||
});
|
||||
};
|
||||
|
||||
return (
|
||||
<div className="account">
|
||||
<Helmet>
|
||||
<title>Création compte MySy Trainig Technology</title>
|
||||
<meta name="description" content="Éditeur Français de logiciels pour organisme de formation. Avec solutions de E-Learning, gestion administrative et gestion relation client nous accompagnons les organismes de formation à réaliser l’audit QUALIOPI en toute sérénité. Nous sommes les moins cher du marché. Nous vous accompagnons automatiser vos process : inscription, évaluation, émargement (qr-code), Check-list QUALIOPI, Personnalisation et édition documents, Gestion formateurs, Catalogue formations personnalisé" />
|
||||
<meta name="robots" content="index,follow" />
|
||||
<meta name="title" content="Création compte MySy Trainig Technology" />
|
||||
<link rel="canonical" href={window.location.href} />
|
||||
</Helmet>
|
||||
|
||||
<h1 style={{ fontSize: '0.1px', opacity: '0' }}>Éditeur Français de logiciels pour organisme de formation. Avec solutions de E-Learning, gestion administrative et gestion relation client nous accompagnons les organismes de formation à réaliser l’audit QUALIOPI en toute sérénité. Nous sommes les moins cher du marché. Nous vous accompagnons automatiser vos process : inscription, évaluation, émargement (qr-code), Check-list QUALIOPI, Personnalisation et édition documents,
|
||||
Gestion formateurs, Catalogue formations personnalisé </h1>
|
||||
|
||||
|
||||
|
||||
<div className="div_mobile">
|
||||
<div>
|
||||
<h1 className="h1_transparent">Intranet Apprenant - Connexion MySy Training Technology </h1>
|
||||
</div>
|
||||
<div>
|
||||
<div className="div_gauche">
|
||||
<div>
|
||||
<img class="img-responsive img_user" src={userimgprofil} align="center" alt="MySy Training profile image" />
|
||||
|
||||
{!isSelected && <div className="nonlable">
|
||||
<input type="file" id="files" accept="image/*" onChange={changeHandler} style={{ opacity: "0", zIndex: "-1", maxWidth: "5px", maxHeight: "0px" }} />
|
||||
<label for="files" className="label">Changer image</label>
|
||||
</div>}
|
||||
|
||||
{isSelected && <div className="nonlable">
|
||||
<Button variant="outlined" onClick={sendImage} >Enregistrer</Button>
|
||||
</div>}
|
||||
|
||||
</div>
|
||||
<div className="nom_prenom"> {username && <b> {username} </b>}
|
||||
{!username && <b> xxxx </b>} </div>
|
||||
<hr className="my_hr" />
|
||||
|
||||
{/** Menu pour un utilisateur de type 'user'. Exemple, l'intranet du client d'un client */}
|
||||
|
||||
|
||||
|
||||
|
||||
{/** Menu pour un utilisateur NON type 'user' exemple un apprenant */}
|
||||
{connected_user_data && connected_user_data.type &&
|
||||
String(connected_user_data.type) === "student" &&
|
||||
<div>
|
||||
|
||||
|
||||
<div className="sousmenu" onClick={displayPersoInfo}> INFORMATIONS PERSONNELLES</div>
|
||||
<hr className="my_hr" />
|
||||
<div className="sousmenu" onClick={displayProfil_Objectif}> MES FORMATIONS</div>
|
||||
<hr className="my_hr" />
|
||||
<div className="sousmenu" onClick={displayProfil_Objectif}> MON PLANNING</div>
|
||||
<hr className="my_hr" />
|
||||
<div className="sousmenu" onClick={"displayProfil_Objectif"}> MES NOTES</div>
|
||||
<hr className="my_hr" />
|
||||
<div className="sousmenu" onClick={"displayProfil_Objectif"}> MES DOCUMENTS</div>
|
||||
<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" />*/}
|
||||
</div>}
|
||||
|
||||
</div>
|
||||
<div className="div_droite" style={{ border: 'none' }}>
|
||||
|
||||
{String(firstConnexion) === "1" &&
|
||||
<div className="div_droite firstConnexion">
|
||||
<div className="firstConnexion_text">
|
||||
<b>Cher Utilisateur, c'est votre première connexion, </b> <br /> <br />
|
||||
Nous sommes ravis de vous accueillir. Nous vous invitons à modifier votre mot de passe à partir du menu <i>"MES INFORMATIONS"</i> ==> Pavé <i>"SECURITE"</i> puis <i>"MODIFIER"</i> <br /><br />
|
||||
<Button onClick={(e) => setfirstConnexion()} className="firstConnexion_bton"> <FaHandPointRight /> Fermer</Button><br />
|
||||
<br /> Merci.
|
||||
</div>
|
||||
|
||||
</div>}
|
||||
|
||||
{String(myApiResponse) === String("true") && <div className="okUpdateData">
|
||||
{result}
|
||||
|
||||
</div>}
|
||||
|
||||
{String(myApiResponse) !== String("true") && <div className="koUpdateData">
|
||||
{result}
|
||||
|
||||
</div>}
|
||||
|
||||
{connected_user_data && connected_user_data.type && <h1 style={{ textAlign: 'center' }}> ESPACE ENT - {connected_user_data.type} </h1>}
|
||||
|
||||
|
||||
{String(menu) === String("affichage") && <UpdateUserInfo />}
|
||||
|
||||
{String(menu) === String("recherche") && <UserHistoryRecherche />}
|
||||
|
||||
{String(menu) === String("upgradecompte") && <UpgradeToPro />}
|
||||
|
||||
{String(menu) === String("profil_objectif") && <Profil_Objectif />}
|
||||
|
||||
{String(menu) === String("mes_factures") && connected_user_data && connected_user_data.partner_owner_recid &&
|
||||
connected_user_data.partner_client_id &&
|
||||
<Intranet_Factures_Client partner_client_id={connected_user_data.partner_client_id}
|
||||
partner_owner_recid={connected_user_data.partner_owner_recid}
|
||||
my_title={"MES DEVIS"}
|
||||
type_document={"devis"}
|
||||
type_user_connected={"user_account"}
|
||||
filter_all_document={"0"}
|
||||
/>}
|
||||
|
||||
|
||||
|
||||
|
||||
{String(menu) === String("modules_mes_documents") && connected_user_data && connected_user_data.partner_owner_recid &&
|
||||
connected_user_data.partner_client_id &&
|
||||
<Modules_Mes_Documents
|
||||
partner_client_id={connected_user_data.partner_client_id}
|
||||
partner_owner_recid={""}
|
||||
my_title={"Gestion Documentaire"}
|
||||
type_user_connected={"user_account"}
|
||||
type_document={"all"}
|
||||
/>}
|
||||
|
||||
{String(menu) === String("mes_devis") && connected_user_data && connected_user_data.partner_owner_recid &&
|
||||
connected_user_data.partner_client_id &&
|
||||
<Modules_Mes_Documents
|
||||
partner_client_id={connected_user_data.partner_client_id}
|
||||
partner_owner_recid={""}
|
||||
my_title={"MES DEVIS"}
|
||||
type_document={"devis"}
|
||||
type_user_connected={"user_account"}
|
||||
filter_all_document={"0"}
|
||||
/>}
|
||||
|
||||
{String(menu) === String("mes_conventions") && connected_user_data && connected_user_data.partner_owner_recid &&
|
||||
connected_user_data.partner_client_id &&
|
||||
<Modules_Mes_Documents partner_client_id={connected_user_data.partner_client_id}
|
||||
partner_owner_recid={""}
|
||||
my_title={"MES CONVENTIONS"}
|
||||
type_document={"convention"}
|
||||
type_user_connected={"user_account"}
|
||||
filter_all_document={"0"}
|
||||
/>}
|
||||
|
||||
|
||||
{String(menu) === String("mes_convocations") && connected_user_data && connected_user_data.partner_owner_recid &&
|
||||
connected_user_data.partner_client_id &&
|
||||
<Modules_Mes_Documents partner_client_id={connected_user_data.partner_client_id}
|
||||
partner_owner_recid={""}
|
||||
my_title={"MES CONVOCATIONS"}
|
||||
type_document={"convocation"}
|
||||
type_user_connected={"user_account"}
|
||||
filter_all_document={"0"}
|
||||
/>}
|
||||
|
||||
{String(menu) === String("mes_attestations") && connected_user_data && connected_user_data.partner_owner_recid &&
|
||||
connected_user_data.partner_client_id &&
|
||||
<Modules_Mes_Documents partner_client_id={connected_user_data.partner_client_id}
|
||||
partner_owner_recid={""}
|
||||
my_title={"MES ATTESTATIONS"}
|
||||
type_document={"attestation"}
|
||||
type_user_connected={"user_account"}
|
||||
filter_all_document={"0"}
|
||||
/>}
|
||||
|
||||
|
||||
{String(menu) === String("mes_stagiaires") && connected_user_data && connected_user_data.partner_owner_recid &&
|
||||
connected_user_data.partner_client_id &&
|
||||
<Intranet_Mes_Stagiaires partner_client_id={connected_user_data.partner_client_id}
|
||||
partner_owner_recid={connected_user_data.partner_owner_recid}
|
||||
|
||||
/>}
|
||||
|
||||
|
||||
|
||||
|
||||
{String(menu) === String("mes_documents") && <Profil_Objectif />}
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default Student_Account;
|
||||
|
|
@ -1459,10 +1459,12 @@ const New_C_Detail_Formation_2025 = (props) => {
|
|||
|
||||
{String(DetailTraining["price"]) && String(DetailTraining["price"]) !== String("0") && DetailTraining.business_prices && Object.keys(DetailTraining.business_prices).length > 0
|
||||
&& DetailTraining["price"] && <div className="mob_price_2025">
|
||||
<nav className="discounted_price">{String(DetailTraining.business_prices[0].discounted_price)} € HT</nav>
|
||||
<nav className="discounted_price" style={{ textAlign: 'center' }}>{String(DetailTraining.business_prices[0].discounted_price)} € HT </nav>
|
||||
|
||||
<nav className="training_price_barre"> {String(DetailTraining["price"])} € HT </nav>
|
||||
<nav className="discount_block"> (- {String(DetailTraining.business_prices[0].discount)} % ) </nav>
|
||||
{DetailTraining.business_prices && DetailTraining.business_prices.length > 0 && <div style={{ width: '100%', float: 'left', marginLeft: '3rem' }}>
|
||||
<nav className="training_price_barre" style={{ with: '50%', float: 'left', fontSize: '14px' }}> {String(DetailTraining["price"])} € HT </nav>
|
||||
<nav className="discount_block" style={{ with: '50%', float: 'left', fontSize: '14px' }}> (- {String(DetailTraining.business_prices[0].discount)} % ) </nav>
|
||||
</div>}
|
||||
</div>}
|
||||
|
||||
</div>
|
||||
|
@ -1734,7 +1736,7 @@ const New_C_Detail_Formation_2025 = (props) => {
|
|||
{(JSON.parse(formation).date_fin).substring(0, 10)} <b>A Distance </b> </nav>
|
||||
}
|
||||
|
||||
{(JSON.parse(formation).mode_animation) === "1" &&
|
||||
{(JSON.parse(formation).mode_animation) === "1" &&
|
||||
(JSON.parse(formation).date_debut).substring(0, 10) === (JSON.parse(formation).date_fin).substring(0, 10) &&
|
||||
<nav>
|
||||
Le
|
||||
|
@ -1742,7 +1744,7 @@ const New_C_Detail_Formation_2025 = (props) => {
|
|||
}
|
||||
|
||||
|
||||
{(JSON.parse(formation).mode_animation) === "0" &&
|
||||
{(JSON.parse(formation).mode_animation) === "0" &&
|
||||
(JSON.parse(formation).date_debut).substring(0, 10) !== (JSON.parse(formation).date_fin).substring(0, 10) &&
|
||||
<nav>
|
||||
{(JSON.parse(formation).date_debut).substring(0, 10)} au {(JSON.parse(formation).date_fin).substring(0, 10)} <b>En Présentiel </b> -
|
||||
|
@ -2070,8 +2072,8 @@ const New_C_Detail_Formation_2025 = (props) => {
|
|||
|
||||
|
||||
<div style={{ width: '100%', float: 'left', background: "#F4F4FB" }}>
|
||||
<div style={{ width: '90%', maxWidth: '1400px', marginLeft: 'auto', marginRight: 'auto' }}>
|
||||
<div style={{ width: '70%', float: 'left', "paddingLeft": "2rem", paddingRight: '2rem' }} ref={myRef_informe} id="myRef_informe">
|
||||
<div className="block_central" >
|
||||
<div className="block_central_gauche" ref={myRef_informe} id="myRef_informe">
|
||||
|
||||
{String(inscritpion) === "1" && <div className="description detail_element">
|
||||
<Inscription internal_url={DetailTraining["internal_url"]} action="inscription"
|
||||
|
@ -2150,7 +2152,7 @@ const New_C_Detail_Formation_2025 = (props) => {
|
|||
{(JSON.parse(formation).mode_animation) === "2" &&
|
||||
(JSON.parse(formation).date_debut).substring(0, 10) === (JSON.parse(formation).date_fin).substring(0, 10) &&
|
||||
<nav>
|
||||
Le {(JSON.parse(formation).date_debut).substring(0, 10)}
|
||||
Le {(JSON.parse(formation).date_debut).substring(0, 10)}
|
||||
<Tooltip className="tooltip_css" id="anim_hybride" style={{ "fontSize": "10px" }} />
|
||||
<a data-tooltip-id="anim_hybride" data-tooltip-html="Une partie en présentiel et une partie à distance"> <b> Animation Hybride <FcInfo /> </b> </a>
|
||||
- {(JSON.parse(formation).adresse)} {(JSON.parse(formation).code_postal)}
|
||||
|
@ -2181,10 +2183,10 @@ const New_C_Detail_Formation_2025 = (props) => {
|
|||
{(JSON.parse(formation).adresse)} {(JSON.parse(formation).code_postal)}
|
||||
</nav>}
|
||||
|
||||
{(JSON.parse(formation).mode_animation) === "0" &&
|
||||
{(JSON.parse(formation).mode_animation) === "0" &&
|
||||
(JSON.parse(formation).date_debut).substring(0, 10) === (JSON.parse(formation).date_fin).substring(0, 10) &&
|
||||
<nav>
|
||||
Le {(JSON.parse(formation).date_debut).substring(0, 10)} <b>En Présentiel </b> -
|
||||
Le {(JSON.parse(formation).date_debut).substring(0, 10)} <b>En Présentiel </b> -
|
||||
{(JSON.parse(formation).adresse)} {(JSON.parse(formation).code_postal)}
|
||||
</nav>}
|
||||
|
||||
|
@ -2405,13 +2407,16 @@ const New_C_Detail_Formation_2025 = (props) => {
|
|||
&& DetailTraining["price"] &&
|
||||
<div className="block_prix_2025">
|
||||
<div className="block_sticky_info_price">
|
||||
<nav className="discounted_price">{String(DetailTraining.business_prices[0].discounted_price)} € HT</nav>
|
||||
|
||||
<nav className="training_price_barre"> {String(DetailTraining["price"])} € HT </nav>
|
||||
<nav className="discount_block"> (- {String(DetailTraining.business_prices[0].discount)} % ) </nav>
|
||||
<nav className="discounted_price">{String(DetailTraining.business_prices[0].discounted_price)} € HT </nav>
|
||||
</div>
|
||||
<div className="tag_eligle_cpf">Eligle CFP
|
||||
</div>
|
||||
|
||||
{DetailTraining.business_prices && DetailTraining.business_prices.length > 0 && <div style={{ width: '100%', float: 'left' }}>
|
||||
<nav className="training_price_barre" style={{ with: '50%', float: 'left', fontSize: '14px' }}> {String(DetailTraining["price"])} € HT </nav>
|
||||
<nav className="discount_block" style={{ with: '50%', float: 'left', fontSize: '14px' }}> (- {String(DetailTraining.business_prices[0].discount)} % ) </nav>
|
||||
</div>}
|
||||
|
||||
</div>}
|
||||
|
||||
<div className="block_sticky_info_caracteristique">
|
||||
|
|
|
@ -1,5 +1,20 @@
|
|||
.new_detail_formation_2025 {
|
||||
|
||||
.block_central {
|
||||
width: 90%;
|
||||
max-width: 1400px;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
.block_central_gauche {
|
||||
width: 70%;
|
||||
float: left;
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
}
|
||||
|
||||
|
||||
* h6 {
|
||||
font-size: small;
|
||||
}
|
||||
|
@ -95,7 +110,7 @@
|
|||
}
|
||||
|
||||
.mob_price_2025 {
|
||||
width: 50%;
|
||||
width: 100%;
|
||||
float: left;
|
||||
height: 24px;
|
||||
|
||||
|
@ -1579,7 +1594,7 @@
|
|||
|
||||
.discounted_price {
|
||||
font-weight: 600;
|
||||
font-size: 20px;
|
||||
font-size: 18px;
|
||||
color: #ff8c00;
|
||||
}
|
||||
|
||||
|
@ -3711,7 +3726,7 @@
|
|||
|
||||
.discounted_price {
|
||||
font-weight: 600;
|
||||
font-size: 20px;
|
||||
font-size: 18px;
|
||||
color: #ff8c00;
|
||||
}
|
||||
|
||||
|
@ -5896,7 +5911,7 @@
|
|||
|
||||
.discounted_price {
|
||||
font-weight: 600;
|
||||
font-size: 20px;
|
||||
font-size: 18px;
|
||||
color: #ff8c00;
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,14 @@
|
|||
import Ent_Intranet from "../components/Ent_Intranet"
|
||||
|
||||
const mon_ent_student = () => {
|
||||
|
||||
|
||||
return (
|
||||
<div>
|
||||
<Ent_Intranet />
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
export default mon_ent_student;
|
|
@ -1,19 +1,12 @@
|
|||
import Mon_Intranet_Public from "../components/Mon_Intranet_Public"
|
||||
import Navigation from "../components/Navigation";
|
||||
import Footer from "./footer";
|
||||
|
||||
const mon_intranet_public = () => {
|
||||
|
||||
|
||||
return (
|
||||
<div>
|
||||
|
||||
<div>
|
||||
<Mon_Intranet_Public />
|
||||
</div>
|
||||
|
||||
<Mon_Intranet_Public />
|
||||
</div>
|
||||
|
||||
)
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,21 @@
|
|||
import Navigation from "../components/Navigation";
|
||||
import Ent_Intranet from "./../components/Ent_Intranet";
|
||||
import New_C_Header_2025_V2 from "../components/header_automatic_files/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 Student_Account from "./../components/Student_Account";
|
||||
const student_account = () => {
|
||||
|
||||
return (
|
||||
<div>
|
||||
<New_Navigation_2025 />
|
||||
<New_C_Header_2025_V2 />
|
||||
<Student_Account />
|
||||
<New_C_Footer_Without_Testimony_2025_V2 />
|
||||
</div>
|
||||
|
||||
)
|
||||
}
|
||||
|
||||
export default student_account;
|
||||
|
|
@ -3,12 +3,12 @@
|
|||
.tooltip_css {
|
||||
background: #81BC3A;
|
||||
z-index: 9999;
|
||||
font-family: "DM Sans", "sans-serif";
|
||||
font-size:"13px";
|
||||
}
|
||||
|
||||
font-family: "DM Sans", "sans-serif";
|
||||
font-size: "13px";
|
||||
}
|
||||
|
||||
.Mui-disabled {
|
||||
font-family:'DM Sans','Sans-serif';
|
||||
font-family: 'DM Sans', 'Sans-serif';
|
||||
font-size: small !important;
|
||||
padding: 0px !important;
|
||||
padding-left: 5px !important;
|
||||
|
@ -152,7 +152,7 @@
|
|||
}
|
||||
|
||||
.css-1t8l2tu-MuiInputBase-input-MuiOutlinedInput-input .Mui-disabled {
|
||||
font-family:'DM Sans','Sans-serif';
|
||||
font-family: 'DM Sans', 'Sans-serif';
|
||||
font: inherit;
|
||||
letter-spacing: inherit;
|
||||
color: currentColor;
|
||||
|
@ -198,7 +198,7 @@
|
|||
}
|
||||
|
||||
.session_caract {
|
||||
font-family: DM Sans;
|
||||
font-family: DM Sans;
|
||||
width: 100%;
|
||||
padding: 5px;
|
||||
float: left;
|
||||
|
@ -277,7 +277,7 @@
|
|||
}
|
||||
|
||||
.bton_enreg {
|
||||
font-family: DM sans;
|
||||
font-family: DM sans;
|
||||
border-radius: 5rem;
|
||||
font-size: small;
|
||||
background: #81BC3A !important;
|
||||
|
@ -495,7 +495,7 @@
|
|||
}
|
||||
|
||||
.bton_enreg {
|
||||
font-family: DM sans;
|
||||
font-family: DM sans;
|
||||
border-radius: 5rem;
|
||||
font-size: small;
|
||||
background: #81BC3A !important;
|
||||
|
@ -555,7 +555,7 @@
|
|||
}
|
||||
|
||||
.css-1t8l2tu-MuiInputBase-input-MuiOutlinedInput-input .Mui-disabled {
|
||||
font-family:'DM Sans','Sans-serif';
|
||||
font-family: 'DM Sans', 'Sans-serif';
|
||||
font: inherit;
|
||||
letter-spacing: inherit;
|
||||
color: currentColor;
|
||||
|
@ -718,7 +718,7 @@
|
|||
}
|
||||
|
||||
.css-1t8l2tu-MuiInputBase-input-MuiOutlinedInput-input .Mui-disabled {
|
||||
font-family:'DM Sans','Sans-serif';
|
||||
font-family: 'DM Sans', 'Sans-serif';
|
||||
font: inherit;
|
||||
letter-spacing: inherit;
|
||||
color: currentColor;
|
||||
|
@ -764,7 +764,7 @@
|
|||
}
|
||||
|
||||
.session_caract {
|
||||
font-family: DM Sans;
|
||||
font-family: DM Sans;
|
||||
width: 50%;
|
||||
padding: 5px;
|
||||
float: left;
|
||||
|
@ -850,7 +850,7 @@
|
|||
}
|
||||
|
||||
.bton_enreg {
|
||||
font-family: DM sans;
|
||||
font-family: DM sans;
|
||||
border-radius: 5rem;
|
||||
font-size: small;
|
||||
background: #81BC3A !important;
|
||||
|
@ -1055,7 +1055,7 @@
|
|||
border-radius: 1rem;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
|
||||
|
||||
.bton_suppr {
|
||||
background: transparent;
|
||||
|
@ -1071,7 +1071,7 @@
|
|||
}
|
||||
|
||||
.bton_enreg {
|
||||
font-family: DM sans;
|
||||
font-family: DM sans;
|
||||
border-radius: 5rem;
|
||||
font-size: small;
|
||||
background: #81BC3A !important;
|
||||
|
@ -1124,7 +1124,7 @@
|
|||
}
|
||||
|
||||
.css-1t8l2tu-MuiInputBase-input-MuiOutlinedInput-input .Mui-disabled {
|
||||
font-family:'DM Sans','Sans-serif';
|
||||
font-family: 'DM Sans', 'Sans-serif';
|
||||
font: inherit;
|
||||
letter-spacing: inherit;
|
||||
color: currentColor;
|
||||
|
@ -1332,7 +1332,7 @@
|
|||
}
|
||||
|
||||
.css-1t8l2tu-MuiInputBase-input-MuiOutlinedInput-input .Mui-disabled {
|
||||
font-family:'DM Sans','Sans-serif';
|
||||
font-family: 'DM Sans', 'Sans-serif';
|
||||
font: inherit;
|
||||
letter-spacing: inherit;
|
||||
color: currentColor;
|
||||
|
@ -1378,7 +1378,7 @@
|
|||
}
|
||||
|
||||
.session_caract {
|
||||
font-family: DM Sans;
|
||||
font-family: DM Sans;
|
||||
width: 33%;
|
||||
padding: 5px;
|
||||
float: left;
|
||||
|
@ -1463,7 +1463,7 @@
|
|||
}
|
||||
|
||||
.bton_enreg {
|
||||
font-family: DM sans;
|
||||
font-family: DM sans;
|
||||
border-radius: 5rem;
|
||||
font-size: small;
|
||||
background: #81BC3A !important;
|
||||
|
@ -1632,7 +1632,7 @@
|
|||
text-align: center;
|
||||
margin-bottom: 0.8rem;
|
||||
color: white;
|
||||
cursor: pointer;
|
||||
cursor: normal;
|
||||
font-style: italic;
|
||||
background-color: gray;
|
||||
font-weight: normal;
|
||||
|
@ -1814,7 +1814,7 @@
|
|||
}
|
||||
|
||||
.css-1t8l2tu-MuiInputBase-input-MuiOutlinedInput-input .Mui-disabled {
|
||||
font-family:'DM Sans','Sans-serif';
|
||||
font-family: 'DM Sans', 'Sans-serif';
|
||||
font: inherit;
|
||||
letter-spacing: inherit;
|
||||
color: currentColor;
|
||||
|
@ -1860,7 +1860,7 @@
|
|||
}
|
||||
|
||||
.session_caract {
|
||||
font-family: DM Sans;
|
||||
font-family: DM Sans;
|
||||
width: 33%;
|
||||
padding: 5px;
|
||||
float: left;
|
||||
|
@ -2030,7 +2030,7 @@
|
|||
}
|
||||
|
||||
.bton_enreg {
|
||||
font-family: DM sans;
|
||||
font-family: DM sans;
|
||||
border-radius: 5rem;
|
||||
font-size: small;
|
||||
background: #81BC3A !important;
|
||||
|
@ -2200,7 +2200,7 @@
|
|||
text-align: center;
|
||||
margin-bottom: 0.8rem;
|
||||
color: white;
|
||||
cursor: pointer;
|
||||
cursor: normal;
|
||||
font-style: italic;
|
||||
background-color: gray;
|
||||
font-weight: normal;
|
||||
|
@ -2213,7 +2213,7 @@
|
|||
text-align: center;
|
||||
}
|
||||
|
||||
.css-l4u8b9-MuiInputBase-root-MuiInput-root{
|
||||
.css-l4u8b9-MuiInputBase-root-MuiInput-root {
|
||||
text-align: left !important;
|
||||
}
|
||||
|
||||
|
@ -2280,7 +2280,7 @@
|
|||
}
|
||||
|
||||
.css-9ddj71-MuiInputBase-root-MuiOutlinedInput-root {
|
||||
font-family: DM Sans !important;
|
||||
font-family: DM Sans !important;
|
||||
height: 3.5rem !important;
|
||||
}
|
||||
|
||||
|
|
|
@ -664,7 +664,7 @@
|
|||
|
||||
.discounted_price {
|
||||
font-weight: 600;
|
||||
font-size: 18px;
|
||||
font-size: 16px;
|
||||
color: #ff8c00;
|
||||
}
|
||||
|
||||
|
@ -1089,7 +1089,7 @@
|
|||
|
||||
.discounted_price {
|
||||
font-weight: 600;
|
||||
font-size: 20px;
|
||||
font-size: 18px;
|
||||
color: #ff8c00;
|
||||
}
|
||||
|
||||
|
@ -1223,7 +1223,7 @@
|
|||
}
|
||||
|
||||
.formation_titre {
|
||||
height: 29px;
|
||||
height: 40px;
|
||||
font-style: normal;
|
||||
font-weight: 600;
|
||||
font-size: 13px;
|
||||
|
@ -2485,7 +2485,7 @@
|
|||
}
|
||||
|
||||
.formation_titre {
|
||||
height: 19px;
|
||||
height: 29px;
|
||||
font-style: normal;
|
||||
font-weight: 600;
|
||||
font-size: 13px;
|
||||
|
@ -2500,7 +2500,7 @@
|
|||
margin-bottom: 1px;
|
||||
font-family: DM Sans;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
.formation_prix {
|
||||
/* 1680€ HT */
|
||||
|
|
Loading…
Reference in New Issue