First commit
This commit is contained in:
40
views/index.ejs
Normal file
40
views/index.ejs
Normal file
@@ -0,0 +1,40 @@
|
||||
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Socket.IO chat</title>
|
||||
<style>
|
||||
* { margin: 0; padding: 0; box-sizing: border-box; }
|
||||
body { font: 13px Helvetica, Arial; }
|
||||
form { background: #000; padding: 3px; position: fixed; bottom: 0; width: 100%; }
|
||||
form input { border: 0; padding: 10px; width: 90%; margin-right: .5%; }
|
||||
form button { width: 9%; background: rgb(130, 224, 255); border: none; padding: 10px; }
|
||||
#messages { list-style-type: none; margin: 0; padding: 0; }
|
||||
#messages li { padding: 5px 10px; }
|
||||
#messages li:nth-child(odd) { background: #eee; }
|
||||
#messages { margin-bottom: 40px }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<ul id="messages"></ul>
|
||||
<form action="">
|
||||
<input id="m" autocomplete="off" /><button>Send</button>
|
||||
</form>
|
||||
<script src="https://cdn.socket.io/socket.io-1.2.0.js"></script>
|
||||
<script src="https://code.jquery.com/jquery-1.11.1.js"></script>
|
||||
<script>
|
||||
$(function () {
|
||||
var socket = io();
|
||||
$('form').submit(function(){
|
||||
socket.emit('chat message', $('#m').val());
|
||||
$('#m').val('');
|
||||
return false;
|
||||
});
|
||||
socket.on('chat message', function(msg){
|
||||
$('#messages').append($('<li>').html(msg));
|
||||
window.scrollTo(0, document.body.scrollHeight);
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
142
views/login.ejs
Normal file
142
views/login.ejs
Normal file
@@ -0,0 +1,142 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
|
||||
<script>
|
||||
$('.message a').click(function(){
|
||||
$('form').animate({height: "toggle", opacity: "toggle"}, "slow");
|
||||
});
|
||||
$(function(){
|
||||
$( "input[name='repassword']" ).on('input', function(){
|
||||
if($( "input[name='password']" ).val() != $( "input[name='repassword']" ).val())
|
||||
$( "input[name='repassword']" ).css('color', 'red');
|
||||
else
|
||||
$( "input[name='repassword']" ).css('color', '');
|
||||
})
|
||||
});
|
||||
</script>
|
||||
<style>
|
||||
@import url(https://fonts.googleapis.com/css?family=Roboto:300);
|
||||
|
||||
.login-page {
|
||||
width: 360px;
|
||||
padding: 8% 0 0;
|
||||
margin: auto;
|
||||
}
|
||||
.form {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
background: #FFFFFF;
|
||||
max-width: 360px;
|
||||
margin: 0 auto 100px;
|
||||
padding: 45px;
|
||||
text-align: center;
|
||||
box-shadow: 0 0 20px 0 rgba(0, 0, 0, 0.2), 0 5px 5px 0 rgba(0, 0, 0, 0.24);
|
||||
}
|
||||
.form input {
|
||||
font-family: "Roboto", sans-serif;
|
||||
outline: 0;
|
||||
background: #f2f2f2;
|
||||
width: 100%;
|
||||
border: 0;
|
||||
margin: 0 0 15px;
|
||||
padding: 15px;
|
||||
box-sizing: border-box;
|
||||
font-size: 14px;
|
||||
}
|
||||
.form button {
|
||||
font-family: "Roboto", sans-serif;
|
||||
text-transform: uppercase;
|
||||
outline: 0;
|
||||
background: rgb(106, 27, 154);
|
||||
width: 100%;
|
||||
border: 0;
|
||||
padding: 15px;
|
||||
color: #FFFFFF;
|
||||
font-size: 14px;
|
||||
-webkit-transition: all 0.3 ease;
|
||||
transition: all 0.3 ease;
|
||||
cursor: pointer;
|
||||
}
|
||||
.form button:hover,.form button:active,.form button:focus {
|
||||
background: rgb(128, 31, 187);
|
||||
}
|
||||
.form .message {
|
||||
margin: 15px 0 0;
|
||||
color: #b3b3b3;
|
||||
font-size: 12px;
|
||||
}
|
||||
.form .message a {
|
||||
color: #a525ee;
|
||||
text-decoration: none;
|
||||
}
|
||||
.form .register-form {
|
||||
display: none;
|
||||
}
|
||||
.container {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
max-width: 300px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
.container:before, .container:after {
|
||||
content: "";
|
||||
display: block;
|
||||
clear: both;
|
||||
}
|
||||
.container .info {
|
||||
margin: 50px auto;
|
||||
text-align: center;
|
||||
}
|
||||
.container .info h1 {
|
||||
margin: 0 0 15px;
|
||||
padding: 0;
|
||||
font-size: 36px;
|
||||
font-weight: 300;
|
||||
color: #1a1a1a;
|
||||
}
|
||||
.container .info span {
|
||||
color: #4d4d4d;
|
||||
font-size: 12px;
|
||||
}
|
||||
.container .info span a {
|
||||
color: #000000;
|
||||
text-decoration: none;
|
||||
}
|
||||
.container .info span .fa {
|
||||
color: #EF3B3A;
|
||||
}
|
||||
body {
|
||||
background: #8F20CF; /* fallback for old browsers */
|
||||
background: -webkit-linear-gradient(right, #8F20CF, #a525ee);
|
||||
background: -moz-linear-gradient(right, #8F20CF, #a525ee);
|
||||
background: -o-linear-gradient(right, #8F20CF, #a525ee);
|
||||
background: linear-gradient(to left, #8F20CF, #a525ee);
|
||||
font-family: "Roboto", sans-serif;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
</style>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<div class="login-page">
|
||||
<div class="form">
|
||||
<form class="register-form" action="/register" method="post">
|
||||
<input type="text" placeholder="name" name="username"/>
|
||||
<input type="password" placeholder="password" name="password"/>
|
||||
<input type="password" placeholder="repassword" name="repassword" class="repassword"/>
|
||||
<button>create</button>
|
||||
<p class="message">Already registered? <a href="#" onclick="$('.login-form').show();$('.register-form').hide();">Sign In</a></p>
|
||||
</form>
|
||||
<form class="login-form" action="/login" method="post">
|
||||
<input type="text" placeholder="username" name="username"/>
|
||||
<input type="password" placeholder="password" name="password"/>
|
||||
<button>login</button>
|
||||
<p class="message">Not registered? <a href="#" onclick="$('.login-form').hide();$('.register-form').show();">Create an account</a></p>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user