Merge remote-tracking branch 'origin/master'

This commit is contained in:
2024-04-22 11:42:48 +02:00
16 changed files with 89 additions and 40 deletions

View File

@ -203,6 +203,8 @@ msg.notification.new=You have a new message
forum.create=Create forum
forum.create.name=New forum's name
forum.post.create.name=New post's title
forum.notification.topic.new=New topic created
forum.notification.forum.new=New Forum created
firstname/name=Firstname/Name
regNo=regNo
From=From
@ -282,7 +284,7 @@ rereg=Reregister in the next year of one of my cursus
reregsup=Register in a supplementary cursus
chcur=Change from a cursus to another
iwouldlike=I would like to :
newcurr=New curriculum
newcurr=Actual curriculums
cursusprereq=The cursus you selected has some prerequisites ensure that your external curriculum data is updated in your profile
imposecurriculum=Impose a curriculum
impose=Impose

View File

@ -201,6 +201,8 @@ msg.notification.new=Vous avez un nouveau message!
forum.create=Créer un forum
forum.create.name=Nom du forum
forum.post.create.name=Titre du post
forum.notification.topic.new=Nouveau Topic crée
forum.notification.forum.new=Nouveau forum crée
firstname/name=Prénom/Nom
regNo=Matricule
From=De
@ -280,7 +282,7 @@ rereg=Me réinscrire dans l'année supérieure
reregsup=M'inscrire dans un cursus supplémentaire
chcur=Changer d'un cursus vers un autre
iwouldlike=Je voudrais :
newcurr=Nouveau cursus
newcurr=Cursus actuels
cursusprereq=Le cursus que vous avez selectionné a des prérequis assurez vous que votre dossier de parcours est a jour dans votre profil
imposecurriculum=Imposer un cursusgotimposed
impose=Imposer

View File

@ -2,7 +2,7 @@
import { toast } from 'vue3-toastify';
import { ref } from 'vue'
import i18n, { setLang } from './i18n.js'
import { isLogged } from '@/rest/Users.js'
import { isLogged, getSelf } from '@/rest/Users.js'
import { notifications, fetchNotifications, archiveNotification } from '@/rest/notifications.js'
import { appList, currentView } from '@/rest/apps.js'
@ -14,9 +14,11 @@ window.onhashchange = function() {
currentURL = window.location.hash;
}
const Logged = ref(isLogged());
const user = ref();
if(Logged.value){
fetchNotifications();
getSelf().then(e => user.value = e);
}
window.addEventListener('hashchange', () => {
@ -49,7 +51,7 @@ window.addEventListener('hashchange', () => {
</a></li>
<li style="float: right;" title=login>
<a class="icon" href="#/login">
<div class="fa-solid fa-user" :style="Logged ? 'color: red' : ''" style="margin-top: 7px; margin-bottom: 3px; "></div>
<div class="fa-solid fa-user" :style="Logged ? 'color: red' : ''" style="margin-top: 7px; margin-bottom: 3px; "></div>
</a></li>
<li style="float: right;" title=notifications @click="notification = !notification">
<a class="icon">
@ -75,6 +77,7 @@ window.addEventListener('hashchange', () => {
{{i18n("app.manage.profile")}}
</a>
</div>
<span v-if=Logged>RegNo - {{ user.regNo }}</span>
</div>
</a></li>
</ul>
@ -133,10 +136,12 @@ window.addEventListener('hashchange', () => {
.dropdown {
color:black;
margin-top:55px;
width:160px;
display: inline-block;
height:110px;
/* height:110px; */
text-align: center;
font-size: 13px;
position: absolute;
z-index: 1;
@ -162,12 +167,12 @@ window.addEventListener('hashchange', () => {
margin-top: var(--header-size);
top:0;
left:0;
padding: 25px 0 0;
padding: 25px 0;
width: 70px ;
background-color: rgb(53, 53, 53);
border-right:5px;
border-color:black;
height: 100%;
height: calc( 95% - var(--header-size) ) ;
position: fixed;
overflow: scroll;
transition-duration: .3s;
@ -237,8 +242,7 @@ window.addEventListener('hashchange', () => {
.text {
right: 0%;
width: 0%;
visibility: collapse;
opacity: 0;
display:none;
color: white;
font-size: 1.2em;
font-weight: 600;
@ -247,7 +251,7 @@ window.addEventListener('hashchange', () => {
ul.vertical:hover .text {
opacity:1;
visibility:visible;
display: inline;
width: 60%;
transition-duration: .3s;
padding-left: 15px;

View File

@ -32,6 +32,9 @@
<div>
{{ i18n("firstname/name") }} : {{user.firstName}} {{user.lastName}}
</div>
<div>
{{ i18n("regNo") }} : {{user.regNo}}
</div>
<div>
{{ i18n("login.guest.email") }}: {{user.email}}
</div>

View File

@ -80,7 +80,7 @@ function isExempted(course){
</div>
</div>
<div v-if="list === false">
<button @click="list=!list;submitted=!submitted">{{ i18n("courses.back") }}</button>
<button @click="list=!list;submitted=false">{{ i18n("courses.back") }}</button>
</div>
</template>

View File

@ -115,7 +115,7 @@
<div class="studentfirstname">{{item.user.firstName}}</div>
<div class="studentlastname">{{item.user.lastName}}</div>
<div class="reqState">{{ i18n("approval")}}{{item.state}}</div>
<div class="teacherApproval">{{ i18n("teacherapproval") }} : {{item.teacherApprovalState}}</div>
<div class="teacherApproval">{{ i18n("teacherapproval") }} {{item.teacherApprovalState}}</div>
<div class="infos"><button @click="windowsState=5;targetId=item.id">{{ i18n("request.moreInfos") }}</button></div>
</div>
</div>

View File

@ -192,10 +192,10 @@
<div>
{{ i18n("login.guest.email") }}: {{user.email}}
</div>
<div v-if="user.role==='Student'">
<div>
{{ i18n("regNo") }} : {{user.regNo}}
</div>
<div v-else>
<div>
{{ i18n("role") }}: {{i18n((user.role))}}
</div>
<div>
@ -253,7 +253,7 @@
{{ i18n("alreadypaid") }}
</div>
<div>
<button @click="windowState=7" v-if="minerv.value.toPay <= 0">{{ i18n("askscholarship") }}</button>
<button @click="windowState=7" v-if="minerv.value.toPay >= 0">{{ i18n("askscholarship") }}</button>
</div>
</div>
<div v-if="windowState === 5">
@ -369,7 +369,7 @@
</div>
</div>
</div>
<div v-if="windowState === 0" class="moreInfos">
<div v-if="windowState === 0 && user.role==='Student'" class="moreInfos">
<div class = "oldcursus">
<div class="listTitle">
{{ i18n("oldcursus") }}

View File

@ -2,9 +2,14 @@ import { ref } from 'vue'
import { restGet, restPost } from '@/rest/restConsumer.js'
export const notifications = ref([]);
let timerSet = false
export function fetchNotifications(){
restGet("/notifications").then( e => notifications.value = e );
if(!timerSet){
timerSet = true;
setTimeout(() => {timerSet = false; fetchNotifications()}, 5000);
}
}
export function archiveNotification(id){