Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/passman.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'js/exporters/exporter-csv.js')
-rw-r--r--js/exporters/exporter-csv.js73
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() {
+
+ });
+
+
});
};