Use base64-encoded images in default theme; autogrow textarea fixed; chat store

* Convert pngs to base64-encoded files and embed them in the default theme.css
* Use autogrow.js library in place of home-grown textarea autogrow; new library
  is more reliable
* Fix chat storage such that it restores and saves from/to the proper key
Esse commit está contido em:
Joshua Gross
2011-03-13 00:24:43 -05:00
commit 3f75e46a67
14 arquivos alterados com 150 adições e 61 exclusões
+52
Ver Arquivo
@@ -0,0 +1,52 @@
/*
* Adapted from
* https://github.com/jaz303/jquery-grab-bag/blob/master/javascripts/jquery.autogrow-textarea.js
*
* Auto-growing textareas; technique ripped from Facebook
*/
$.fn.autogrow = function(options) {
this.filter('textarea').each(function() {
var $this = $(this),
minHeight = $this.height(),
lineHeight = $this.css('lineHeight');
var shadow = $('<div></div>').css({
position: 'absolute',
top: -10000,
left: -10000,
width: $(this).width() - parseInt($this.css('paddingLeft')) - parseInt($this.css('paddingRight')),
fontSize: $this.css('fontSize'),
fontFamily: $this.css('fontFamily'),
lineHeight: $this.css('lineHeight'),
resize: 'none',
'word-wrap':'break-word'
}).appendTo(document.body);
var update = function() {
var times = function(string, number) {
for (var i = 0, r = ''; i < number; i ++) r += string;
return r;
};
var val = this.value.replace(/</g, '&lt;')
.replace(/>/g, '&gt;')
.replace(/&/g, '&amp;')
.replace(/\n$/, '<br/>&nbsp;')
.replace(/\n/g, '<br/>')
.replace(/ {2,}/g, function(space) { return times('&nbsp;', space.length -1) + ' ' });
shadow.html(val);
$(this).css('height', Math.max(shadow.height(), minHeight));
}
$(this).change(update).keyup(update).keydown(update);
update.apply(this);
});
return this;
}
+22 -40
Ver Arquivo
@@ -4,7 +4,7 @@ AjaxIM = function(options) {
_defaults = {
host: 'localhost',
port: 8000,
theme: 'themes/default'
theme: true
};
this.settings = $.extend(_defaults, options);
@@ -12,18 +12,23 @@ AjaxIM = function(options) {
{port: this.settings.port});
// Load & wire up the chat bar HTML
_dbg(Template.bar);
var IM = $('<div id="AjaxIM"></div>')
.appendTo('body')
.css('display', 'none');
$(Template.bar).appendTo(IM);
.css('display', 'none')
.append($(Template.bar));
if(this.settings.theme) {
if(typeof document.createStyleSheet == 'function')
document.createStyleSheet(this.settings.theme + '/theme.css');
document.createStyleSheet('http://'
+ this.settings.host
+ ':' + this.settings.port
+ '/theme.css');
else
$('body').append('<link rel="stylesheet" href="' +
this.settings.theme + '/theme.css" />');
'http://'
+ this.settings.host
+ ':' + this.settings.port
+ '/theme.css" />');
}
this.friends = {};
@@ -118,19 +123,7 @@ AjaxIM.prototype._wiring = function() {
obj.val());
}
var obj = $(this);
obj.val('');
obj.height(obj.data('height'));
})
.live('keypress', function(e) {
var obj = $(this),
scrollHeight = this.scrollHeight;
if(!($.browser.msie && $.browser.opera))
obj.height(0);
if(scrollHeight > obj.height() || scrollHeight < obj.height())
obj.height(scrollHeight);
$(this).val('').change();
});
// Focus the text input when a chatbox message log is clicked
@@ -149,10 +142,6 @@ AjaxIM.prototype._wiring = function() {
}
chatbox.find('.imjs-input').focus();
if(!(input = chatbox.find('.imjs-input')).data('height')) {
// store the height for resizing later
input.data('height', input.height());
}
});
// Setup and hide the scrollers
@@ -266,7 +255,7 @@ AjaxIM.prototype._wiring = function() {
self.status('online', '');
// Reconnect
self._storage();
self._restore();
});
// Allow tabs to be activated and closed
@@ -329,21 +318,23 @@ AjaxIM.prototype._wiring = function() {
$('#imjs-friends-panel').css('display', 'none');
};
AjaxIM.prototype._storage = function() {
AjaxIM.prototype._restore = function() {
var self = this,
chatstore = Tea.decrypt(store.get('chats') || '', this.username),
friends = Tea.decrypt(store.get('friends') || '', this.username);
_dbg(friends)
try {
this.chatstore = JSON.parse(chatstore);
} catch(e) {
this.chatstore = {};
store.set('chats', '');
}
try {
friends = JSON.parse(friends);
} catch(e) {
friends = {};
store.set('friends', '');
}
if(friends) {
@@ -387,7 +378,7 @@ AjaxIM.prototype._storage = function() {
header.html(header.html().replace('{username}', this.username));
};
AjaxIM.prototype._clearSession = function() {
AjaxIM.prototype._kill = function() {
var last_user = store.get('user');
$.each(['friends', 'activeTab', 'chats', 'status', 'connected'],
function(i, key) {
@@ -434,7 +425,7 @@ AjaxIM.prototype._message = function(msg) {
setTimeout(function() { self._showReconnect(); }, 0);
return;
} else {
this._storage();
this._restore();
}
$('#imjs-friends').attr('class', 'imjs-available');
@@ -588,18 +579,6 @@ AjaxIM.prototype.activateTab = function(tab) {
}
if(chatbox) {
if((input = chatbox.find('.imjs-input')).length &&
!input.data('height')) {
if(!($.browser.msie && $.browser.opera)) input.height(0);
if(input[0].scrollHeight > input.height() ||
input[0].scrollHeight < input.height()) {
input.height(input[0].scrollHeight);
}
// store the height for resizing later
input.data('height', input.height());
}
try {
var msglog = chatbox.find('.imjs-msglog');
msglog[0].scrollTop = msglog[0].scrollHeight;
@@ -635,6 +614,9 @@ AjaxIM.prototype.createChatbox = function(username, contents) {
var chatbox = tab.find('.imjs-chatbox');
chatbox.attr('id', chatbox_id);
// setup the textarea to autogrow
chatbox.find('.imjs-input').autogrow();
// remove default items from the message log
var message_log = chatbox.find('.imjs-msglog').empty();
Arquivo binário não exibido.

Antes

Largura:  |  Altura:  |  Tamanho: 124 B

Arquivo binário não exibido.

Antes

Largura:  |  Altura:  |  Tamanho: 176 B

Arquivo binário não exibido.

Antes

Largura:  |  Altura:  |  Tamanho: 552 B

Arquivo binário não exibido.

Antes

Largura:  |  Altura:  |  Tamanho: 847 B

Arquivo binário não exibido.

Antes

Largura:  |  Altura:  |  Tamanho: 212 B

Arquivo binário não exibido.

Antes

Largura:  |  Altura:  |  Tamanho: 706 B

Arquivo binário não exibido.

Antes

Largura:  |  Altura:  |  Tamanho: 142 B

Arquivo binário não exibido.

Antes

Largura:  |  Altura:  |  Tamanho: 141 B

Arquivo binário não exibido.

Antes

Largura:  |  Altura:  |  Tamanho: 234 B

Arquivo binário não exibido.

Antes

Largura:  |  Altura:  |  Tamanho: 109 B

+56 -11
Ver Arquivo
@@ -1,4 +1,48 @@
.imjs-default { display: none; }
/*
Content-Type: mutipart/related; boundary="_FOR_IE_6_AND_7"
--_FOR_IE_6_AND_7
Content-Location:bottom
Content-Transfer-Encoding:base64
iVBORw0KGgoAAAANSUhEUgAAAW8AAAABCAIAAACe17jdAAAAF0lEQVQ4y2NwcXEdRaOIePRqFIwCHAAACPCDdjrG0LoAAAAASUVORK5CYII=
--_FOR_IE_6_AND_7
Content-Location:closemin
Content-Transfer-Encoding:base64
iVBORw0KGgoAAAANSUhEUgAAAAoAAAAZCAMAAAA/rk+6AAAABlBMVEUHAQUAAACy3FD1AAAAAnRSTlP/AOW3MEoAAAAwSURBVBjTY2CEAwZGBgYwzQBmMjCCCQgF4TJC2IzoTIQCJG1IhiFZMciYDFCAzAQAZEoAw+FFzSEAAAAASUVORK5CYII=
--_FOR_IE_6_AND_7
Content-Location:error
Content-Transfer-Encoding:base64
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABpklEQVQ4y52RyUsCURzHhYJudegYBUV/REVFe7QdEtoOnVouXYKCDgZGJEEUeIqo6BB0qMAWPARWaoSHmjR1KltwurSIRTM6mjrBt/fGtKgw7fDhLfN+n/d981PsqdMVCUj74Mc3ADIJi/fHMkD5TZKMQMWutYFd76QCVaqCPJMmC4EnBgHvEeic7qUimOHMakjBS0iBM3CmUSrQJisoPZzORUS8RPBhCcG7WUg+FhZtIZXUJiNYubfOQfLbaYFMhD/Ao32eznV/CXqYxWK8iecQb8fjAv/1IEnBgFkoouv+RALmxb2NkFcH/83wp8DVh9DjMnhOF2/rbwIVu6qEJFjgc/XKRTGB76wLgrMVkZc9XGx2072J74IckyYT4oMBwdsJ+Nh2Qkd0dCohOFognNZDvBrAq2cX5slsKsn/Kphy7w4h/LxDDtZBsDcQGuMJBFs1eGs5+JMShJ+2wRlH5LbGBKRtOeTdBnJTMzlYAd5WSaiKjnRtLZOLKYKtBpFnI2lrAZU0Rdt2PE3MWwh7N5JkEx7HHBXo5QRUEoubAno5Qexv/pd3xf1YaSj1xLcAAAAASUVORK5CYII=
--_FOR_IE_6_AND_7
Content-Location:loading
Content-Transfer-Encoding:base64
R0lGODlhEAAQAPQAAP///5iYmPv7+66urs3NzZqamqenp+3t7dvb26CgoMfHx8DAwPPz89XV1efn57S0tLq6ugAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH+GkNyZWF0ZWQgd2l0aCBhamF4bG9hZC5pbmZvACH5BAAKAAAAIf8LTkVUU0NBUEUyLjADAQAAACwAAAAAEAAQAAAFUCAgjmRpnqUwFGwhKoRgqq2YFMaRGjWA8AbZiIBbjQQ8AmmFUJEQhQGJhaKOrCksgEla+KIkYvC6SJKQOISoNSYdeIk1ayA8ExTyeR3F749CACH5BAAKAAEALAAAAAAQABAAAAVoICCKR9KMaCoaxeCoqEAkRX3AwMHWxQIIjJSAZWgUEgzBwCBAEQpMwIDwY1FHgwJCtOW2UDWYIDyqNVVkUbYr6CK+o2eUMKgWrqKhj0FrEM8jQQALPFA3MAc8CQSAMA5ZBjgqDQmHIyEAIfkEAAoAAgAsAAAAABAAEAAABWAgII4j85Ao2hRIKgrEUBQJLaSHMe8zgQo6Q8sxS7RIhILhBkgumCTZsXkACBC+0cwF2GoLLoFXREDcDlkAojBICRaFLDCOQtQKjmsQSubtDFU/NXcDBHwkaw1cKQ8MiyEAIfkEAAoAAwAsAAAAABAAEAAABVIgII5kaZ6AIJQCMRTFQKiDQx4GrBfGa4uCnAEhQuRgPwCBtwK+kCNFgjh6QlFYgGO7baJ2CxIioSDpwqNggWCGDVVGphly3BkOpXDrKfNm/4AhACH5BAAKAAQALAAAAAAQABAAAAVgICCOZGmeqEAMRTEQwskYbV0Yx7kYSIzQhtgoBxCKBDQCIOcoLBimRiFhSABYU5gIgW01pLUBYkRItAYAqrlhYiwKjiWAcDMWY8QjsCf4DewiBzQ2N1AmKlgvgCiMjSQhACH5BAAKAAUALAAAAAAQABAAAAVfICCOZGmeqEgUxUAIpkA0AMKyxkEiSZEIsJqhYAg+boUFSTAkiBiNHks3sg1ILAfBiS10gyqCg0UaFBCkwy3RYKiIYMAC+RAxiQgYsJdAjw5DN2gILzEEZgVcKYuMJiEAOwAAAAAAAAAAAA==
--_FOR_IE_6_AND_7
Content-Location:sl
Content-Transfer-Encoding:base64
iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQI12P4//8/AwizM7L+h7HhAiiCMAHCKrGZCQChyjk9tLLHDwAAAABJRU5ErkJggg==
--_FOR_IE_6_AND_7
Content-Location:sr
Content-Transfer-Encoding:base64
iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAIUlEQVQI12P4//8/AwizM7L+h7EZkAVhEhiCIExYJYwNAO9yOT1MGMFxAAAAAElFTkSuQmCC
--_FOR_IE_6_AND_7
Content-Location:tooltip
Content-Transfer-Encoding:base64
iVBORw0KGgoAAAANSUhEUgAAAA0AAAAICAYAAAAiJnXPAAAAiklEQVQY02PIzcrpZmdk/UoszkrP7Gf4//8/g4uD81agwH9CGKQOpB6s6fWrVzwq8krX8WkAyYPUwTWB8IXzF9QEuPheY9MAEgfJw9TCNYHwqhWr/KBuR9b0FSSOrA5FEwjX19RVIWn8CuKjq8HQBMIBPv4rQZpANDZ5rJo+fPjAFuwfuBxEY5MHACmH0K64j6daAAAAAElFTkSuQmCC
--_FOR_IE_6_AND_7
Content-Location:w
Content-Transfer-Encoding:base64
iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVQI12P4//8/AAX+Av7czFnnAAAAAElFTkSuQmCC
--_FOR_IE_6_AND_7
*/
/* [begin] Chatbox */
.imjs-chatbox {
@@ -48,7 +92,7 @@
padding-top: 10px;
width: 10px;
overflow: hidden;
background: url(images/closemin.png) 0 0 no-repeat;
background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAZCAMAAAA/rk+6AAAABlBMVEUHAQUAAACy3FD1AAAAAnRSTlP/AOW3MEoAAAAwSURBVBjTY2CEAwZGBgYwzQBmMjCCCQgF4TJC2IzoTIQCJG1IhiFZMciYDFCAzAQAZEoAw+FFzSEAAAAASUVORK5CYII=) 0 0 no-repeat;
}
div.imjs-header a.imjs-minimize {
@@ -59,7 +103,7 @@
height: 0;
width: 207px;
overflow: hidden;
background: url(images/closemin.png) 100% -10px no-repeat;
background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAZCAMAAAA/rk+6AAAABlBMVEUHAQUAAACy3FD1AAAAAnRSTlP/AOW3MEoAAAAwSURBVBjTY2CEAwZGBgYwzQBmMjCCCQgF4TJC2IzoTIQCJG1IhiFZMciYDFCAzAQAZEoAw+FFzSEAAAAASUVORK5CYII=) 100% -10px no-repeat;
}
div.imjs-header a.imjs-minimize:active {
@@ -161,7 +205,7 @@ ul#imjs-bar {
position: fixed;
bottom: 0;
right: 5%;
background: #f0efed url(images/w.png) top left repeat-x;
background: #f0efed url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVQI12P4//8/AAX+Av7czFnnAAAAAElFTkSuQmCC) top left repeat-x;
height: 25px;
border: solid #cfceca;
border-width: 1px 1px 0 0;
@@ -233,7 +277,8 @@ ul#imjs-bar {
border-color: #444;
border-bottom: 0;
padding-bottom: 1px;
background-image: url(images/bottom.png);
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAW8AAAABCAIAAACe17jdAAAAF0lEQVQ4y2NwcXEdRaOIePRqFIwCHAAACPCDdjrG0LoAAAAASUVORK5CYII=);
*background-image: url(mhtml:/theme.css!bottom);
background-position: -142px bottom;
background-repeat: no-repeat;
}
@@ -253,7 +298,7 @@ ul#imjs-bar {
padding-top: 10px;
overflow: hidden;
margin-top: 7.5px;
background: url(images/closemin.png) 0 0 no-repeat;
background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAZCAMAAAA/rk+6AAAABlBMVEUHAQUAAACy3FD1AAAAAnRSTlP/AOW3MEoAAAAwSURBVBjTY2CEAwZGBgYwzQBmMjCCCQgF4TJC2IzoTIQCJG1IhiFZMciYDFCAzAQAZEoAw+FFzSEAAAAASUVORK5CYII=) 0 0 no-repeat;
}
ul#imjs-bar > li:hover .imjs-tab-text a {
@@ -273,14 +318,14 @@ ul#imjs-bar {
ul#imjs-bar li#imjs-scroll-left {
padding: 1px 6px 0 4px;
background-image: url(images/sl.png);
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQI12P4//8/AwizM7L+h7HhAiiCMAHCKrGZCQChyjk9tLLHDwAAAABJRU5ErkJggg==);
background-position: 5px center;
float: left;
}
ul#imjs-bar li#imjs-scroll-right {
padding: 1px 5px 0;
background-image: url(images/sr.png);
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAIUlEQVQI12P4//8/AwizM7L+h7EZkAVhEhiCIExYJYwNAO9yOT1MGMFxAAAAAElFTkSuQmCC);
background-position: 20px center;
float: right;
}
@@ -314,7 +359,7 @@ ul#imjs-bar {
padding-bottom: 5px;
margin: 0 0 3px 6px;
left: -10000px;
background: url(images/tooltip.png) right bottom no-repeat;
background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAAICAYAAAAiJnXPAAAAiklEQVQY02PIzcrpZmdk/UoszkrP7Gf4//8/g4uD81agwH9CGKQOpB6s6fWrVzwq8krX8WkAyYPUwTWB8IXzF9QEuPheY9MAEgfJw9TCNYHwqhWr/KBuR9b0FSSOrA5FEwjX19RVIWn8CuKjq8HQBMIBPv4rQZpANDZ5rJo+fPjAFuwfuBxEY5MHACmH0K64j6daAAAAAElFTkSuQmCC) right bottom no-repeat;
color: #fff;
text-shadow: none;
opacity: 0.9;
@@ -338,7 +383,7 @@ ul#imjs-bar {
ul#imjs-bar > li#imjs-friends.imjs-not-connected,
ul#imjs-bar > li#imjs-friends.imjs-not-connected:hover {
width: 10px;
background-image: url(images/error.png);
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABpklEQVQ4y52RyUsCURzHhYJudegYBUV/REVFe7QdEtoOnVouXYKCDgZGJEEUeIqo6BB0qMAWPARWaoSHmjR1KltwurSIRTM6mjrBt/fGtKgw7fDhLfN+n/d981PsqdMVCUj74Mc3ADIJi/fHMkD5TZKMQMWutYFd76QCVaqCPJMmC4EnBgHvEeic7qUimOHMakjBS0iBM3CmUSrQJisoPZzORUS8RPBhCcG7WUg+FhZtIZXUJiNYubfOQfLbaYFMhD/Ao32eznV/CXqYxWK8iecQb8fjAv/1IEnBgFkoouv+RALmxb2NkFcH/83wp8DVh9DjMnhOF2/rbwIVu6qEJFjgc/XKRTGB76wLgrMVkZc9XGx2072J74IckyYT4oMBwdsJ+Nh2Qkd0dCohOFognNZDvBrAq2cX5slsKsn/Kphy7w4h/LxDDtZBsDcQGuMJBFs1eGs5+JMShJ+2wRlH5LbGBKRtOeTdBnJTMzlYAd5WSaiKjnRtLZOLKYKtBpFnI2lrAZU0Rdt2PE3MWwh7N5JkEx7HHBXo5QRUEoubAno5Qexv/pd3xf1YaSj1xLcAAAAASUVORK5CYII=);
background-position: center;
background-repeat: no-repeat;
}
@@ -388,7 +433,7 @@ textarea#imjs-away-message-text {
}
textarea#imjs-away-message-text.imjs-loading {
background: url(images/loading.gif) 161px 2px no-repeat;
background: url(data:image/gif;base64,R0lGODlhEAAQAPQAAP///5iYmPv7+66urs3NzZqamqenp+3t7dvb26CgoMfHx8DAwPPz89XV1efn57S0tLq6ugAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH+GkNyZWF0ZWQgd2l0aCBhamF4bG9hZC5pbmZvACH5BAAKAAAAIf8LTkVUU0NBUEUyLjADAQAAACwAAAAAEAAQAAAFUCAgjmRpnqUwFGwhKoRgqq2YFMaRGjWA8AbZiIBbjQQ8AmmFUJEQhQGJhaKOrCksgEla+KIkYvC6SJKQOISoNSYdeIk1ayA8ExTyeR3F749CACH5BAAKAAEALAAAAAAQABAAAAVoICCKR9KMaCoaxeCoqEAkRX3AwMHWxQIIjJSAZWgUEgzBwCBAEQpMwIDwY1FHgwJCtOW2UDWYIDyqNVVkUbYr6CK+o2eUMKgWrqKhj0FrEM8jQQALPFA3MAc8CQSAMA5ZBjgqDQmHIyEAIfkEAAoAAgAsAAAAABAAEAAABWAgII4j85Ao2hRIKgrEUBQJLaSHMe8zgQo6Q8sxS7RIhILhBkgumCTZsXkACBC+0cwF2GoLLoFXREDcDlkAojBICRaFLDCOQtQKjmsQSubtDFU/NXcDBHwkaw1cKQ8MiyEAIfkEAAoAAwAsAAAAABAAEAAABVIgII5kaZ6AIJQCMRTFQKiDQx4GrBfGa4uCnAEhQuRgPwCBtwK+kCNFgjh6QlFYgGO7baJ2CxIioSDpwqNggWCGDVVGphly3BkOpXDrKfNm/4AhACH5BAAKAAQALAAAAAAQABAAAAVgICCOZGmeqEAMRTEQwskYbV0Yx7kYSIzQhtgoBxCKBDQCIOcoLBimRiFhSABYU5gIgW01pLUBYkRItAYAqrlhYiwKjiWAcDMWY8QjsCf4DewiBzQ2N1AmKlgvgCiMjSQhACH5BAAKAAUALAAAAAAQABAAAAVfICCOZGmeqEgUxUAIpkA0AMKyxkEiSZEIsJqhYAg+boUFSTAkiBiNHks3sg1ILAfBiS10gyqCg0UaFBCkwy3RYKiIYMAC+RAxiQgYsJdAjw5DN2gILzEEZgVcKYuMJiEAOwAAAAAAAAAAAA==) 161px 2px no-repeat;
}
div#imjs-away-message-text-arrow {
+20 -10
Ver Arquivo
@@ -6,16 +6,24 @@ var http = require('http'),
uglifyjs,
o_ = require('./libs/utils'),
client = {
'im.js': [
'intro.js',
'cookies.js', 'dateformat.js', 'json.js',
'md5.js', 'store.js', 'xxtea.js',
'templates.js', 'im.js', 'l10n.js',
'outro.js'
]
'im.js': {
folder: 'js',
files: [
'intro.js',
'cookies.js', 'dateformat.js', 'json.js',
'autogrow.js', 'md5.js', 'store.js',
'xxtea.js', 'templates.js', 'im.js',
'l10n.js', 'outro.js'
],
},
'theme.css': {
folder: 'themes/default',
files: ['theme.css']
}
},
contentTypes = {
js: 'text/javascript'
js: 'text/javascript',
css: 'text/css'
},
_clientFiles = {},
server, socket;
@@ -46,9 +54,11 @@ socket.on('connection', function(client) {
// compile client javascript
for(var file in client) {
var fileData = "";
for(var i = 0, fl = client[file].length; i < fl; i++)
for(var i = 0, fl = client[file].files.length; i < fl; i++)
fileData += fs.readFileSync(
__dirname + '/../client/js/' + client[file][i],
__dirname + '/../client/'
+ client[file].folder + '/'
+ client[file].files[i],
'utf8'
);
var ext = file.split('.').pop();