Revize 60bada5b
Přidáno uživatelem Pavel Fidranský před více než 6 roky(ů)
sources/src/main/webapp/css/main.css | ||
---|---|---|
88 | 88 |
|
89 | 89 |
/* login and register links */ |
90 | 90 |
|
91 |
.header .login_box { |
|
92 |
float: right; |
|
91 |
.header .user-menu { |
|
93 | 92 |
position: absolute; |
94 |
right: 25px; |
|
95 |
top: 0px; |
|
96 |
font-weight: bold; |
|
93 |
right: 0; |
|
94 |
top: 0; |
|
95 |
padding-left: 25px; |
|
96 |
padding-right: 25px; |
|
97 |
line-height: 60px; |
|
97 | 98 |
} |
98 | 99 |
|
99 |
.header .login_box a {
|
|
100 |
.header .user-menu .button {
|
|
100 | 101 |
color: #0B548A; |
101 | 102 |
font-size: 14px; |
102 |
}
|
|
103 |
|
|
104 |
.header .login_box a:hover {
|
|
105 |
text-decoration: none;
|
|
103 |
font-weight: bold;
|
|
104 |
background: none; |
|
105 |
border: none;
|
|
106 |
cursor: pointer;
|
|
106 | 107 |
} |
107 | 108 |
|
108 | 109 |
/* login popup */ |
sources/src/main/webapp/js/userMenu.js | ||
---|---|---|
1 | 1 |
document.addEventListener('DOMContentLoaded', function() { |
2 | 2 |
var toggleLoginPopupButton = document.getElementById('toggleLoginPopupButton'); |
3 |
var loginPopup = document.getElementById('loginPopup'); |
|
4 |
|
|
5 | 3 |
var toggleRegisterPopupButton = document.getElementById('toggleRegisterPopupButton'); |
4 |
var logoutButton = document.getElementById('logoutButton'); |
|
5 |
|
|
6 |
var loginPopup = document.getElementById('loginPopup'); |
|
6 | 7 |
var registerPopup = document.getElementById('registerPopup'); |
7 | 8 |
|
9 |
var loginForm = document.forms['loginForm']; |
|
10 |
var registerForm = document.forms['registerForm']; |
|
11 |
|
|
8 | 12 |
if (toggleLoginPopupButton) { |
9 | 13 |
toggleLoginPopupButton.addEventListener('click', function() { |
10 | 14 |
loginPopup.classList.toggle('hidden'); |
... | ... | |
16 | 20 |
registerPopup.classList.toggle('hidden'); |
17 | 21 |
}); |
18 | 22 |
} |
23 |
|
|
24 |
if (logoutButton) { |
|
25 |
logoutButton.addEventListener('click', function(e) { |
|
26 |
e.preventDefault(); |
|
27 |
|
|
28 |
$.ajax({ |
|
29 |
'type': 'GET', |
|
30 |
'url': logoutButton.href, |
|
31 |
'success': function() { |
|
32 |
location.reload(true); |
|
33 |
}, |
|
34 |
'error': function() { |
|
35 |
alert('Something went wrong.'); |
|
36 |
}, |
|
37 |
}); |
|
38 |
}); |
|
39 |
} |
|
40 |
|
|
41 |
if (loginForm) { |
|
42 |
loginForm.addEventListener('submit', function(e) { |
|
43 |
e.preventDefault(); |
|
44 |
|
|
45 |
$.ajax({ |
|
46 |
'type': loginForm.method, |
|
47 |
'url': loginForm.action, |
|
48 |
'data': { |
|
49 |
'username': loginForm.username.value, |
|
50 |
'password': loginForm.password.value, |
|
51 |
}, |
|
52 |
'success': function() { |
|
53 |
location.reload(true); |
|
54 |
}, |
|
55 |
'error': function(xhr) { |
|
56 |
switch (xhr.status) { |
|
57 |
case 400: |
|
58 |
printErrors(xhr); |
|
59 |
break; |
|
60 |
case 401: |
|
61 |
alert('Invalid credentials.'); |
|
62 |
break; |
|
63 |
default: |
|
64 |
alert('Something went wrong.'); |
|
65 |
} |
|
66 |
}, |
|
67 |
}); |
|
68 |
}); |
|
69 |
} |
|
70 |
|
|
71 |
if (registerForm) { |
|
72 |
registerForm.addEventListener('submit', function(e) { |
|
73 |
e.preventDefault(); |
|
74 |
|
|
75 |
$.ajax({ |
|
76 |
'type': registerForm.method, |
|
77 |
'url': registerForm.action, |
|
78 |
'data': { |
|
79 |
'name': registerForm.name.value, |
|
80 |
'email': registerForm.email.value, |
|
81 |
'username': registerForm.username.value, |
|
82 |
'password': registerForm.password.value, |
|
83 |
'passwordCheck': registerForm.passwordCheck.value, |
|
84 |
}, |
|
85 |
'success': function() { |
|
86 |
location.reload(true); |
|
87 |
}, |
|
88 |
'error': function(xhr) { |
|
89 |
switch (xhr.status) { |
|
90 |
case 400: |
|
91 |
printErrors(xhr); |
|
92 |
break; |
|
93 |
default: |
|
94 |
alert('Something went wrong.'); |
|
95 |
} |
|
96 |
}, |
|
97 |
}); |
|
98 |
}); |
|
99 |
} |
|
19 | 100 |
}); |
101 |
|
|
102 |
function printErrors(xhr) { |
|
103 |
var data = JSON.parse(xhr.responseText); |
|
104 |
|
|
105 |
for (var key in data.error) { |
|
106 |
if (!data.error.hasOwnProperty(key)) continue; |
|
107 |
|
|
108 |
alert(data.error[key]); |
|
109 |
} |
|
110 |
} |
sources/src/main/webapp/logged_user_menu.jsp | ||
---|---|---|
1 |
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> |
|
2 |
|
|
3 |
<div id="logged_user_menu"> |
|
4 |
<% if (request.getSession().getAttribute("logged_user") == "1") { %> |
|
5 |
<h3 style="margin-top: 25px;">My diagrams</h3> |
|
6 |
|
|
7 |
<ul> |
|
8 |
<c:forEach items="${diagramNames}" var="diagramName"> |
|
9 |
<li id="diagram_id_${diagramName.id}"> |
|
10 |
<a href="/graph?diagramId=${diagramName.id}">${diagramName.name}</a><a href="#" onclick="return deleteDiagram(${diagramName.id});"><img src="images/button_cancel.png" alt="odstranit" class="imgDelete"/></a> |
|
11 |
</li> |
|
12 |
</c:forEach> |
|
13 |
</ul> |
|
14 |
<% } %> |
|
15 |
|
|
16 |
<h3 style="margin-top: 25px;">Public diagrams</h3> |
|
17 |
|
|
18 |
<ul> |
|
19 |
<c:forEach items="${diagramPublic}" var="diagramPublic"> |
|
20 |
<li id="public_diagram_id_${diagramPublic.id}"> |
|
21 |
<a href="/graph?diagramId=${diagramPublic.id}">${diagramPublic.name}</a> |
|
22 |
</li> |
|
23 |
</c:forEach> |
|
24 |
</ul> |
|
25 |
</div> |
sources/src/main/webapp/showGraph.jsp | ||
---|---|---|
49 | 49 |
<script src="js/utils/utils.js"></script> |
50 | 50 |
<script src="js/zoom.js"></script> |
51 | 51 |
<script src="js/app.js"></script> |
52 |
<script src="js/userMenu.js"></script> |
|
52 | 53 |
|
53 | 54 |
<title>IMiGEr</title> |
54 | 55 |
</head> |
sources/src/main/webapp/userMenu.jsp | ||
---|---|---|
1 | 1 |
<c:if test="${isLoggedIn}"> |
2 |
<div class="login_box">
|
|
3 |
${user.username} <a href="api/log-out" id="logoutButton">Log out</a> |
|
2 |
<div class="user-menu">
|
|
3 |
${user.username} <a href="api/log-out" class="button" id="logoutButton">Log out</a>
|
|
4 | 4 |
</div> |
5 | 5 |
</c:if> |
6 | 6 |
|
7 | 7 |
<c:if test="${!isLoggedIn}"> |
8 |
<div class="login_box">
|
|
9 |
<button id="toggleLoginPopupButton">Log in</a> |
|
10 |
<button id="toggleRegisterPopupButton">Register</a> |
|
8 |
<div class="user-menu">
|
|
9 |
<button class="button" id="toggleLoginPopupButton">Log in</a>
|
|
10 |
<button class="button" id="toggleRegisterPopupButton">Register</a>
|
|
11 | 11 |
</div> |
12 | 12 |
</c:if> |
13 | 13 |
|
... | ... | |
35 | 35 |
<tr> |
36 | 36 |
<td></td> |
37 | 37 |
<td> |
38 |
<button type="submit">Login</button> |
|
38 |
<button type="submit" class="button">Login</button>
|
|
39 | 39 |
</td> |
40 | 40 |
</tr> |
41 | 41 |
</table> |
... | ... | |
50 | 50 |
Name: |
51 | 51 |
</td> |
52 | 52 |
<td> |
53 |
<input type="text" name="user_name" id="user_name">
|
|
53 |
<input type="text" name="name"> |
|
54 | 54 |
</td> |
55 | 55 |
</tr> |
56 | 56 |
<tr> |
... | ... | |
58 | 58 |
E-mail: |
59 | 59 |
</td> |
60 | 60 |
<td> |
61 |
<input type="text" name="user_email" id="user_email">
|
|
61 |
<input type="text" name="email"> |
|
62 | 62 |
</td> |
63 | 63 |
</tr> |
64 | 64 |
<tr> |
... | ... | |
66 | 66 |
Login name: |
67 | 67 |
</td> |
68 | 68 |
<td> |
69 |
<input type="text" name="user_nick" id="user_nick">
|
|
69 |
<input type="text" name="username">
|
|
70 | 70 |
</td> |
71 | 71 |
</tr> |
72 | 72 |
<tr> |
... | ... | |
74 | 74 |
Password: |
75 | 75 |
</td> |
76 | 76 |
<td> |
77 |
<input type="password" name="user_password" id="user_password">
|
|
77 |
<input type="password" name="password"> |
|
78 | 78 |
</td> |
79 | 79 |
</tr> |
80 | 80 |
<tr> |
... | ... | |
82 | 82 |
Password again: |
83 | 83 |
</td> |
84 | 84 |
<td> |
85 |
<input type="password" name="user_password_2" id="user_password_2">
|
|
85 |
<input type="password" name="passwordCheck">
|
|
86 | 86 |
</td> |
87 | 87 |
</tr> |
88 | 88 |
<tr> |
89 | 89 |
<td></td> |
90 | 90 |
<td> |
91 |
<button type="submit">Register</button> |
|
91 |
<button type="submit" class="button">Register</button>
|
|
92 | 92 |
</td> |
93 | 93 |
</tr> |
94 | 94 |
</table> |
Také k dispozici: Unified diff
fully working frontend User menu