sheercms
Version:
Sheer Cliff CMS is a simple and powerful content management system (CMS) for Node JS.
99 lines (81 loc) • 2.79 kB
JavaScript
var UploadMediaDialogController = function ($scope, $modalInstance, ContentService, title, groupId) {
$scope.dropSupported = true;
$scope.dialog = {
title: "",
message: "",
messageType: ""
};
$scope.data = {
uploading: false,
files: [],
hasFiles: false,
countMessage: "",
progress: [],
showProgress: false,
groupId: null,
autoPublish: true,
uploadCount: 0
};
$scope.onFileSelect = function($files) {
if ($files && $files.length > 0) {
if ($scope.data.files) {
for(var i = 0; i < $files.length; i++)
$scope.data.files.push($files[i]);
}
else
$scope.data.files = $files;
$scope.data.hasFiles = true;
$scope.data.countMessage = $scope.data.files.length == 1 ? "1 file selected" : $scope.data.files.length + " files selected";
}
else
$scope.clearFiles();
};
$scope.clearFiles = function() {
$(".upload-dialog input[type='file']").each(function() {
$(this).val(null);
});
$scope.data.files = [];
$scope.data.hasFiles = false;
$scope.data.countMessage = "";
$scope.data.progress = [];
$scope.data.showProgress = false;
$scope.data.uploading = false;
};
$scope.startUpload = function() {
$scope.progress = [];
for(var i = 0; i < $scope.data.files.length; i++) {
var f = $scope.data.files[i];
$scope.data.progress.push({
name: f.name,
percent: 0,
error: ""
});
}
$scope.data.showProgress = true;
$scope.data.uploading = true;
ContentService.upload($scope.data.groupId, $scope.data.files, $scope.data.autoPublish, onUploadProgress, onUploadError).then(function(result) {
$scope.data.uploadCount += $scope.data.files.length;
$scope.data.uploading = false;
});
};
function onUploadProgress(name, index, loaded, total) {
var per = parseInt(100.0 * loaded / total);
$scope.data.progress[index].percent = per;
console.log('percent: ' + per + ' ;' + name + '; ' + index);
}
function onUploadError(name, index, message) {
$scope.data.progress[index].error = message;
}
$scope.uploadMore = function() {
$scope.clearFiles();
$scope.data.showProgress = false;
};
$scope.close = function() {
$modalInstance.close($scope.data.uploadCount);
};
function init() {
$scope.dialog.title = title || "Upload Media";
$scope.data.groupId = groupId;
}
init();
};