Skip to content
Snippets Groups Projects
Commit 8b00a510 authored by Henrik's avatar Henrik
Browse files

feat: update navbar style

parent 13807262
No related branches found
No related tags found
1 merge request!73feat: update navbar style
Pipeline #282682 passed with warnings
Showing
with 91 additions and 62 deletions
<svg xmlns="http://www.w3.org/2000/svg" height="48" viewBox="0 -960 960 960" width="48"><path d="M680-280q25 0 42.5-17.5T740-340q0-25-17.5-42.5T680-400q-25 0-42.5 17.5T620-340q0 25 17.5 42.5T680-280Zm0 120q31 0 57-14.5t42-38.5q-22-13-47-20t-52-7q-27 0-52 7t-47 20q16 24 42 38.5t57 14.5ZM480-80q-139-35-229.5-159.5T160-516v-244l320-120 320 120v227q-19-8-39-14.5t-41-9.5v-147l-240-90-240 90v188q0 47 12.5 94t35 89.5Q310-290 342-254t71 60q11 32 29 61t41 52q-1 0-1.5.5t-1.5.5Zm200 0q-83 0-141.5-58.5T480-280q0-83 58.5-141.5T680-480q83 0 141.5 58.5T880-280q0 83-58.5 141.5T680-80ZM480-494Z" fill="#ffffff"/></svg>
\ No newline at end of file
<svg xmlns="http://www.w3.org/2000/svg" height="48" viewBox="0 -960 960 960" width="48"><path d="M680-280q25 0 42.5-17.5T740-340q0-25-17.5-42.5T680-400q-25 0-42.5 17.5T620-340q0 25 17.5 42.5T680-280Zm0 120q31 0 57-14.5t42-38.5q-22-13-47-20t-52-7q-27 0-52 7t-47 20q16 24 42 38.5t57 14.5ZM480-80q-139-35-229.5-159.5T160-516v-244l320-120 320 120v227q-19-8-39-14.5t-41-9.5v-147l-240-90-240 90v188q0 47 12.5 94t35 89.5Q310-290 342-254t71 60q11 32 29 61t41 52q-1 0-1.5.5t-1.5.5Zm200 0q-83 0-141.5-58.5T480-280q0-83 58.5-141.5T680-480q83 0 141.5 58.5T880-280q0 83-58.5 141.5T680-80ZM480-494Z" fill="#000000"/></svg>
\ No newline at end of file
<svg xmlns="http://www.w3.org/2000/svg" height="48" viewBox="0 -960 960 960" width="48"><path d="M40-160v-112q0-34 17.5-62.5T104-378q62-31 126-46.5T360-440q66 0 130 15.5T616-378q29 15 46.5 43.5T680-272v112H40Zm720 0v-120q0-44-24.5-84.5T666-434q51 6 96 20.5t84 35.5q36 20 55 44.5t19 53.5v120H760ZM360-480q-66 0-113-47t-47-113q0-66 47-113t113-47q66 0 113 47t47 113q0 66-47 113t-113 47Zm400-160q0 66-47 113t-113 47q-11 0-28-2.5t-28-5.5q27-32 41.5-71t14.5-81q0-42-14.5-81T544-792q14-5 28-6.5t28-1.5q66 0 113 47t47 113ZM120-240h480v-32q0-11-5.5-20T580-306q-54-27-109-40.5T360-360q-56 0-111 13.5T140-306q-9 5-14.5 14t-5.5 20v32Zm240-320q33 0 56.5-23.5T440-640q0-33-23.5-56.5T360-720q-33 0-56.5 23.5T280-640q0 33 23.5 56.5T360-560Zm0 320Zm0-400Z" fill="#000000"/></svg>
\ No newline at end of file
<svg xmlns="http://www.w3.org/2000/svg" height="32" viewBox="0 -960 960 960" width="32"><path d="M480-481q-66 0-108-42t-42-108q0-66 42-108t108-42q66 0 108 42t42 108q0 66-42 108t-108 42ZM160-160v-94q0-38 19-65t49-41q67-30 128.5-45T480-420q62 0 123 15.5t127.921 44.694q31.301 14.126 50.19 40.966Q800-292 800-254v94H160Zm60-60h520v-34q0-16-9.5-30.5T707-306q-64-31-117-42.5T480-360q-57 0-111 11.5T252-306q-14 7-23 21.5t-9 30.5v34Zm260-321q39 0 64.5-25.5T570-631q0-39-25.5-64.5T480-721q-39 0-64.5 25.5T390-631q0 39 25.5 64.5T480-541Zm0-90Zm0 411Z" fill="#000"/></svg>
\ No newline at end of file
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="M234-276q51-39 114-61.5T480-360q69 0 132 22.5T726-276q35-41 54.5-93T800-480q0-133-93.5-226.5T480-800q-133 0-226.5 93.5T160-480q0 59 19.5 111t54.5 93Zm246-164q-59 0-99.5-40.5T340-580q0-59 40.5-99.5T480-720q59 0 99.5 40.5T620-580q0 59-40.5 99.5T480-440Zm0 360q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-80q53 0 100-15.5t86-44.5q-39-29-86-44.5T480-280q-53 0-100 15.5T294-220q39 29 86 44.5T480-160Zm0-360q26 0 43-17t17-43q0-26-17-43t-43-17q-26 0-43 17t-17 43q0 26 17 43t43 17Zm0-60Zm0 360Z" fill="#000000"/></svg>
\ No newline at end of file
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="M840-320 464-614 305-395 120-540v-140l160 120 200-280 200 160h160v360ZM120-160v-280l200 160 160-220 360 281v59H120Z"/></svg>
\ No newline at end of file
<svg xmlns="http://www.w3.org/2000/svg" height="48" viewBox="0 -960 960 960" width="48"><path d="M240-399h313v-60H240v60Zm0-130h480v-60H240v60Zm0-130h480v-60H240v60ZM80-80v-740q0-24 18-42t42-18h680q24 0 42 18t18 42v520q0 24-18 42t-42 18H240L80-80Zm134-220h606v-520H140v600l74-80Zm-74 0v-520 520Z" fill="#ffffff"/></svg>
\ No newline at end of file
<svg xmlns="http://www.w3.org/2000/svg" height="48" viewBox="0 -960 960 960" width="48"><path d="M240-399h313v-60H240v60Zm0-130h480v-60H240v60Zm0-130h480v-60H240v60ZM80-80v-740q0-24 18-42t42-18h680q24 0 42 18t18 42v520q0 24-18 42t-42 18H240L80-80Zm134-220h606v-520H140v600l74-80Zm-74 0v-520 520Z" fill="#000000"/></svg>
\ No newline at end of file
<svg xmlns="http://www.w3.org/2000/svg" height="48" viewBox="0 -960 960 960" width="48"><path d="M180-120q-24 0-42-18t-18-42v-600q0-24 18-42t42-18h299v60H180v600h299v60H180Zm486-185-43-43 102-102H360v-60h363L621-612l43-43 176 176-174 174Z" fill="#ffffff"/></svg>
\ No newline at end of file
<svg xmlns="http://www.w3.org/2000/svg" height="48" viewBox="0 -960 960 960" width="48"><path d="M180-120q-24 0-42-18t-18-42v-600q0-24 18-42t42-18h299v60H180v600h299v60H180Zm486-185-43-43 102-102H360v-60h363L621-612l43-43 176 176-174 174Z" fill="#000000"/></svg>
\ No newline at end of file
<svg xmlns="http://www.w3.org/2000/svg" height="48" viewBox="0 -960 960 960" width="48"><path d="M480-481q-66 0-108-42t-42-108q0-66 42-108t108-42q66 0 108 42t42 108q0 66-42 108t-108 42ZM160-160v-94q0-38 19-65t49-41q67-30 128.5-45T480-420q62 0 123 15.5t127.921 44.694q31.301 14.126 50.19 40.966Q800-292 800-254v94H160Zm60-60h520v-34q0-16-9.5-30.5T707-306q-64-31-117-42.5T480-360q-57 0-111 11.5T252-306q-14 7-23 21.5t-9 30.5v34Zm260-321q39 0 64.5-25.5T570-631q0-39-25.5-64.5T480-721q-39 0-64.5 25.5T390-631q0 39 25.5 64.5T480-541Zm0-90Zm0 411Z" fill="#ffffff"/></svg>
\ No newline at end of file
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="M234-276q51-39 114-61.5T480-360q69 0 132 22.5T726-276q35-41 54.5-93T800-480q0-133-93.5-226.5T480-800q-133 0-226.5 93.5T160-480q0 59 19.5 111t54.5 93Zm246-164q-59 0-99.5-40.5T340-580q0-59 40.5-99.5T480-720q59 0 99.5 40.5T620-580q0 59-40.5 99.5T480-440Zm0 360q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-80q53 0 100-15.5t86-44.5q-39-29-86-44.5T480-280q-53 0-100 15.5T294-220q39 29 86 44.5T480-160Zm0-360q26 0 43-17t17-43q0-26-17-43t-43-17q-26 0-43 17t-17 43q0 26 17 43t43 17Zm0-60Zm0 360Z" fill="#ffffff"/></svg>
\ No newline at end of file
<svg xmlns="http://www.w3.org/2000/svg" height="48" viewBox="0 -960 960 960" width="48"><path d="m388-80-20-126q-19-7-40-19t-37-25l-118 54-93-164 108-79q-2-9-2.5-20.5T185-480q0-9 .5-20.5T188-521L80-600l93-164 118 54q16-13 37-25t40-18l20-127h184l20 126q19 7 40.5 18.5T669-710l118-54 93 164-108 77q2 10 2.5 21.5t.5 21.5q0 10-.5 21t-2.5 21l108 78-93 164-118-54q-16 13-36.5 25.5T592-206L572-80H388Zm48-60h88l14-112q33-8 62.5-25t53.5-41l106 46 40-72-94-69q4-17 6.5-33.5T715-480q0-17-2-33.5t-7-33.5l94-69-40-72-106 46q-23-26-52-43.5T538-708l-14-112h-88l-14 112q-34 7-63.5 24T306-642l-106-46-40 72 94 69q-4 17-6.5 33.5T245-480q0 17 2.5 33.5T254-413l-94 69 40 72 106-46q24 24 53.5 41t62.5 25l14 112Zm44-210q54 0 92-38t38-92q0-54-38-92t-92-38q-54 0-92 38t-38 92q0 54 38 92t92 38Zm0-130Z" fill="#ffffff"/></svg>
\ No newline at end of file
<svg xmlns="http://www.w3.org/2000/svg" height="48" viewBox="0 -960 960 960" width="48"><path d="m388-80-20-126q-19-7-40-19t-37-25l-118 54-93-164 108-79q-2-9-2.5-20.5T185-480q0-9 .5-20.5T188-521L80-600l93-164 118 54q16-13 37-25t40-18l20-127h184l20 126q19 7 40.5 18.5T669-710l118-54 93 164-108 77q2 10 2.5 21.5t.5 21.5q0 10-.5 21t-2.5 21l108 78-93 164-118-54q-16 13-36.5 25.5T592-206L572-80H388Zm48-60h88l14-112q33-8 62.5-25t53.5-41l106 46 40-72-94-69q4-17 6.5-33.5T715-480q0-17-2-33.5t-7-33.5l94-69-40-72-106 46q-23-26-52-43.5T538-708l-14-112h-88l-14 112q-34 7-63.5 24T306-642l-106-46-40 72 94 69q-4 17-6.5 33.5T245-480q0 17 2.5 33.5T254-413l-94 69 40 72 106-46q24 24 53.5 41t62.5 25l14 112Zm44-210q54 0 92-38t38-92q0-54-38-92t-92-38q-54 0-92 38t-38 92q0 54 38 92t92 38Zm0-130Z" fill="#000000"/></svg>
\ No newline at end of file
......@@ -31,7 +31,7 @@ const ifLoggedInReset = () => {
</script>
<template>
<div class="footer-wrapper" style="background-color: #3B71CA">
<div class="footer footer-wrapper fixed-bottom" style="background-color: #3B71CA">
<div class="links-wrapper">
<p class="links-header">Links</p>
......
......@@ -2,10 +2,14 @@
<div>
<footer id = "footer" class="text-center text-white" style="width: 100%">
<div class="text-center p-3">
© 2024 Copyright: Anders Høvik, Andreas Svendsrud, Henrik Dybdal, Henrik Sandok, Jens Aanestad, Victor Kaste, Viktor Grevskott
© SpareSti 2024
</div>
</footer>
</div>
</template>
<style scoped> #footer {background-color: #0A58CA;}</style>
<style scoped>
#footer {
background-color: #003A58;
}
</style>
\ No newline at end of file
......@@ -3,7 +3,7 @@
<div class="container-fluid">
<router-link class="navbar-brand" id="home" :to="toSavingGoals()">
<img id="logoImg" src="/src/assets/Sparesti-logo.png" alt="Sparesti-logo" width="60">
<span id="logo" class="text-white">Sparesti</span>
<span id="logo" class="text-white">SpareSti</span>
</router-link>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse"
data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false"
......@@ -20,7 +20,7 @@
<li class="nav-item">
<router-link data-cy="leaderboard" class="nav-link text-white"
:to="toLeaderboard()"><img
src="@/assets/icons/leaderboard.svg">Leaderboard</router-link>
src="@/assets/icons/leaderboard.svg">Ledertavle</router-link>
</li>
<li class="nav-item">
<router-link data-cy="news" class="nav-link text-white" :to="toNews()"><img
......@@ -31,65 +31,65 @@
src="@/assets/icons/storefront.svg">Butikk</router-link>
</li>
<li class="nav-item dropdown">
<a data-mdb-dropdown-init class=" nav-link me-3 dropdown-toggle hidden-arrow notification" href="#" id="navbarDropdownMenuLink"
<a data-mdb-dropdown-init class=" nav-link dropdown-toggle hidden-arrow notification" href="#" id="navbarDropdownMenuLink"
role="button" data-bs-toggle="dropdown" aria-expanded="false">
<i class="fas fa-bell text-white"></i>
<span class="badge rounded-pill badge-notification bg-danger">{{counter}}</span>
<img src="/src/assets/icons/bell-white.svg">
<span v-if="counter > 0" class="badge rounded-pill badge-notification bg-danger">{{counter}}</span>
</a>
<ul class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink">
<ul v-if="counter > 0" class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink">
<li v-for="(array,key) in notifMap" :key="key" >
<div class="d-flex align-items-center">
<div v-if="array[1][0] === '1'" class="flex-shrink-0">
<img src="/src/assets/icons/medal.png" alt="Varslingsikon" class="notification-icon" style="height: 20px; width: 20px">
<img src="/src/assets/icons/medal.png" alt="Varslingsikon" class="notification-icon">
</div>
<div v-if="array[1][0] === '2'" class="flex-shrink-0">
<img src="/src/assets/userprofile.png" alt="Varslingsikon" class="notification-icon" style="height: 20px; width: 20px">
<img src="/src/assets/userprofile.png" alt="Varslingsikon" class="notification-icon">
</div>
<div v-if="array[1][0] === '3'" class="flex-shrink-0">
<img src="/src/assets/icons/piggybank.svg" alt="Varslingsikon" class="notification-icon" style="height: 20px; width: 20px">
<img src="/src/assets/icons/piggybank.svg" alt="Varslingsikon" class="notification-icon">
</div>
<div class="flex-grow-1 ms-3">
<router-link class="not-item dropdown-item text-white" :to="getPath(array[1][0])">{{array[1][1]}}</router-link>
<router-link class="not-item dropdown-item" :to="getPath(array[1][0])">{{array[1][1]}}</router-link>
</div>
</div>
</li>
</ul>
<ul v-else class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink">
<li>Ingen varslinger</li>
</ul>
</li>
<li v-if="userStore.isLoggedIn" class="nav-item dropdown">
<a data-cy="user"
class="nav-link dropdown-toggle username-text text-white "
href="#" role="button"
data-bs-toggle="dropdown" aria-expanded="false">
<img :src="useUserInfoStore().profileImage ? 'http://localhost:8080/api/images/' + useUserInfoStore().profileImage : 'src/assets/userprofile.png'"
style="width: 50px; border: 2px solid black; border-radius: 50%">{{
useUserInfoStore().firstname }}
<img src="@/assets/icons/person.svg">{{useUserInfoStore().firstname }}
</a>
<ul class="dropdown-menu dropdown-username-content">
<li><router-link data-cy="profile"
class="dropdown-item text-white dropdown-username-link" :to="toUserProfile()"><img
src="@/assets/icons/person.svg">Brukerprofil</router-link></li>
class="dropdown-item dropdown-username-link" :to="toUserProfile()"><img
src="@/assets/icons/black_person.svg">Min profil</router-link></li>
<li v-if="useUserInfoStore().isPremium"><router-link data-cy="budget"
class="dropdown-item text-white dropdown-username-link" :to="toBudget()"><img>Budjsett</router-link></li>
class="dropdown-item dropdown-username-link" :to="toBudget()"><img
src="@/assets/icons/budget.svg">Budjsett</router-link></li>
<li><router-link data-cy="friends"
class="dropdown-item text-white dropdown-username-link" :to="toFriends()"><img
src="@/assets/icons/friends.svg">Venner</router-link></li>
class="dropdown-item dropdown-username-link" :to="toFriends()"><img
src="@/assets/icons/black_friends.svg">Venner</router-link></li>
<li><router-link data-cy="settings"
class="dropdown-item text-white dropdown-username-link" :to="toSetting()"><img
class="dropdown-item dropdown-username-link" :to="toSetting()"><img
src="@/assets/icons/settings.svg">Innstillinger</router-link></li>
<li><router-link data-cy="feedback"
class="dropdown-item text-white dropdown-username-link" :to="toFeedback()"><img
class="dropdown-item dropdown-username-link" :to="toFeedback()"><img
src="@/assets/icons/feedback.svg">Tilbakemelding</router-link></li>
<li><router-link data-cy="admin"
class="dropdown-item text-white dropdown-username-link" :to="toSetting()"><img
class="dropdown-item dropdown-username-link" :to="toSetting()"><img
src="@/assets/icons/admin.svg">Admin</router-link></li>
<li><a data-testid="logout" class="dropdown-item text-white dropdown-username-link" ref="#" @click="toLogout()"><img
<li style="cursor: pointer"><a data-testid="logout" class="dropdown-item dropdown-username-link" ref="#" @click="toLogout()"><img
src="@/assets/icons/logout.svg">Logg ut</a></li>
</ul>
</li>
<li v-else class="nav-item">
<a class="nav-link text-white" href="#" @click="toLogout">Logg inn</a>
<a class="nav-link" style="cursor: pointer;" href="#" @click="toLogout">Logg inn</a>
</li>
</ul>
</div>
......@@ -235,15 +235,20 @@ onMounted(() => {
}
.nav-item {
padding: 0.3rem 0.6rem;
display: flex;
justify-content: center;
align-items: center;
padding: 0.1rem 0.3rem;
font-size: 1.7rem;
}
.nav-item:hover {
background-color: #2b6ac7;
background-color: #01476b;
border-radius: 1rem;
}
.not-item:hover {
background-color: #2b6ac7;
background-color: #f3f3f3;
}
.nav-item .dropdown {
......@@ -255,27 +260,22 @@ onMounted(() => {
display: flex;
align-items: center;
justify-content: center;
}
.dropdown-item {
width: 100%;
display: flex;
justify-content: center;
}
.dropdown-menu {
background-color: #0A58CA;
right: -0.5rem;
justify-content: left;
}
#notifyBtn {
background-color: #0A58CA;
border: #0A58CA;
.dropdown-item:hover {
width: 100%;
}
#notifyBtn:hover {
background-color: #2b6ac7;
border: #2b6ac7;
.dropdown-menu {
padding: 5px;
right: -0.5rem;
}
.dropdown-menu[data-bs-popper] {
......@@ -289,11 +289,26 @@ onMounted(() => {
}
.dropdown-username-link:hover {
background-color: #2b6ac7;
background-color: #f3f3f3;
}
.dropdown-item img {
height: 35px;
width: 35px;
margin-right: 5px;
}
#navBar {
background-color: #0A58CA;
background-color: #003A58;
}
.notification-icon {
height: 35px;
width: 35px;
}
.nav-item a {
font-size: 19px;
}
.navbar {
......@@ -312,6 +327,8 @@ onMounted(() => {
.nav-link img {
margin-right: 5px;
height: 35px;
width: 35px;
}
#logoImg {
......@@ -320,6 +337,7 @@ onMounted(() => {
height: auto;
aspect-ratio: 1.3/1;
}
.notification.hidden-arrow::after{
display: none;
}
......
import { describe, it, expect } from 'vitest'
import { mount } from '@vue/test-utils'
import FooterComponent from '@/components/BaseComponents/Footer.vue'
import FooterComponent from '../FooterComponent.vue'
describe('FooterComponent', () => {
it('renders properly and includes the correct copyright notice', () => {
const wrapper = mount(FooterComponent)
const footer = wrapper.find('#footer')
expect(footer.exists()).toBe(true)
expect(footer.text()).toContain('© 2024 Copyright: Anders Høvik, Andreas Svendsrud, Henrik Dybdal, Henrik Sandok, Jens Aanestad, Victor Kaste, Viktor Grevskott')
expect(footer.text()).toContain('© SpareSti 2024')
})
})
......@@ -3,7 +3,7 @@ import { mount } from '@vue/test-utils';
import { createRouter, createMemoryHistory } from 'vue-router';
import { createPinia, setActivePinia } from 'pinia';
import { useUserInfoStore } from '@/stores/UserStore';
import MyComponent from '@/components/BaseComponents/Menu.vue'; // Adjust path as needed
import MyComponent from '../MenuComponent.vue'; // Adjust path as needed
import router from '@/router/index'; // Adjust path as needed
import { access } from 'fs';
import { render, screen } from '@testing-library/vue';
......
<script setup lang="ts">
import Footer from '@/components/BaseComponents/Footer.vue'
import Menu from '@/components/BaseComponents/Menu.vue'
import Footer from '@/components/BaseComponents/FooterComponent.vue'
import Menu from '@/components/BaseComponents/MenuComponent.vue'
import Login from '@/components/Login/Login.vue'
</script>
......
<script setup lang="ts">
import { RouterView } from 'vue-router'
import Footer from '@/components/BaseComponents/Footer.vue'
import Menu from '@/components/BaseComponents/Menu.vue'
import FooterAlternative from "@/components/BaseComponents/FooterAlternative.vue";
import Footer from '@/components/BaseComponents/FooterComponent.vue'
import Menu from '@/components/BaseComponents/MenuComponent.vue'
import { useUserInfoStore } from '@/stores/UserStore';
</script>
......@@ -11,11 +10,17 @@ import { useUserInfoStore } from '@/stores/UserStore';
<div v-if="!useUserInfoStore().isPremium && !useUserInfoStore().isNoAds" style="display: flex; flex-direction: row;">
<img v-for="item in 7" src="@/assets/coca.webp" style="width: 100%; height: 100px; margin: 5px; border-radius: 1rem;" alt="picture">
</div>
<div>
<div id="minHeight">
<RouterView />
</div>
<div v-if="!useUserInfoStore().isPremium && !useUserInfoStore().isNoAds" style="display: flex; flex-direction: row;">
<img v-for="item in 7" src="@/assets/coca.webp" style="width: 100%; height: 100px; margin: 5px; border-radius: 1rem;" alt="picture">
</div>
<FooterAlternative></FooterAlternative>
</template>
\ No newline at end of file
<Footer></Footer>
</template>
<style scoped>
#minHeight {
min-height: 700px;
}
</style>
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment