mirror of
				https://github.com/NodeBB/NodeBB.git
				synced 2025-11-03 20:45:58 +01:00 
			
		
		
		
	@@ -7,10 +7,27 @@ define(['taskbar'], function(taskbar) {
 | 
			
		||||
			postContainer: undefined,
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
	function createImageLabel(img, postImages) {
 | 
			
		||||
		var imageLabel = $('<div class="label"><span>'+ img.name +'</span></div>');
 | 
			
		||||
		var closeButton = $('<button class="close">×</button>');
 | 
			
		||||
 | 
			
		||||
		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 = $('<div class="label"><span>'+ file.name +'</span></div>');
 | 
			
		||||
			var closeButton = $('<button class="close">×</button>');
 | 
			
		||||
			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<files.length; i++) {
 | 
			
		||||
					loadFile(files[i]);
 | 
			
		||||
				}
 | 
			
		||||
@@ -100,8 +111,8 @@ define(['taskbar'], function(taskbar) {
 | 
			
		||||
														'</div>' +
 | 
			
		||||
													'</div>' +
 | 
			
		||||
													'<textarea tabIndex="2"></textarea>' +
 | 
			
		||||
													'<div id="imagelist"></div>'+
 | 
			
		||||
													'<div id="imagedrop"><div>Drag and Drop Images Here</div></div>'+
 | 
			
		||||
													'<div class="imagelist"></div>'+
 | 
			
		||||
													'<div class="imagedrop"><div>Drag and Drop Images Here</div></div>'+
 | 
			
		||||
													'<div class="btn-toolbar action-bar">' +
 | 
			
		||||
														'<div class="btn-group" style="float: right; margin-right: -8px">' +
 | 
			
		||||
															'<button data-action="minimize" class="btn hidden-phone" tabIndex="4"><i class="icon-download-alt"></i> Minimize</button>' +
 | 
			
		||||
@@ -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<images.length; ++i) {
 | 
			
		||||
				var imageLabel = createImageLabel(images[i], images);
 | 
			
		||||
				imagelist.append(imageLabel);
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	composer.load = function(post_uuid) {
 | 
			
		||||
		var post_data = composer.posts[post_uuid],
 | 
			
		||||
			titleEl = composer.postContainer.querySelector('input'),
 | 
			
		||||
			bodyEl = composer.postContainer.querySelector('textarea'),
 | 
			
		||||
			imagelist = $(composer.postContainer).find('#imagelist');
 | 
			
		||||
 | 
			
		||||
		imagelist.empty();
 | 
			
		||||
			bodyEl = composer.postContainer.querySelector('textarea');
 | 
			
		||||
 | 
			
		||||
		composer.reposition(post_uuid);
 | 
			
		||||
		composer.active = post_uuid;
 | 
			
		||||
@@ -263,7 +286,9 @@ define(['taskbar'], function(taskbar) {
 | 
			
		||||
			titleEl.value = post_data.title;
 | 
			
		||||
			titleEl.readOnly = false;
 | 
			
		||||
		}
 | 
			
		||||
		bodyEl.value = post_data.body
 | 
			
		||||
		bodyEl.value = post_data.body;
 | 
			
		||||
 | 
			
		||||
		createPostImages(post_data.images);
 | 
			
		||||
 | 
			
		||||
		// Direct user focus to the correct element
 | 
			
		||||
		if ((parseInt(post_data.tid) || parseInt(post_data.pid)) > 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);
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user