diff --git a/server.js b/server.js index 13b80e8..fd273a9 100644 --- a/server.js +++ b/server.js @@ -50,9 +50,43 @@ StaticHandler.prototype.handle = function(request, response) { /////////// +var documents = {}; + +var DocumentHandler = function() { + +}; + +DocumentHandler.prototype.handle = function(request, response) { + if (request.method == 'GET') { + + } + else if (request.method == 'POST') { + var key = '123'; + request.on('data', function(data) { + if (!documents[key]) { + documents[key] = ''; + } + documents[key] += data.toString(); + }); + request.on('end', function(end) { + response.end(JSON.stringify({ uuid: key })); + }); + } +}; + +/////////// + http.createServer(function(request, response) { - var handler = new StaticHandler('./static'); - handler.handle(request, response); + var incoming = url.parse(request.url, false); + + if (incoming.pathname.indexOf('/documents') === 0) { + var handler = new DocumentHandler(); + handler.handle(request, response); + } + else { + var handler = new StaticHandler('./static'); + handler.handle(request, response); + } }).listen(7777); diff --git a/static/application.js b/static/application.js index bb9b84e..26c0a95 100644 --- a/static/application.js +++ b/static/application.js @@ -1,3 +1,4 @@ +///// represents a single document var heist_document = function() { @@ -9,17 +10,29 @@ heist_document.prototype.save = function(data, callback) { if (this.locked) { return false; } - var high = hljs.highlightAuto(data); - var pack = { - language: high.language, - data: data - }; - pack.value = high.value; - pack.uuid = '123456'; - this.locked = true; - callback(pack); + + $.ajax('/documents', { + + type: 'post', + data: data, + dataType: 'json', + + success: function(res) { + this.locked = true; + var high = hljs.highlightAuto(data); + callback({ + value: high.value, + uuid: res.uuid, + language: high.language + }); + } + + }); + }; +///// represents the paste application + var heist = function(appName) { this.appName = appName; @@ -52,7 +65,8 @@ heist.prototype.lockDocument = function() { this.doc.save(this.$textarea.val(), function(ret) { if (ret) { _this.$code.html(ret.value); - _this.setTitle(ret.language); + _this.setTitle(ret.language + '-' + ret.uuid); + // TODO add to push state _this.$textarea.val('').hide(); _this.$box.show(); } @@ -79,9 +93,9 @@ heist.prototype.configureShortcuts = function() { // TODO support for push state navigation // TODO ctrl-d for duplicate -$(function() { +///// Tab behavior in the textarea - 2 spaces per tab - $('textarea').focus(); +$(function() { $('textarea').keydown(function(evt) { if (evt.keyCode === 9) { diff --git a/static/index.html b/static/index.html index 05b6814..323f274 100644 --- a/static/index.html +++ b/static/index.html @@ -41,6 +41,7 @@ $(function() { var app = new heist('heist'); app.newDocument(); + $('textarea').focus(); });