From f83be710a0ebda0e91c6517c42a42bb1b6e4c320 Mon Sep 17 00:00:00 2001 From: Baris Soner Usakli Date: Thu, 15 Aug 2013 16:50:00 -0400 Subject: [PATCH] closes #172, #173, #174 --- public/css/style.less | 4 +- public/src/modules/composer.js | 88 +++++++++++++++++++---------- public/templates/admin/settings.tpl | 2 + src/imgur.js | 2 +- src/install.js | 2 +- src/posts.js | 6 +- src/websockets.js | 2 +- 7 files changed, 68 insertions(+), 38 deletions(-) diff --git a/public/css/style.less b/public/css/style.less index d475a881f5..bb6432a2e1 100644 --- a/public/css/style.less +++ b/public/css/style.less @@ -571,7 +571,7 @@ body .navbar .nodebb-inline-block { height: 200px; } - #imagedrop { + .imagedrop { text-align: center; color: white; position: absolute; @@ -585,7 +585,7 @@ body .navbar .nodebb-inline-block { display: none; } - #imagelist { + .imagelist { position: absolute; bottom: 50px; left: 5%; diff --git a/public/src/modules/composer.js b/public/src/modules/composer.js index 2a84f46eb1..0977886813 100644 --- a/public/src/modules/composer.js +++ b/public/src/modules/composer.js @@ -7,10 +7,27 @@ define(['taskbar'], function(taskbar) { postContainer: undefined, }; + function createImageLabel(img, postImages) { + var imageLabel = $('
'+ img.name +'
'); + var closeButton = $(''); + + closeButton.on('click', function(e) { + + imageLabel.remove(); + var index = postImages.indexOf(img); + if(index !== -1) { + postImages.splice(index, 1); + } + }); + + imageLabel.append(closeButton); + return imageLabel; + } + function loadFile(file) { var reader = new FileReader(), - dropDiv = $('#imagedrop'), - imagelist = $('#imagelist'), + dropDiv = $('.post-window .imagedrop'), + imagelist = $('.post-window .imagelist'), uuid = dropDiv.parents('[data-uuid]').attr('data-uuid'), posts = composer.posts[uuid]; @@ -25,19 +42,9 @@ define(['taskbar'], function(taskbar) { posts.images.push(img); - var imageLabel = $('
'+ file.name +'
'); - var closeButton = $(''); - closeButton.on('click', function(e) { - - imageLabel.remove(); - var index = posts.images.indexOf(img); - if(index !== -1) { - posts.images.splice(index, 1); - } - }); + var imageLabel = createImageLabel(img, posts.images); - imageLabel.append(closeButton); - imagelist.append(imageLabel); + imagelist.append(imageLabel); dropDiv.hide(); }); @@ -46,16 +53,20 @@ define(['taskbar'], function(taskbar) { function initializeFileReader() { jQuery.event.props.push( "dataTransfer" ); - + console.log(config); if(window.FileReader) { - var drop = $('#imagedrop'); + var drop = $('.post-window .imagedrop'); + var textarea = $('.post-window textarea'); - $(composer.postContainer).on('dragenter dragover', function() { - var textareaEl = this.querySelector('textarea'), - offset = textareaEl.offsetTop; + textarea.on('dragenter', function() { - drop.css('top', offset + 'px'); + drop.css('top', textarea.position().top + 'px'); drop.show(); + + drop.on('dragleave', function(ev) { + drop.hide(); + drop.off('dragleave'); + }); }); function cancel(e) { @@ -72,7 +83,7 @@ define(['taskbar'], function(taskbar) { posts = composer.posts[uuid], dt = e.dataTransfer, files = dt.files; - + for (var i=0; i' + '' + '' + - '
'+ - '
Drag and Drop Images Here
'+ + '
'+ + '
Drag and Drop Images Here
'+ '
' + '
' + '' + @@ -153,12 +164,14 @@ define(['taskbar'], function(taskbar) { // Post Window events var jPostContainer = $(composer.postContainer), - postContentEl = composer.postContainer.querySelector('textarea') + postContentEl = composer.postContainer.querySelector('textarea'); + jPostContainer.on('change', 'input, textarea', function() { var uuid = $(this).parents('.post-window')[0].getAttribute('data-uuid'); if (this.nodeName === 'INPUT') composer.posts[uuid].title = this.value; else if (this.nodeName === 'TEXTAREA') composer.posts[uuid].body = this.value; }); + jPostContainer.on('click', '.action-bar button', function() { var action = this.getAttribute('data-action'), uuid = $(this).parents('.post-window').attr('data-uuid'); @@ -168,6 +181,7 @@ define(['taskbar'], function(taskbar) { case 'discard': composer.discard(uuid); break; } }); + jPostContainer.on('click', '.formatting-bar span', function() { var iconClass = this.querySelector('i').className, cursorEnd = postContentEl.value.length, @@ -240,13 +254,22 @@ define(['taskbar'], function(taskbar) { }); } + function createPostImages(images) { + var imagelist = $(composer.postContainer).find('.imagelist'); + imagelist.empty(); + + if(images && images.length) { + for(var i=0; i 0) { @@ -291,7 +316,7 @@ define(['taskbar'], function(taskbar) { composer.post = function(post_uuid) { // Check title and post length - var postData = composer.posts[post_uuid], + var postData = composer.posts[post_uuid], titleEl = composer.postContainer.querySelector('input'), bodyEl = composer.postContainer.querySelector('textarea'); @@ -346,7 +371,8 @@ define(['taskbar'], function(taskbar) { composer.discard = function(post_uuid) { if (composer.posts[post_uuid]) { - $(composer.postContainer).find('#imagedrop').html(''); + $(composer.postContainer).find('.imagedrop').html(''); + $(composer.postContainer).find('.imagelist').empty(); delete composer.posts[post_uuid]; composer.minimize(); taskbar.discard('composer', post_uuid); diff --git a/public/templates/admin/settings.tpl b/public/templates/admin/settings.tpl index ed83c89141..ca92b0faf3 100644 --- a/public/templates/admin/settings.tpl +++ b/public/templates/admin/settings.tpl @@ -8,6 +8,8 @@ + +
diff --git a/src/imgur.js b/src/imgur.js index d8178bc332..72ca1b7b6c 100644 --- a/src/imgur.js +++ b/src/imgur.js @@ -14,7 +14,7 @@ var request = require('request'); } }; - var post = request.post(options, function(err, req, body){ + var post = request.post(options, function(err, req, body) { try{ callback(err, JSON.parse(body)); } catch(e) { diff --git a/src/install.js b/src/install.js index b6b83798d7..5312350d7e 100644 --- a/src/install.js +++ b/src/install.js @@ -84,11 +84,11 @@ var async = require('async'), server_conf.base_url = protocol + '//' + host; server_conf.relative_path = relative_path; - server_conf.imgurClientID = ''; meta.config.set('postDelay', 10000); meta.config.set('minimumPostLength', 8); meta.config.set('minimumTitleLength', 3); + meta.config.set('imgurClientID', ''); install.save(server_conf, client_conf, callback); }); diff --git a/src/posts.js b/src/posts.js index 12d6d95c49..30902161ad 100644 --- a/src/posts.js +++ b/src/posts.js @@ -230,6 +230,7 @@ var RDB = require('./redis.js'), postData.relativeTime = utils.relativeTime(postData.timestamp) postData.fav_star_class = 'icon-star-empty'; postData['edited-class'] = 'none'; + postData.show_banned = 'hide'; postData.uploadedImages = JSON.parse(postData.uploadedImages); var socketData = { @@ -327,8 +328,8 @@ var RDB = require('./redis.js'), function uploadPostImages(postData, images, callback) { var imgur = require('./imgur'); - imgur.setClientID(global.nconf.get('imgurClientID')); - + imgur.setClientID(config.imgurClientID); + var uploadedImages = []; function uploadImage(image, callback) { @@ -341,6 +342,7 @@ var RDB = require('./redis.js'), uploadedImages.push(img); callback(null); } else { + winston.error('Can\'t upload image, did you set imgurClientID?'); callback(data); } } diff --git a/src/websockets.js b/src/websockets.js index 1003e45a06..664215fc98 100644 --- a/src/websockets.js +++ b/src/websockets.js @@ -362,7 +362,7 @@ var SocketIO = require('socket.io').listen(global.server, { log:false }), }); return; } - + posts.reply(data.topic_id, uid, data.content, data.images, function(err, result) { if(err) { if(err.message === 'content-too-short') {