From 56a05c81857f00964afbd9cdf95ce0288e5e4454 Mon Sep 17 00:00:00 2001 From: Antelle Date: Sun, 18 Oct 2015 17:02:00 +0300 Subject: [PATCH] save to binary and xml --- TODO.md | 1 - app/scripts/models/file-model.js | 8 +++++ app/scripts/views/app-view.js | 4 +-- .../views/settings/settings-file-view.js | 32 +++++++++++++++++-- app/templates/settings/settings-file.html | 9 +++++- bower.json | 2 +- 6 files changed, 49 insertions(+), 7 deletions(-) diff --git a/TODO.md b/TODO.md index 6724aabe..5a56f70c 100644 --- a/TODO.md +++ b/TODO.md @@ -2,7 +2,6 @@ - [ ] add/edit groups - [ ] dropbox -- [ ] save+xml - [ ] generate - [ ] tags autocomplete - [ ] file settings diff --git a/app/scripts/models/file-model.js b/app/scripts/models/file-model.js index 1953f057..d2029f74 100644 --- a/app/scripts/models/file-model.js +++ b/app/scripts/models/file-model.js @@ -126,6 +126,14 @@ var FileModel = Backbone.Model.extend({ if (!this.get('demo')) { this.set('modified', true); } + }, + + getData: function() { + return this.db.save(); + }, + + getXml: function() { + return this.db.saveXml(); } }); diff --git a/app/scripts/views/app-view.js b/app/scripts/views/app-view.js index 9311b174..8dea74c9 100644 --- a/app/scripts/views/app-view.js +++ b/app/scripts/views/app-view.js @@ -137,7 +137,7 @@ var AppView = Backbone.View.extend({ return item.get('file').cid === e.fileId; }); if (this.views.settings) { - if (!this.views.settings.file || this.views.settings.file === menuItem.get('file')) { + if (this.views.settings.file === menuItem.get('file')) { this.showEntries(); } else { this.model.menu.select({ item: menuItem }); @@ -186,7 +186,7 @@ var AppView = Backbone.View.extend({ }, saveAll: function() { - Alerts.notImplemented(); + this.showFileSettings({ fileId: this.model.files.first().cid }); }, toggleSettings: function() { diff --git a/app/scripts/views/settings/settings-file-view.js b/app/scripts/views/settings/settings-file-view.js index 4c639f69..077ce706 100644 --- a/app/scripts/views/settings/settings-file-view.js +++ b/app/scripts/views/settings/settings-file-view.js @@ -1,12 +1,40 @@ 'use strict'; -var Backbone = require('backbone'); +var Backbone = require('backbone'), + FeatureDetector = require('../../util/feature-detector'), + Alerts = require('../../util/alerts'), + FileSaver = require('filesaver'); var SettingsAboutView = Backbone.View.extend({ template: require('templates/settings/settings-file.html'), + events: { + 'click .settings__file-button-save-file': 'saveToFile', + 'click .settings__file-button-export-xml': 'exportAsXml', + 'click .settings__file-button-save-dropbox': 'saveToDropbox' + }, + render: function() { - this.renderTemplate(this.model); + this.renderTemplate({ + file: this.model, + cmd: FeatureDetector.actionShortcutSymbol(true) + }); + }, + + saveToFile: function() { + var data = this.model.getData(); + var blob = new Blob([data], {type: 'application/octet-stream'}); + FileSaver.saveAs(blob, this.model.get('name') + '.kdbx'); + }, + + exportAsXml: function() { + var data = this.model.getXml(); + var blob = new Blob([data], {type: 'text/xml'}); + FileSaver.saveAs(blob, this.model.get('name') + '.xml'); + }, + + saveToDropbox: function() { + Alerts.notImplemented(); } }); diff --git a/app/templates/settings/settings-file.html b/app/templates/settings/settings-file.html index 86ffabaa..5cacd5e7 100644 --- a/app/templates/settings/settings-file.html +++ b/app/templates/settings/settings-file.html @@ -1 +1,8 @@ -

<%- get('name') %>

+

<%- file.get('name') %>

+

This database is opened as local file. To enable auto-save and saving with shortcut <%= cmd %>S, +please, save it to Dropbox.

+
+ + + +
diff --git a/bower.json b/bower.json index 387ceef7..9269093c 100644 --- a/bower.json +++ b/bower.json @@ -29,7 +29,7 @@ "dropbox": "antelle/dropbox-js#0.10.3", "font-awesome": "~4.4.0", "install": "~1.0.4", - "kdbxweb": "~0.1.7", + "kdbxweb": "~0.1.8", "normalize.css": "~3.0.3", "pikaday": "~1.3.3", "zepto": "~1.1.6",