6 .factory("fileSelectorService", fileSelectorService);
8 fileSelectorService.$inject = ["$http", "$q", "$filter", "promiseCache", "errorHandlerService"];
10 function fileSelectorService($http, $q, $filter, promiseCache, errorHandlerService) {
13 getFileBase64: getFileBase64,
14 getFilesTree: getFilesTree,
15 uploadFile: uploadFile,
16 getMaxSize: getMaxSize,
17 getLargeIconURLForExtension: getLargeIconURLForExtension
23 Get base64 string from files
25 function getFileBase64(fileList) {
29 fileList: JSON.stringify(fileList)
32 return $http.get(actionURLAjax, config)
33 .then(getFileBase64Complete)
34 ["catch"](getFileBase64Failed);
36 function getFileBase64Complete(response) {
37 if (response.data.success) {
41 // If success variable is false or undefined then throw an error
42 var message = $filter("translate")("ext.nero.services.file-selector.toastr-getFileBase64-errorMessage");
43 var error = errorHandlerService.buildErrorObject(response, message);
44 return ($q.reject(error));
47 function getFileBase64Failed(error) {
48 // If message is undefined then throw unknown error. Otherwise, use expected error message.
49 if (!angular.isObject(error.data) || !error.data.message) {
50 var message = $filter("translate")("ext.nero.services.file-selector.toastr-getFileBase64-errorMessage");
51 return ($q.reject(message));
54 return ($q.reject(error.data.message));
59 Get user schoolbag and dropbox file trees
61 function getFilesTree(folderId) {
70 return $http.get(actionURLAjax, config);
73 key: JSON.stringify(config.params)
75 .then(initFileListComplete)
76 ["catch"](initFileListFailed);
78 function initFileListComplete(response) {
79 if (response.data.success) {
83 // If success variable is false or undefined then throw an error
84 var message = $filter("translate")("ext.nero.services.file-selector.toastr-getFileTree-errorMessage");
85 var error = errorHandlerService.buildErrorObject(response, message);
86 return ($q.reject(error));
89 function initFileListFailed(error) {
90 // If message is undefined then throw unknown error. Otherwise, use expected error message.
91 if (!angular.isObject(error.data) || !error.data.message) {
92 var message = $filter("translate")("ext.nero.services.file-selector.toastr-getFileTree-errorMessage");
93 return ($q.reject(message));
96 return ($q.reject(error.data.message));
101 Upload a file from user desktop (expect a FormData object)
103 function uploadFile (fd) {
105 return $http.post(actionURLAjax+'&cmd=addFileEntry', fd, {
106 transformRequest: angular.identity,
107 headers: {'Content-Type': undefined}
109 .then(uploadFileComplete)
110 ["catch"](uploadFileFailed);
112 function uploadFileComplete(response) {
113 if (response.data.success) {
114 return response.data;
117 // If success variable is false or undefined then throw an error
118 var message = $filter("translate")("ext.nero.services.file-selector.toastr-upload-errorMessage");
119 var error = errorHandlerService.buildErrorObject(response, message);
120 return ($q.reject(error));
123 function uploadFileFailed(error) {
124 // If message is undefined then throw unknown error. Otherwise, use expected error message.
125 if (!angular.isObject(error.data) || !error.data.message) {
126 var message = $filter("translate")("ext.nero.services.file-selector.toastr-upload-errorMessage");
127 return ($q.reject(message));
130 return ($q.reject(error.data.message));
136 Get the maximum size authorized
138 function getMaxSize () {
141 cmd: "getMaxFileUploadSize"
144 return promiseCache({
145 promise: function() {
146 return $http.get(actionURLAjax, config);
148 ttl: 120000, //2 minutes
149 key: JSON.stringify(config.params)
151 .then(getMaxSizeComplete)
152 ["catch"](getMaxSizeFailed);
154 function getMaxSizeComplete(response) {
155 if (response.data.success) {
156 return response.data;
159 // If success variable is false or undefined then throw an error
160 var message = $filter("translate")("ext.nero.services.file-selector.toastr-getMaxSize-errorMessage");
161 var error = errorHandlerService.buildErrorObject(response, message);
162 return ($q.reject(error));
165 function getMaxSizeFailed(error) {
166 // If message is undefined then throw unknown error. Otherwise, use expected error message.
167 if (!angular.isObject(error.data) || !error.data.message) {
168 var message = $filter("translate")("ext.nero.services.file-selector.toastr-getMaxSize-errorMessage");
169 return ($q.reject(message));
172 return ($q.reject(error.data.message));
177 Return the icon (large) URL corresponding to file extension
179 function getLargeIconURLForExtension(fileExtension) {
180 if (EntSavoie.imageExtensionArray.indexOf(fileExtension) != -1) {
181 return Liferay.ThemeDisplay.getPathThemeImages() + "/icons-files/large/image.png";
183 else if (EntSavoie.audioExtensionArray.indexOf(fileExtension) != -1) {
184 return Liferay.ThemeDisplay.getPathThemeImages() + "/icons-files/large/audio.png";
186 else if (EntSavoie.videoExtensionArray.indexOf(fileExtension) != -1) {
187 return Liferay.ThemeDisplay.getPathThemeImages() + "/icons-files/large/video.png";
189 else if (fileExtension == "pdf") {
190 return Liferay.ThemeDisplay.getPathThemeImages() + "/icons-files/large/pdf.png";
192 else if (fileExtension == "zip") {
193 return Liferay.ThemeDisplay.getPathThemeImages() + "/icons-files/large/zip.png";
195 else if (fileExtension == "html" || fileExtension == "htm") {
196 return Liferay.ThemeDisplay.getPathThemeImages() + "/icons-files/large/html.png";
198 else if (fileExtension == "doc" || fileExtension == "docx") {
199 return Liferay.ThemeDisplay.getPathThemeImages() + "/icons-files/large/word.png";
201 else if (fileExtension == "ppt" || fileExtension == "pptx") {
202 return Liferay.ThemeDisplay.getPathThemeImages() + "/icons-files/large/powerp.png";
204 else if (fileExtension == "xls" || fileExtension == "xlsx") {
205 return Liferay.ThemeDisplay.getPathThemeImages() + "/icons-files/large/excel.png";
207 else if (fileExtension == "odp" || fileExtension == "ods" || fileExtension == "odt") {
208 return Liferay.ThemeDisplay.getPathThemeImages() + "/icons-files/large/openoffice.png";
210 else if (fileExtension == "sxc" || fileExtension == "sxi" || fileExtension == "sxw") {
211 return Liferay.ThemeDisplay.getPathThemeImages() + "/icons-files/large/libreoffie.png";
213 else if (fileExtension == "csv" || fileExtension == "rtf" || fileExtension == "txt" || fileExtension == "tsv") {
214 return Liferay.ThemeDisplay.getPathThemeImages() + "/icons-files/large/text.png";
217 return Liferay.ThemeDisplay.getPathThemeImages() + "/icons-files/large/file.png";