Support sending multiple images

This commit is contained in:
Magnus Hauge Bakke 2015-10-12 21:09:13 +02:00 committed by Lorenz Hübschle-Schneider
parent f2bb543796
commit 3f661ded6c
5 changed files with 55 additions and 31 deletions

View File

@ -362,16 +362,20 @@ td.time {
} }
#imgur-upload-progress { #imgur-upload-progress {
display: none; width: 100%;
content: " "; height: auto;
width: 0%;
height: 5px;
position: absolute; position: absolute;
top: -5px; bottom: 100%;
left: 0; left: 0;
background: #428BCA;
} }
.imgur-progress-bar {
width: 0%;
height: 5px;
margin-top: 1px;
background: #428BCA;
}
/* fix for mobile firefox which ignores :hover */ /* fix for mobile firefox which ignores :hover */
.nav-pills > li > a:active, .nav-pills > li > a:active span { .nav-pills > li > a:active, .nav-pills > li > a:active span {
text-decoration: none; text-decoration: none;

View File

@ -5,7 +5,7 @@
<span class="input-group-btn"> <span class="input-group-btn">
<label class="btn btn-send-image unselectable" for="imgur-upload" title="Send image"> <label class="btn btn-send-image unselectable" for="imgur-upload" title="Send image">
<i class="glyphicon glyphicon-picture"></i> <i class="glyphicon glyphicon-picture"></i>
<input type="file" accept="image/*" title="Send image" id="imgur-upload" class="imgur-upload" file-change="uploadImage($event, files)"> <input type="file" accept="image/*" multiple title="Send image" id="imgur-upload" class="imgur-upload" file-change="uploadImage($event, files)">
</label> </label>
<button class="btn btn-send unselectable"><i class="glyphicon glyphicon-send"></i></button> <button class="btn btn-send unselectable"><i class="glyphicon glyphicon-send"></i></button>
</span> </span>

View File

@ -21,20 +21,25 @@ weechat.directive('imgurDrop', ['connection','imgur', function(connection, imgur
e.stopPropagation(); e.stopPropagation();
e.preventDefault(); e.preventDefault();
// Check files length // Send image url after upload
if (files.length > 0) { var sendImageUrl = function(imageUrl) {
// Sorry only one file
var file = files[0];
// Upload to imgur // Send image
imgur.process(file, function(imageUrl) { if(imageUrl !== undefined && imageUrl !== '') {
connection.sendMessage(String(imageUrl));
}
// Send image };
if(imageUrl !== undefined && imageUrl !== '') {
connection.sendMessage( String(imageUrl) ); // Check files
} if(typeof files !== "undefined" && files.length > 0) {
// Loop through files
for (var i = 0; i < files.length; i++) {
// Upload to imgur
imgur.process(files[i], sendImageUrl);
}
});
} }
}; };
} }

View File

@ -29,9 +29,16 @@ weechat.factory('imgur', ['$rootScope', function($rootScope) {
// Set client ID (Glowing Bear) // Set client ID (Glowing Bear)
var clientId = "164efef8979cd4b"; var clientId = "164efef8979cd4b";
// Progress bar DOM elment // Progress bars container
var progressBar = document.getElementById("imgur-upload-progress"); var progressBars = document.getElementById("imgur-upload-progress"),
progressBar.style.width = '0'; currentProgressBar = document.createElement("div");
// Set progress bar attributes
currentProgressBar.className='imgur-progress-bar';
currentProgressBar.style.width = '0';
// Append progress bar
progressBars.appendChild(currentProgressBar);
// Create new form data // Create new form data
var fd = new FormData(); var fd = new FormData();
@ -51,7 +58,8 @@ weechat.factory('imgur', ['$rootScope', function($rootScope) {
// Handler for response // Handler for response
xhttp.onload = function() { xhttp.onload = function() {
progressBar.style.display = 'none'; // Remove progress bar
currentProgressBar.parentNode.removeChild(currentProgressBar);
// Check state and response status // Check state and response status
if(xhttp.status === 200) { if(xhttp.status === 200) {
@ -87,8 +95,7 @@ weechat.factory('imgur', ['$rootScope', function($rootScope) {
var complete = (event.loaded / event.total * 100 | 0); var complete = (event.loaded / event.total * 100 | 0);
// Set progress bar width // Set progress bar width
progressBar.style.display = 'block'; currentProgressBar.style.width = complete + '%';
progressBar.style.width = complete + '%';
} }
}; };

View File

@ -70,12 +70,9 @@ weechat.directive('inputBar', function() {
}, 0); }, 0);
}; };
$scope.uploadImage = function( $event, files ) { $scope.uploadImage = function($event, files) {
// Get file // Send image url after upload
var file = files[0]; var sendImageUrl = function(imageUrl) {
// Process image
imgur.process(file, function(imageUrl) {
// Send image // Send image
if(imageUrl !== undefined && imageUrl !== '') { if(imageUrl !== undefined && imageUrl !== '') {
@ -98,10 +95,21 @@ weechat.directive('inputBar', function() {
inputNode.focus(); inputNode.focus();
var pos = $scope.command.length - suffix.length; var pos = $scope.command.length - suffix.length;
inputNode.setSelectionRange(pos, pos); inputNode.setSelectionRange(pos, pos);
// force refresh?
$scope.$apply();
}, 0); }, 0);
} }
}); };
if(typeof files !== "undefined" && files.length > 0) {
// Loop through files
for (var i = 0; i < files.length; i++) {
// Process image
imgur.process(files[i], sendImageUrl);
}
}
}; };
// Send the message to the websocket // Send the message to the websocket