diff options
Diffstat (limited to 'js/exporters/exporter-csv.js')
-rw-r--r-- | js/exporters/exporter-csv.js | 73 |
1 files changed, 42 insertions, 31 deletions
diff --git a/js/exporters/exporter-csv.js b/js/exporters/exporter-csv.js index 99494943..70ec4740 100644 --- a/js/exporters/exporter-csv.js +++ b/js/exporters/exporter-csv.js @@ -26,41 +26,52 @@ PassmanExporter.csv = { info: { name: 'CSV', id: 'csv', - description: 'Export credentials as csv.' + description: 'Export credentials as a csv file.' } }; -PassmanExporter.csv.export = function (credentials) { +PassmanExporter.csv.export = function (credentials, FileService, EncryptService) { /** global: C_Promise */ return new C_Promise(function () { - var _this = this; - var headers = ['label', 'username', 'password', 'email', 'description', 'tags', 'url']; - var file_data = '"' + headers.join('","') + '"\n'; - for (var i = 0; i < credentials.length; i++) { - var _credential = credentials[i]; - var row_data = []; - for (var h = 0; h < headers.length; h++) { - var field = headers[h]; - if (field === 'tags') { - var _tags = []; - for (var t = 0; t < _credential[field].length; t++) { - _tags.push(_credential[field][t].text); - } - var data = '[' + _tags.join(",") + ']'; - row_data.push('"' + data + '"'); - } else { - row_data.push('"' + _credential[field] + '"'); - } - } - var progress = { - percent: i / credentials.length * 100, - loaded: i, - total: credentials.length - }; - _this.call_progress(progress); - file_data += row_data.join(',') + "\n"; - } - _this.call_then(); - download(file_data, 'passman-export.csv'); + PassmanExporter.getCredentialsWithFiles(credentials, FileService, EncryptService).then((function(){ + var headers = ['label', 'username', 'password', 'email', 'description', 'tags', 'url', 'custom_fields', 'files']; + var file_data = '"' + headers.join('","') + '"\n'; + for (var i = 0; i < credentials.length; i++) { + var _credential = credentials[i]; + var row_data = []; + for (var h = 0; h < headers.length; h++) { + var field = headers[h]; + if (field === 'tags') { + var _tags = []; + for (var t = 0; t < _credential[field].length; t++) { + _tags.push(_credential[field][t].text); + } + var tag_data = '[' + _tags.join(",") + ']'; + row_data.push('"' + tag_data + '"'); + } + else if (field == 'custom_fields' || field == 'files') { + var _fields = JSON.stringify(_credential[field]); + _fields = _fields.replaceAll('"', '""'); + row_data.push('"' + _fields + '"'); + } + else { + row_data.push('"' + _credential[field] + '"'); + } + } + var progress = { + percent: i / credentials.length * 100, + loaded: i, + total: credentials.length + }; + this.call_progress(progress); + file_data += row_data.join(',') + "\n"; + } + this.call_then(); + download(file_data, 'passman-export.csv'); + }).bind(this)).progress(function() { + + }); + + }); }; |