forked from lbsadmin/nodeMessageBoard
Compare commits
6 Commits
deintegrat
...
master
Author | SHA1 | Date | |
---|---|---|---|
fd183a7d4f | |||
de0480b859 | |||
236cae183a | |||
d131979c5d | |||
9c0c30c5c2 | |||
462b2a0f9e |
5
app.js
5
app.js
@ -2,15 +2,16 @@ var server = require("./server");
|
||||
var router = require("./route");
|
||||
var requestHandlers = require("./requestHandlers");
|
||||
|
||||
var debug = false; // todo move this to configfile
|
||||
var debug = server.debugMode();
|
||||
|
||||
var handle = {}
|
||||
handle["/"] = requestHandlers.sendInterface;
|
||||
handle["/interface"] = requestHandlers.sendInterface;
|
||||
handle["/sprite/emoji.css"] = requestHandlers.sendEmojiCss;
|
||||
handle["/sprite/emoji.png"] = requestHandlers.sendEmojiPng;
|
||||
handle["/js/jquery-1.12.1.min"] = requestHandlers.sendJquery;
|
||||
handle["/js/jquery-ui.js"] = requestHandlers.sendJqueryUI;
|
||||
handle["/css/bootstrap.min.css"] = requestHandlers.sendBootstrap;
|
||||
handle["/sprite/emoji.ttf"] = requestHandlers.sendEmojiTtf;
|
||||
|
||||
handle["/clear"] = requestHandlers.sendClear;
|
||||
if(server.demoMode()){
|
||||
|
285
board.html
285
board.html
@ -1,179 +1,144 @@
|
||||
<!DOCTYPE html>
|
||||
<meta charset="UTF-8">
|
||||
<html>
|
||||
<head>
|
||||
|
||||
<title>SMS Board</title>
|
||||
<link rel='stylesheet' href='sprite/emoji.css' >
|
||||
<link rel="stylesheet" href="/css/bootstrap.min.css" />
|
||||
<script src="/js/jquery-1.12.1.min"></script>
|
||||
<script src="/js/jquery-ui.js"></script>
|
||||
<script src="/socket.io/socket.io.js">
|
||||
</script>
|
||||
<style>
|
||||
/* Sticky footer styles
|
||||
-------------------------------------------------- */
|
||||
@import url('https://fonts.googleapis.com/css?family=Noto+Sans');
|
||||
|
||||
@font-face {
|
||||
font-family: 'Emoji';
|
||||
src: url('/sprite/emoji.ttf') format('truetype');
|
||||
}
|
||||
|
||||
html,
|
||||
body {
|
||||
height: 100%;
|
||||
font-family: 'Noto Sans', sans-serif;
|
||||
/* The html and body elements cannot have any padding or margin. */
|
||||
}
|
||||
|
||||
/* Wrapper for page content to push down footer */
|
||||
#wrap {
|
||||
min-height: 100%;
|
||||
height: auto;
|
||||
/* Negative indent footer by its height */
|
||||
margin: 0 auto -60px;
|
||||
/* Pad bottom by footer height */
|
||||
padding: 0 0 60px;
|
||||
}
|
||||
|
||||
/* Set the fixed height of the footer here */
|
||||
#footer {
|
||||
height: 100px;
|
||||
position: fixed;
|
||||
bottom: 0;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-family: 'Emoji', 'Noto Sans', sans-serif;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
<script>
|
||||
const toDisplay = 4; //define the number of messages to show
|
||||
var iosocket;
|
||||
var currentMessageCount = 0;
|
||||
var newDiv;
|
||||
var mynumber;
|
||||
|
||||
function getColor(num){
|
||||
switch(num){
|
||||
case 0:
|
||||
return "#428bca"; //blue
|
||||
break;
|
||||
case 1:
|
||||
return "#5cb85c"; //green
|
||||
break;
|
||||
case 2:
|
||||
return "#5bc0de"; //lightblue
|
||||
break;
|
||||
case 3:
|
||||
return "#f0ad4e"; //orange
|
||||
break;
|
||||
case 4:
|
||||
return "#d9534f"; //red
|
||||
break;
|
||||
<meta charset="UTF-8">
|
||||
<title>SMS Board</title>
|
||||
<link rel='stylesheet' href='sprite/emoji.css' >
|
||||
<link rel="stylesheet" href="/css/bootstrap.min.css" />
|
||||
<script src="/js/jquery-1.12.1.min"></script>
|
||||
<script src="/js/jquery-ui.js"></script>
|
||||
<script src="/socket.io/socket.io.js"></script>
|
||||
<style>
|
||||
/* Sticky footer styles
|
||||
-------------------------------------------------- */
|
||||
html, body {
|
||||
height: 100%;
|
||||
/* The html and body elements cannot have any padding or margin. */
|
||||
}
|
||||
}
|
||||
/* Wrapper for page content to push down footer */
|
||||
#wrap {
|
||||
min-height: 100%;
|
||||
height: auto;
|
||||
/* Negative indent footer by its height */
|
||||
margin: 0 auto -60px;
|
||||
/* Pad bottom by footer height */
|
||||
padding: 0 0 60px;
|
||||
}
|
||||
/* Set the fixed height of the footer here */
|
||||
#footer {
|
||||
height: 100px;
|
||||
position: fixed;
|
||||
bottom: 0;
|
||||
width: 100%;
|
||||
}
|
||||
</style>
|
||||
<script>
|
||||
const toDisplay = 4; //define the number of messages to show
|
||||
var iosocket;
|
||||
var currentMessageCount = 0;
|
||||
var newDiv;
|
||||
var mynumber;
|
||||
|
||||
function getColor(num){
|
||||
switch(num){
|
||||
case 0:
|
||||
return "#428bca"; //blue
|
||||
break;
|
||||
case 1:
|
||||
return "#5cb85c"; //green
|
||||
break;
|
||||
case 2:
|
||||
return "#5bc0de"; //lightblue
|
||||
break;
|
||||
case 3:
|
||||
return "#f0ad4e"; //orange
|
||||
break;
|
||||
case 4:
|
||||
return "#d9534f"; //red
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
function initSocketIO()
|
||||
{
|
||||
iosocket = io.connect();
|
||||
function initSocketIO() {
|
||||
iosocket = io.connect();
|
||||
iosocket.on('clientrefresh', function() {
|
||||
location.reload();
|
||||
});
|
||||
|
||||
iosocket.on('clientrefresh', function() {
|
||||
location.reload();
|
||||
});
|
||||
iosocket.on('connect', function() {
|
||||
iosocket.on('debugMessage', function(message) {
|
||||
alert(message);
|
||||
});
|
||||
|
||||
iosocket.on('connect', function() {
|
||||
iosocket.on('config', function(phonenumber) {
|
||||
mynumber = phonenumber;
|
||||
$( "span.number" ).html(mynumber);
|
||||
});
|
||||
|
||||
iosocket.on('newMessage', function(time,number,message,color) {
|
||||
var censoredNumber = number.substring(0,3) + "********" +number.substring(number.length - 3, number.length);
|
||||
var messages = document.getElementById('messagesBody');
|
||||
var newDiv = document.createElement('div');
|
||||
var newH1 = document.createElement('h1');
|
||||
var newP = document.createElement('p');
|
||||
|
||||
newH1.innerHTML = message;
|
||||
newP.innerHTML = "by " + censoredNumber + " at " + time;
|
||||
newDiv.style.backgroundColor = getColor(color); //need this on both for some browsers (especially safari) to recognize...
|
||||
newDiv.style = "background-color:" + getColor(color) + " !important; padding:10px 0; margin:10px 0;";
|
||||
newDiv.className = "jumbotron";
|
||||
newDiv.appendChild(newH1);
|
||||
newDiv.appendChild(newP);
|
||||
currentMessageCount++;
|
||||
|
||||
iosocket.on('debugMessage', function(message) {
|
||||
alert(message);
|
||||
});
|
||||
if(currentMessageCount > toDisplay) {
|
||||
//Remove the top div
|
||||
$('#messagesBody').find('div').first().slideUp(function() {
|
||||
$(this).remove();
|
||||
document.getElementById('messagesBody').appendChild(newDiv);
|
||||
});
|
||||
currentMessageCount--;
|
||||
} else {
|
||||
document.getElementById('messagesBody').appendChild(newDiv);
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
iosocket.on('config', function(phonenumber) {
|
||||
mynumber = phonenumber;
|
||||
$( "span.number" ).html(mynumber);
|
||||
});
|
||||
function initButton() {
|
||||
$("#check").button();
|
||||
};
|
||||
|
||||
window.onload = function() {
|
||||
initSocketIO();
|
||||
iosocket.emit('getLastMessages',toDisplay);
|
||||
iosocket.emit('getConfig');
|
||||
};
|
||||
|
||||
iosocket.on('newMessage', function(time,number,message,color) {
|
||||
var censoredNumber = number.substring(0,3) + "********" +number.substring(number.length - 3, number.length);
|
||||
var messages = document.getElementById('messagesBody');
|
||||
newDiv = document.createElement('div');
|
||||
var newH1 = document.createElement('h1');
|
||||
var newP = document.createElement('p');
|
||||
newH1.innerHTML = message;
|
||||
newP.innerHTML = "by "+censoredNumber+" at "+time;
|
||||
newDiv.style.backgroundColor = getColor(color); //need this on both for some browsers (especially safari) to recognize...
|
||||
newDiv.style="background-color:"+getColor(color)+" !important; padding:10px 0; margin:10px 0;";
|
||||
newDiv.className="jumbotron";
|
||||
newDiv.appendChild(newH1);
|
||||
newDiv.appendChild(newP);
|
||||
|
||||
currentMessageCount++;
|
||||
if(currentMessageCount > toDisplay)
|
||||
{
|
||||
//Remove the top div
|
||||
$('#messagesBody').find('div').first().slideUp(function() {
|
||||
$(this).remove();
|
||||
document.getElementById('messagesBody').appendChild(newDiv);
|
||||
});
|
||||
currentMessageCount--;
|
||||
}else{
|
||||
document.getElementById('messagesBody').appendChild(newDiv);
|
||||
}
|
||||
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
function initButton()
|
||||
{
|
||||
$("#check").button();
|
||||
}
|
||||
|
||||
window.onload = function() {
|
||||
initSocketIO();
|
||||
iosocket.emit('getLastMessages',toDisplay);
|
||||
iosocket.emit('getConfig');
|
||||
};
|
||||
|
||||
|
||||
$(document).ready(function() {
|
||||
$(document).ready(function() {
|
||||
$('#check').click(function() {
|
||||
iosocket.emit('sendAT',toggleVal);
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
</script>
|
||||
iosocket.emit('sendAT',toggleVal);
|
||||
});
|
||||
});
|
||||
|
||||
</script>
|
||||
</head>
|
||||
<body style="/*background-color: #D4D4D4;*/">
|
||||
<div style="text-align:center;" >
|
||||
|
||||
<h2>Send an SMS with a message to <span class="number" style="color:#3399ff;"></span></h2>
|
||||
<div id="wrap">
|
||||
<div id="messagesBody">
|
||||
</div>
|
||||
|
||||
<br>
|
||||
<br>
|
||||
<div style="display:none;" id="btnHolder">
|
||||
<h2>Debug functions</h2>
|
||||
<input type="checkbox" id="check" value="toggle"/><label for="check">Send AT</label>
|
||||
<div id="debugOut"> </div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- <div id="footer">
|
||||
<h2>Send an SMS with a message to <span class="number" style="color:#3399ff;"></span></h2>
|
||||
</div>
|
||||
-->
|
||||
<div style="text-align:center;" >
|
||||
<h2>Send an SMS with a message to <span class="number" style="color:#3399ff;"></span></h2>
|
||||
<div id="wrap">
|
||||
<div id="messagesBody"></div>
|
||||
<br>
|
||||
<br>
|
||||
<div style="display:none;" id="btnHolder">
|
||||
<h2>Debug functions</h2>
|
||||
<input type="checkbox" id="check" value="toggle"/><label for="check">Send AT</label>
|
||||
<div id="debugOut"> </div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="footer">
|
||||
<h2 style="display: none;">Send an SMS with a message to <span class="number" style="color:#3399ff;"></span></h2>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
</html>
|
||||
|
108
clear.html
108
clear.html
@ -1,62 +1,54 @@
|
||||
<!DOCTYPE html>
|
||||
<meta charset="UTF-8">
|
||||
<html>
|
||||
<head>
|
||||
<title>Clear Board</title>
|
||||
<link rel="stylesheet" href="/css/bootstrap.min.css" />
|
||||
<script src="/js/jquery-1.12.1.min"></script>
|
||||
<script src="/js/jquery-ui.js"></script>
|
||||
<script src="/socket.io/socket.io.js"></script>
|
||||
|
||||
<script>
|
||||
var iosocket;
|
||||
|
||||
function initSocketIO()
|
||||
{
|
||||
iosocket = io.connect();
|
||||
iosocket.on('connect', function() {
|
||||
|
||||
iosocket.on('debugMessage', function(message) {
|
||||
alert(message);
|
||||
});
|
||||
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
window.onload = function() {
|
||||
initSocketIO();
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Clear Board</title>
|
||||
<link rel='stylesheet' href='sprite/emoji.css' >
|
||||
<link rel="stylesheet" href="/css/bootstrap.min.css" />
|
||||
<script src="/js/jquery-1.12.1.min"></script>
|
||||
<script src="/js/jquery-ui.js"></script>
|
||||
<script src="/socket.io/socket.io.js"></script>
|
||||
<script>
|
||||
var iosocket;
|
||||
function initSocketIO() {
|
||||
iosocket = io.connect();
|
||||
iosocket.on('connect', function() {
|
||||
iosocket.on('debugMessage', function(message) {
|
||||
alert(message);
|
||||
});
|
||||
});
|
||||
};
|
||||
window.onload = function() {
|
||||
initSocketIO();
|
||||
};
|
||||
|
||||
|
||||
$(document).ready(function() {
|
||||
$('#clear').click(function() {
|
||||
var number = $('#number').val();
|
||||
iosocket.emit('clear',number);
|
||||
alert("cleared");
|
||||
});
|
||||
$('#refresh').click(function() {
|
||||
iosocket.emit('refreshClients');
|
||||
$(document).ready(function() {
|
||||
$('#clear').click(function() {
|
||||
var number = $('#number').val();
|
||||
iosocket.emit('clear',number);
|
||||
alert("cleared");
|
||||
});
|
||||
$('#refresh').click(function() {
|
||||
iosocket.emit('refreshClients');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<div style="text-align:center;" >
|
||||
<div id="wrap">
|
||||
<div id="btnHolder">
|
||||
<h2>Functions</h2>
|
||||
<input type="number" id="number" value="1" min="1"/><label for="number">Number</label><br>
|
||||
<input type="button" id="clear" value="clear"/>
|
||||
<br>
|
||||
<input type="button" id="refresh" value="refresh"/>
|
||||
<div id="debugOut"> </div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<div style="text-align:center;" >
|
||||
<div id="wrap">
|
||||
<div id="btnHolder">
|
||||
<h2>Functions</h2>
|
||||
<input type="number" id="number" value="1" min="1"/>
|
||||
<label for="number">Number</label>
|
||||
<br>
|
||||
<input type="button" id="clear" value="clear"/>
|
||||
<br>
|
||||
<input type="button" id="refresh" value="refresh"/>
|
||||
<div id="debugOut"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
|
413
demo.html
413
demo.html
@ -1,220 +1,245 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=320, initial-scale=1">
|
||||
<title>Chat</title>
|
||||
<script src="/js/jquery-1.12.1.min"></script>
|
||||
<script src="/js/jquery-ui.js"></script>
|
||||
<script src="/socket.io/socket.io.js"></script>
|
||||
</head>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Chat</title>
|
||||
<script src="/js/jquery-1.12.1.min"></script>
|
||||
<script src="/js/jquery-ui.js"></script>
|
||||
<script src="/socket.io/socket.io.js"></script>
|
||||
<script type="text/javascript">
|
||||
var iosocket;
|
||||
|
||||
<script type="text/javascript">
|
||||
var iosocket;
|
||||
function initSocketIO() {
|
||||
iosocket = io.connect();
|
||||
|
||||
function initSocketIO()
|
||||
{
|
||||
iosocket = io.connect();
|
||||
iosocket.on('connect', function() {
|
||||
createSystemMessage('[Connected]');
|
||||
console.log("connect");
|
||||
|
||||
iosocket.on('connect', function() {
|
||||
createSystemMessage('[Connected]');
|
||||
console.log("connect");
|
||||
iosocket.on('debugMessage', function(message) {
|
||||
alert(message);
|
||||
});
|
||||
iosocket.on('disconnect', function() {
|
||||
createSystemMessage('[Disconnected]');
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
iosocket.on('debugMessage', function(message) {
|
||||
alert(message);
|
||||
});
|
||||
iosocket.on('disconnect', function() {
|
||||
createSystemMessage('[Disconnected]');
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
window.onload = function() {
|
||||
initSocketIO();
|
||||
window.onload = function() {
|
||||
initSocketIO();
|
||||
};
|
||||
|
||||
function createSystemMessage(message) {
|
||||
var message = document.createTextNode(message);
|
||||
|
||||
function createSystemMessage(message) {
|
||||
var message = document.createTextNode(message);
|
||||
var messageBox = document.createElement('p');
|
||||
messageBox.className = 'system';
|
||||
|
||||
var messageBox = document.createElement('p');
|
||||
messageBox.className = 'system';
|
||||
messageBox.appendChild(message);
|
||||
|
||||
messageBox.appendChild(message);
|
||||
var chat = document.getElementById('chat_box');
|
||||
chat.appendChild(messageBox);
|
||||
}
|
||||
|
||||
var chat = document.getElementById('chat_box');
|
||||
chat.appendChild(messageBox);
|
||||
}
|
||||
function createUserMessage(user, message) {
|
||||
var user = document.createTextNode(user + ': ');
|
||||
|
||||
function createUserMessage(user, message) {
|
||||
var user = document.createTextNode(user + ': ');
|
||||
var userBox = document.createElement('span');
|
||||
userBox.className = 'username';
|
||||
userBox.appendChild(user);
|
||||
|
||||
var userBox = document.createElement('span');
|
||||
userBox.className = 'username';
|
||||
userBox.appendChild(user);
|
||||
var message = document.createTextNode(message);
|
||||
|
||||
var message = document.createTextNode(message);
|
||||
var messageBox = document.createElement('p');
|
||||
messageBox.appendChild(userBox);
|
||||
messageBox.appendChild(message);
|
||||
|
||||
var messageBox = document.createElement('p');
|
||||
messageBox.appendChild(userBox);
|
||||
messageBox.appendChild(message);
|
||||
var chat = document.getElementById('chat_box');
|
||||
chat.appendChild(messageBox);
|
||||
}
|
||||
|
||||
var chat = document.getElementById('chat_box');
|
||||
chat.appendChild(messageBox);
|
||||
}
|
||||
function sendMessage() {
|
||||
var user = document.getElementById('user');
|
||||
var message = document.getElementById('message');
|
||||
var number = document.getElementById('number');
|
||||
var currentDate = new Date();
|
||||
var time = currentDate.toLocaleTimeString();
|
||||
var date = currentDate.getDate()+"/"+currentDate.getMonth()+"/"+currentDate.getFullYear();
|
||||
|
||||
iosocket.emit('demoMessage',number.value.toString(),date,time,message.value);
|
||||
createUserMessage(time,message.value);
|
||||
message.value = "";
|
||||
};
|
||||
|
||||
function sendMessage() {
|
||||
var user = document.getElementById('user');
|
||||
var message = document.getElementById('message');
|
||||
var number = document.getElementById('number');
|
||||
var currentDate = new Date();
|
||||
var time = currentDate.toLocaleTimeString();
|
||||
var date = currentDate.getDate()+"/"+currentDate.getMonth()+"/"+currentDate.getFullYear();
|
||||
// added a little wrapper for enter submit
|
||||
function submitEnter(e){
|
||||
if (( e.keyCode == 13 )&&(e.shiftKey === false)) {
|
||||
sendMessage();
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style type="text/css">
|
||||
@import url('https://fonts.googleapis.com/css?family=Noto+Sans');
|
||||
* {
|
||||
font-family: "Noto Sans", sans-serif;
|
||||
font-size: 24px;
|
||||
}
|
||||
|
||||
iosocket.emit('demoMessage',number.value.toString(),date,time,message.value);
|
||||
createUserMessage(time,message.value);
|
||||
message.value = "";
|
||||
};
|
||||
html, body, #wrapper {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
// added a little wrapper for enter submit
|
||||
function submitEnter(e){
|
||||
if (( e.keyCode == 13 )&&(e.shiftKey === false)) {
|
||||
sendMessage();
|
||||
}
|
||||
#wrapper {
|
||||
background-color: #ecf0f1;
|
||||
}
|
||||
|
||||
}
|
||||
#chat_box {
|
||||
box-sizing: border-box;
|
||||
height: calc(100% - 50px);
|
||||
overflow: auto;
|
||||
padding-bottom: 50px;
|
||||
}
|
||||
|
||||
#footer {
|
||||
box-sizing: border-box;
|
||||
position: fixed;
|
||||
bottom: 0;
|
||||
height: 50px;
|
||||
width: 100%;
|
||||
background-color: #2980b9;
|
||||
}
|
||||
|
||||
</script>
|
||||
#footer .content {
|
||||
padding-top: 4px;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
<div id="chat_box" class="content"></div>
|
||||
#number {
|
||||
width: 20%;
|
||||
max-width: 240px;
|
||||
}
|
||||
#message {
|
||||
width: calc(90% - 360px);
|
||||
}
|
||||
|
||||
<div id="footer">
|
||||
<div class="content">
|
||||
<input type="text" id="number" value="+4301234567890" />
|
||||
<input type="text" id="message" onkeypress="return submitEnter(event)" placeholder="Enter a Test Message! (Or emoji!, google if if you don't know how)" />
|
||||
<input type="button" id="send_btn" value="Send" onclick="sendMessage()">
|
||||
#send_btn {
|
||||
width: 120px;
|
||||
position: relative;
|
||||
margin: 2px;
|
||||
}
|
||||
|
||||
.content {
|
||||
width: 70%;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
input[type="text"],
|
||||
input[type="button"] {
|
||||
border: 0;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
input[type="text"] {
|
||||
background-color: #146EA8;
|
||||
padding: 3px 10px;
|
||||
margin: 2px;
|
||||
max-width: 92%;
|
||||
}
|
||||
|
||||
input[type="button"] {
|
||||
background-color: #f39c12;
|
||||
border-right: 1px solid #e67e22;
|
||||
border-bottom: 1px solid #e67e22;
|
||||
min-width: 70px;
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
input[type="button"]:hover {
|
||||
background-color: #e67e22;
|
||||
border-right: 1px solid #f39c12;
|
||||
border-bottom: 1px solid #f39c12;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.system,
|
||||
.username {
|
||||
color: #aaa;
|
||||
font-style: italic;
|
||||
font-family: monospace;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 1000px) {
|
||||
.content { width: 90%; }
|
||||
#send_btn {
|
||||
position: relative;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 780px) {
|
||||
#footer {
|
||||
height: 91px;
|
||||
}
|
||||
#chat_box {
|
||||
padding-bottom: 91px;
|
||||
height: calc(100% - 91px);
|
||||
}
|
||||
|
||||
#number {
|
||||
width: 100%;
|
||||
}
|
||||
#message {
|
||||
min-width: 60%;
|
||||
}
|
||||
#send_btn {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
bottom: 3px;
|
||||
margin: 0;
|
||||
width: 10%;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 400px) {
|
||||
#footer {
|
||||
height: 135px;
|
||||
}
|
||||
#chat_box {
|
||||
padding-bottom: 135px;
|
||||
height: calc(100% - 135px);
|
||||
|
||||
}
|
||||
|
||||
#number {
|
||||
max-width: none;
|
||||
width: 93%;
|
||||
}
|
||||
#message {
|
||||
width: 93%;
|
||||
}
|
||||
#send_btn {
|
||||
position: relative;
|
||||
margin-top: 3px;
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
<div id="chat_box" class="content"></div>
|
||||
|
||||
<div id="footer">
|
||||
<div class="content">
|
||||
<input type="text" id="number" value="+4301234567890" />
|
||||
<input type="text" id="message" onkeypress="return submitEnter(event)" placeholder="Enter a Message" />
|
||||
<input type="button" id="send_btn" value="Send" onclick="sendMessage()">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
<style type="text/css">
|
||||
* {
|
||||
font-family: "Arial";
|
||||
font-size: 24px;
|
||||
}
|
||||
|
||||
html, body, #wrapper {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
#wrapper {
|
||||
background-color: #ecf0f1;
|
||||
}
|
||||
|
||||
#chat_box {
|
||||
box-sizing: border-box;
|
||||
height: 100%;
|
||||
overflow: auto;
|
||||
padding-bottom: 50px;
|
||||
}
|
||||
|
||||
#footer {
|
||||
box-sizing: border-box;
|
||||
position: fixed;
|
||||
bottom: 0;
|
||||
height: 50px;
|
||||
width: 100%;
|
||||
background-color: #2980b9;
|
||||
}
|
||||
|
||||
#footer .content {
|
||||
padding-top: 4px;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
#user { width: 20%; }
|
||||
#message { width: 68%; }
|
||||
#send_btn {
|
||||
width: 10%;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.content {
|
||||
width: 70%;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
input[type="text"],
|
||||
input[type="button"] {
|
||||
border: 0;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
input[type="text"] {
|
||||
background-color: #146EA8;
|
||||
padding: 3px 10px;
|
||||
}
|
||||
|
||||
input[type="button"] {
|
||||
background-color: #f39c12;
|
||||
border-right: 2px solid #e67e22;
|
||||
border-bottom: 2px solid #e67e22;
|
||||
min-width: 70px;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
input[type="button"]:hover {
|
||||
background-color: #e67e22;
|
||||
border-right: 2px solid #f39c12;
|
||||
border-bottom: 2px solid #f39c12;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.system,
|
||||
.username {
|
||||
color: #aaa;
|
||||
font-style: italic;
|
||||
font-family: monospace;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
@media(max-width: 1000px) {
|
||||
.content { width: 90%; }
|
||||
}
|
||||
|
||||
@media(max-width: 780px) {
|
||||
#footer { height: 91px; }
|
||||
#chat_box { padding-bottom: 91px; }
|
||||
|
||||
#user { width: 100%; }
|
||||
#message { width: 80%; }
|
||||
}
|
||||
|
||||
@media(max-width: 400px) {
|
||||
#footer { height: 135px; }
|
||||
#chat_box { padding-bottom: 135px; }
|
||||
|
||||
#message { width: 100%; }
|
||||
#send_btn {
|
||||
position: relative;
|
||||
margin-top: 3px;
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -4,7 +4,7 @@
|
||||
"description": "A SMS Messageboard built using node and express",
|
||||
"main": "app.js",
|
||||
"dependencies": {
|
||||
"async": "^2.0.0-rc.6",
|
||||
"emojize": "^0.2.0",
|
||||
"lowdb": "^0.12.5",
|
||||
"serialport": "^4.0.5",
|
||||
"socket.io": "^1.4.8"
|
||||
|
@ -12,6 +12,20 @@ function sendInterface(response) {
|
||||
response.end(html);
|
||||
}
|
||||
|
||||
function sendEmojiCss(response) {
|
||||
console.log("Request handler 'Emojicss' was called.");
|
||||
response.writeHead(200, {"Content-Type": "text/css"});
|
||||
var html = fs.readFileSync(__dirname + "/served/emoji.css")
|
||||
response.end(html);
|
||||
}
|
||||
|
||||
function sendEmojiPng(response) {
|
||||
console.log("Request handler 'Emojipng' was called.");
|
||||
response.writeHead(200, {"Content-Type": "image/png"});
|
||||
var html = fs.readFileSync(__dirname + "/served/emoji.png")
|
||||
response.end(html);
|
||||
}
|
||||
|
||||
function sendBootstrap(response) {
|
||||
console.log("Request handler 'css' was called.");
|
||||
response.writeHead(200, {"Content-Type": "text/css"});
|
||||
@ -47,19 +61,13 @@ function sendDemo(response) {
|
||||
response.end(html);
|
||||
}
|
||||
|
||||
function sendEmojiTtf(response) {
|
||||
console.log("Request handler 'EmojiTtf' was called.");
|
||||
response.writeHead(200, {"Content-Type": "font/ttf"});
|
||||
var html = fs.readFileSync(__dirname + "/served/NotoColorEmoji.ttf")
|
||||
response.end(html);
|
||||
}
|
||||
|
||||
exports.sendClear = sendClear;
|
||||
exports.sendDemo = sendDemo;
|
||||
|
||||
exports.sendEmojiTtf = sendEmojiTtf;
|
||||
|
||||
exports.sendBootstrap = sendBootstrap;
|
||||
exports.sendJqueryUI = sendJqueryUI;
|
||||
exports.sendJquery = sendJquery;
|
||||
exports.sendEmojiPng = sendEmojiPng;
|
||||
exports.sendEmojiCss = sendEmojiCss;
|
||||
exports.sendInterface = sendInterface;
|
||||
|
@ -21,6 +21,10 @@
|
||||
{
|
||||
"param": "demoMode",
|
||||
"value": true
|
||||
},
|
||||
{
|
||||
"param": "debugMode",
|
||||
"value": false
|
||||
}
|
||||
]
|
||||
}
|
||||
|
Binary file not shown.
Binary file not shown.
5051
served/emoji.css
Normal file
5051
served/emoji.css
Normal file
File diff suppressed because it is too large
Load Diff
BIN
served/emoji.png
Normal file
BIN
served/emoji.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.7 MiB |
12
server.js
12
server.js
@ -7,6 +7,7 @@ low = require('lowdb'),
|
||||
storage = require('lowdb/file-async'),
|
||||
db = low('db.json', { storage });
|
||||
|
||||
var convert = require('emojize').emojize;
|
||||
var config = low('config.json', { storage });
|
||||
var socketServer;
|
||||
var port = config('mainConfig').chain().find({ param: 'port' }).value()['value'];
|
||||
@ -22,6 +23,11 @@ module.exports.demoMode = function () {
|
||||
return config('debug').chain().find({ param: 'demoMode' }).value()['value'];
|
||||
};
|
||||
|
||||
module.exports.debugMode = function () {
|
||||
return config('debug').chain().find({ param: 'debugMode' }).value()['value'];
|
||||
};
|
||||
|
||||
|
||||
// utility function for ucs2 decode
|
||||
function ucs2Parse(ucs2){
|
||||
codeArray = ucs2.match(/.{1,4}/g);
|
||||
@ -114,7 +120,7 @@ function initSocketIO(httpServer,debug)
|
||||
var colors = db('messages').chain().takeRight(number).map('color').value();
|
||||
|
||||
for(var i = 0; i < messages.length; i++){
|
||||
socket.emit('newMessage',times[i],numbers[i],messages[i],colors[i]);
|
||||
socket.emit('newMessage',times[i],numbers[i],convert(messages[i]),colors[i]);
|
||||
}
|
||||
});
|
||||
|
||||
@ -131,7 +137,7 @@ function initSocketIO(httpServer,debug)
|
||||
var messageRecieved = escapeHtml(message);
|
||||
db('messages').push({ numberString: numberStringRecieved,number: numberRecieved, time: timeRecieved, message: messageRecieved,color: color });
|
||||
//add a new message to the board directly
|
||||
socketServer.emit('newMessage', timeRecieved, numberRecieved, messageRecieved,color);
|
||||
socketServer.emit('newMessage', timeRecieved, numberRecieved, convert(messageRecieved),color);
|
||||
numberStringRecieved = null;
|
||||
numberRecieved = null;
|
||||
timeRecieved = null;
|
||||
@ -186,7 +192,7 @@ function serialListener(debug)
|
||||
var messageRecieved = escapeHtml(ucs2Parse(data));
|
||||
db('messages').push({ numberString: numberStringRecieved,number: numberRecieved, time: timeRecieved, message: messageRecieved,color: color });
|
||||
//add a new message to the board directly
|
||||
socketServer.emit('newMessage', timeRecieved, numberRecieved, messageRecieved,color);
|
||||
socketServer.emit('newMessage', timeRecieved, numberRecieved, convert(messageRecieved),color);
|
||||
numberStringRecieved = null;
|
||||
numberRecieved = null;
|
||||
timeRecieved = null;
|
||||
|
Reference in New Issue
Block a user