Skip to content

Commit c180134

Browse files
committed
Merge pull request #133 from joni2back/click-changes
File upload v2
2 parents 5659aa9 + aab7609 commit c180134

File tree

12 files changed

+102
-38
lines changed

12 files changed

+102
-38
lines changed

bower.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
"angular-translate": "~2.9.1",
2424
"bootstrap": "~3.3.2",
2525
"jquery": "~2.2.0",
26-
"bootswatch": "3.3.6+1"
26+
"bootswatch": "3.3.6+1",
27+
"ng-file-upload": "^12.0.1"
2728
}
2829
}

bower_components/ng-file-upload/ng-file-upload.min.js

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/angular-filemanager.min.css

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/angular-filemanager.min.js

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

index.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
<!-- third party -->
1414
<script src="bower_components/angular/angular.min.js"></script>
1515
<script src="bower_components/angular-translate/angular-translate.min.js"></script>
16+
<script src="bower_components/ng-file-upload/ng-file-upload.min.js"></script>
1617
<script src="bower_components/jquery/dist/jquery.min.js"></script>
1718
<script src="bower_components/bootstrap/dist/js/bootstrap.min.js"></script>
1819
<link rel="stylesheet" href="bower_components/bootswatch/paper/bootstrap.min.css" />

src/css/main.css

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,7 @@ textarea.code {
166166
padding: 0;
167167
padding: 10px 0;
168168
border: none;
169+
background: none;
169170
}
170171

171172
.table-files .selected,
@@ -235,6 +236,26 @@ textarea.code {
235236
margin: 3px 0;
236237
}
237238

239+
.upload-dragover .main {
240+
opacity: .4;
241+
}
242+
243+
.upload-dragover:before {
244+
content: "\e198";
245+
position: absolute;
246+
left: 50%;
247+
top: 50%;
248+
transform: translate(-50%, -50%);
249+
z-index: 100;
250+
color: #2196F3;
251+
font-size: 8em;
252+
font-family: 'Glyphicons Halflings';
253+
}
254+
255+
.upload-list {
256+
margin-top: 20px;
257+
}
258+
238259
.spinner-wrapper {
239260
margin: 0 auto;
240261
text-align: center;
@@ -345,4 +366,4 @@ table th > a:focus {
345366

346367
.selected-file-details {
347368
padding-left: 20px;
348-
}
369+
}

src/js/app.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
(function(window, angular, $) {
22
'use strict';
3-
angular.module('FileManagerApp', ['pascalprecht.translate']);
3+
angular.module('FileManagerApp', ['pascalprecht.translate', 'ngFileUpload']);
44

55
/**
66
* jQuery inits

src/js/controllers/main.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -308,9 +308,19 @@
308308
});
309309
};
310310

311+
$scope.addForUpload = function($files) {
312+
$scope.uploadFileList = $scope.uploadFileList.concat($files);
313+
$scope.modal('uploadfile');
314+
};
315+
316+
$scope.removeFromUpload = function(index) {
317+
$scope.uploadFileList.splice(index, 1);
318+
};
319+
311320
$scope.uploadFiles = function() {
312321
$scope.apiMiddleware.upload($scope.uploadFileList, $scope.fileNavigator.currentPath).then(function() {
313322
$scope.fileNavigator.refresh();
323+
$scope.uploadFileList = [];
314324
$scope.modal('uploadfile', true);
315325
}, function(data) {
316326
var errorMsg = data.result && data.result.error || $translate.instant('error_uploading_files');

src/js/services/apihandler.js

Lines changed: 28 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
(function(angular, $) {
22
'use strict';
3-
angular.module('FileManagerApp').service('apiHandler', ['$http', '$q', '$window', '$translate',
4-
function ($http, $q, $window, $translate) {
3+
angular.module('FileManagerApp').service('apiHandler', ['$http', '$q', '$window', '$translate', 'Upload',
4+
function ($http, $q, $window, $translate, Upload) {
55

66
$http.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';
77

@@ -114,23 +114,36 @@
114114
return deferred.promise;
115115
};
116116

117-
ApiHandler.prototype.upload = function(apiUrl, form) {
117+
ApiHandler.prototype.upload = function(apiUrl, destination, files) {
118118
var self = this;
119119
var deferred = $q.defer();
120120
self.inprocess = true;
121+
self.progress = 0;
121122
self.error = '';
122-
$http.post(apiUrl, form, {
123-
transformRequest: angular.identity,
124-
headers: {
125-
'Content-Type': undefined
126-
}
127-
}).success(function(data) {
128-
self.deferredHandler(data, deferred);
129-
}).error(function(data) {
130-
self.deferredHandler(data, deferred, 'Unknown error uploading files');
131-
})['finally'](function() {
132-
self.inprocess = false;
133-
});
123+
124+
var data = {
125+
destination: destination
126+
};
127+
128+
for (var i = 0; i < files.length; i++) {
129+
data['file-' + i] = files[i];
130+
}
131+
132+
if (files && files.length) {
133+
Upload.upload({
134+
url: apiUrl,
135+
data: data
136+
}).then(function (data) {
137+
self.deferredHandler(data, deferred);
138+
}, function (data) {
139+
self.deferredHandler(data, deferred, 'Unknown error uploading files');
140+
}, function (evt) {
141+
self.progress = Math.min(100, parseInt(100.0 * evt.loaded / evt.total)) - 1;
142+
})['finally'](function() {
143+
self.inprocess = false;
144+
self.progress = 0;
145+
});
146+
}
134147

135148
return deferred.promise;
136149
};

src/js/services/apimiddleware.js

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -40,19 +40,14 @@
4040
return this.apiHandler.remove(fileManagerConfig.removeUrl, items);
4141
};
4242

43-
ApiMiddleware.prototype.upload = function(fileList, path) {
43+
ApiMiddleware.prototype.upload = function(files, path) {
4444
if (! $window.FormData) {
4545
throw new Error('Unsupported browser version');
4646
}
47-
var form = new $window.FormData();
48-
form.append('destination', this.getPath(path));
4947

50-
for (var i = 0; i < fileList.length; i++) {
51-
var fileObj = fileList.item(i);
52-
fileObj instanceof $window.File && form.append('file-' + i, fileObj);
53-
}
48+
var destination = this.getPath(path);
5449

55-
return this.apiHandler.upload(fileManagerConfig.uploadUrl, form);
50+
return this.apiHandler.upload(fileManagerConfig.uploadUrl, destination, files);
5651
};
5752

5853
ApiMiddleware.prototype.getContent = function(item) {

0 commit comments

Comments
 (0)