From fa7c6d69132b036fcf0a5a13a713fa8fe6c7a3ab Mon Sep 17 00:00:00 2001 From: Antelle Date: Thu, 17 Dec 2015 00:50:45 +0300 Subject: [PATCH] handlebars --- Gruntfile.js | 5 +- app/scripts/app.js | 4 +- app/scripts/helpers/cmp.js | 30 +++++++ app/scripts/helpers/ifemptyoreq.js | 7 ++ app/scripts/helpers/ifeq.js | 7 ++ app/scripts/helpers/ifneq.js | 7 ++ app/scripts/helpers/index.js | 6 ++ app/scripts/views/app-view.js | 2 +- .../views/details/details-attachment-view.js | 2 +- .../views/details/details-history-view.js | 2 +- app/scripts/views/details/details-view.js | 6 +- app/scripts/views/dropdown-view.js | 2 +- app/scripts/views/fields/field-view.js | 2 +- app/scripts/views/footer-view.js | 2 +- app/scripts/views/generator-view.js | 2 +- app/scripts/views/grp-view.js | 2 +- app/scripts/views/icon-select-view.js | 2 +- app/scripts/views/list-search-view.js | 2 +- app/scripts/views/list-view.js | 10 +-- app/scripts/views/menu/menu-item-view.js | 2 +- app/scripts/views/menu/menu-section-view.js | 2 +- app/scripts/views/menu/menu-view.js | 2 +- app/scripts/views/modal-view.js | 2 +- app/scripts/views/open-view.js | 2 +- .../views/settings/settings-about-view.js | 2 +- .../views/settings/settings-file-view.js | 2 +- .../views/settings/settings-general-view.js | 13 ++- .../views/settings/settings-help-view.js | 2 +- .../views/settings/settings-shortcuts-view.js | 2 +- app/scripts/views/settings/settings-view.js | 2 +- app/templates/{app.html => app.hbs} | 0 ...attachment.html => details-attachment.hbs} | 0 .../{details-empty.html => details-empty.hbs} | 0 .../{details-group.html => details-group.hbs} | 0 ...tails-history.html => details-history.hbs} | 0 .../details/{details.html => details.hbs} | 34 ++++---- app/templates/details/field.hbs | 9 ++ app/templates/details/field.html | 8 -- app/templates/dropdown.hbs | 8 ++ app/templates/dropdown.html | 8 -- app/templates/footer.hbs | 26 ++++++ app/templates/footer.html | 22 ----- app/templates/generator.hbs | 22 +++++ app/templates/generator.html | 22 ----- app/templates/{grp.html => grp.hbs} | 24 +++--- .../{icon-select.html => icon-select.hbs} | 20 ++--- .../{list-empty.html => list-empty.hbs} | 0 app/templates/list-item-short.hbs | 8 ++ app/templates/list-item-short.html | 5 -- app/templates/list-item-table.hbs | 14 +++ app/templates/list-item-table.html | 9 -- .../{list-search.html => list-search.hbs} | 0 .../{list-table.html => list-table.hbs} | 2 +- app/templates/{list.html => list.hbs} | 0 app/templates/menu/menu-item.hbs | 25 ++++++ app/templates/menu/menu-item.html | 25 ------ app/templates/menu/menu-section.hbs | 9 ++ app/templates/menu/menu-section.html | 8 -- app/templates/menu/{menu.html => menu.hbs} | 0 app/templates/modal.hbs | 18 ++++ app/templates/modal.html | 17 ---- app/templates/{open.html => open.hbs} | 10 +-- ...settings-about.html => settings-about.hbs} | 7 +- .../{settings-file.html => settings-file.hbs} | 51 ++++++----- ...ings-general.html => settings-general.hbs} | 86 +++++++++---------- .../{settings-help.html => settings-help.hbs} | 8 +- app/templates/settings/settings-shortcuts.hbs | 16 ++++ .../settings/settings-shortcuts.html | 16 ---- .../settings/{settings.html => settings.hbs} | 0 package.json | 3 +- 70 files changed, 377 insertions(+), 298 deletions(-) create mode 100644 app/scripts/helpers/cmp.js create mode 100644 app/scripts/helpers/ifemptyoreq.js create mode 100644 app/scripts/helpers/ifeq.js create mode 100644 app/scripts/helpers/ifneq.js create mode 100644 app/scripts/helpers/index.js rename app/templates/{app.html => app.hbs} (100%) rename app/templates/details/{details-attachment.html => details-attachment.hbs} (100%) rename app/templates/details/{details-empty.html => details-empty.hbs} (100%) rename app/templates/details/{details-group.html => details-group.hbs} (100%) rename app/templates/details/{details-history.html => details-history.hbs} (100%) rename app/templates/details/{details.html => details.hbs} (62%) create mode 100644 app/templates/details/field.hbs delete mode 100644 app/templates/details/field.html create mode 100644 app/templates/dropdown.hbs delete mode 100644 app/templates/dropdown.html create mode 100644 app/templates/footer.hbs delete mode 100644 app/templates/footer.html create mode 100644 app/templates/generator.hbs delete mode 100644 app/templates/generator.html rename app/templates/{grp.html => grp.hbs} (63%) rename app/templates/{icon-select.html => icon-select.hbs} (61%) rename app/templates/{list-empty.html => list-empty.hbs} (100%) create mode 100644 app/templates/list-item-short.hbs delete mode 100644 app/templates/list-item-short.html create mode 100644 app/templates/list-item-table.hbs delete mode 100644 app/templates/list-item-table.html rename app/templates/{list-search.html => list-search.hbs} (100%) rename app/templates/{list-table.html => list-table.hbs} (92%) rename app/templates/{list.html => list.hbs} (100%) create mode 100644 app/templates/menu/menu-item.hbs delete mode 100644 app/templates/menu/menu-item.html create mode 100644 app/templates/menu/menu-section.hbs delete mode 100644 app/templates/menu/menu-section.html rename app/templates/menu/{menu.html => menu.hbs} (100%) create mode 100644 app/templates/modal.hbs delete mode 100644 app/templates/modal.html rename app/templates/{open.html => open.hbs} (87%) rename app/templates/settings/{settings-about.html => settings-about.hbs} (92%) rename app/templates/settings/{settings-file.html => settings-file.hbs} (56%) rename app/templates/settings/{settings-general.html => settings-general.hbs} (53%) rename app/templates/settings/{settings-help.html => settings-help.hbs} (78%) create mode 100644 app/templates/settings/settings-shortcuts.hbs delete mode 100644 app/templates/settings/settings-shortcuts.html rename app/templates/settings/{settings.html => settings.hbs} (100%) diff --git a/Gruntfile.js b/Gruntfile.js index 26f4f4da..bdc97718 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -191,6 +191,7 @@ module.exports = function(grunt) { _: 'underscore/underscore-min.js', zepto: 'zepto/zepto.min.js', jquery: 'zepto/zepto.min.js', + hbs: 'handlebars/runtime.js', kdbxweb: 'kdbxweb/dist/kdbxweb.js', dropbox: 'dropbox/lib/dropbox.min.js', baron: 'baron/baron.min.js', @@ -201,7 +202,7 @@ module.exports = function(grunt) { }, module: { loaders: [ - { test: /\.html$/, loader: StringReplacePlugin.replace('ejs', { replacements: [{ + { test: /\.hbs$/, loader: StringReplacePlugin.replace('handlebars-loader', { replacements: [{ pattern: /\r?\n\s*/g, replacement: function() { return '\n'; } }]})}, @@ -254,7 +255,7 @@ module.exports = function(grunt) { debounceDelay: 500 }, scripts: { - files: ['app/scripts/**/*.js', 'app/templates/**/*.html'], + files: ['app/scripts/**/*.js', 'app/templates/**/*.hbs'], tasks: ['webpack'] }, styles: { diff --git a/app/scripts/app.js b/app/scripts/app.js index 87919020..c4800925 100644 --- a/app/scripts/app.js +++ b/app/scripts/app.js @@ -10,12 +10,12 @@ var AppModel = require('./models/app-model'), ThemeChanger = require('./util/theme-changer'); $(function() { - require('./mixins/view'); - if (location.href.indexOf('state=') >= 0) { DropboxLink.receive(); return; } + require('./mixins/view'); + require('./helpers'); KeyHandler.init(); IdleTracker.init(); diff --git a/app/scripts/helpers/cmp.js b/app/scripts/helpers/cmp.js new file mode 100644 index 00000000..373a43d2 --- /dev/null +++ b/app/scripts/helpers/cmp.js @@ -0,0 +1,30 @@ +'use strict'; + +var Handlebars = require('hbs'); + +Handlebars.registerHelper('cmp', function(lvalue, rvalue, op, options) { + var cond; + switch (op) { + case '<': + cond = lvalue < rvalue; + break; + case '>': + cond = lvalue > rvalue; + break; + case '>=': + cond = lvalue >= rvalue; + break; + case '<=': + cond = lvalue <= rvalue; + break; + case '===': + case '==': + cond = lvalue === rvalue; + break; + case '!==': + case '!=': + cond = lvalue !== rvalue; + break; + } + return cond ? options.fn(this) : options.inverse(this); +}); diff --git a/app/scripts/helpers/ifemptyoreq.js b/app/scripts/helpers/ifemptyoreq.js new file mode 100644 index 00000000..67d63852 --- /dev/null +++ b/app/scripts/helpers/ifemptyoreq.js @@ -0,0 +1,7 @@ +'use strict'; + +var Handlebars = require('hbs'); + +Handlebars.registerHelper('ifemptyoreq', function(lvalue, rvalue, options) { + return !lvalue || lvalue === rvalue ? options.fn(this) : options.inverse(this); +}); diff --git a/app/scripts/helpers/ifeq.js b/app/scripts/helpers/ifeq.js new file mode 100644 index 00000000..0b1463f5 --- /dev/null +++ b/app/scripts/helpers/ifeq.js @@ -0,0 +1,7 @@ +'use strict'; + +var Handlebars = require('hbs'); + +Handlebars.registerHelper('ifeq', function(lvalue, rvalue, options) { + return lvalue === rvalue ? options.fn(this) : options.inverse(this); +}); diff --git a/app/scripts/helpers/ifneq.js b/app/scripts/helpers/ifneq.js new file mode 100644 index 00000000..5f22729d --- /dev/null +++ b/app/scripts/helpers/ifneq.js @@ -0,0 +1,7 @@ +'use strict'; + +var Handlebars = require('hbs'); + +Handlebars.registerHelper('ifneq', function(lvalue, rvalue, options) { + return lvalue !== rvalue ? options.fn(this) : options.inverse(this); +}); diff --git a/app/scripts/helpers/index.js b/app/scripts/helpers/index.js new file mode 100644 index 00000000..2538b1dc --- /dev/null +++ b/app/scripts/helpers/index.js @@ -0,0 +1,6 @@ +'use strict'; + +require('./cmp'); +require('./ifeq'); +require('./ifneq'); +require('./ifemptyoreq'); diff --git a/app/scripts/views/app-view.js b/app/scripts/views/app-view.js index fbc23ba5..f6979077 100644 --- a/app/scripts/views/app-view.js +++ b/app/scripts/views/app-view.js @@ -22,7 +22,7 @@ var Backbone = require('backbone'), var AppView = Backbone.View.extend({ el: 'body', - template: require('templates/app.html'), + template: require('templates/app.hbs'), events: { 'contextmenu': 'contextmenu', diff --git a/app/scripts/views/details/details-attachment-view.js b/app/scripts/views/details/details-attachment-view.js index 1c0dda44..8a55759d 100644 --- a/app/scripts/views/details/details-attachment-view.js +++ b/app/scripts/views/details/details-attachment-view.js @@ -5,7 +5,7 @@ var Backbone = require('backbone'), FeatureDetector = require('../../util/feature-detector'); var DetailsAttachmentView = Backbone.View.extend({ - template: require('templates/details/details-attachment.html'), + template: require('templates/details/details-attachment.hbs'), events: { }, diff --git a/app/scripts/views/details/details-history-view.js b/app/scripts/views/details/details-history-view.js index a74edd14..8493096f 100644 --- a/app/scripts/views/details/details-history-view.js +++ b/app/scripts/views/details/details-history-view.js @@ -9,7 +9,7 @@ var Backbone = require('backbone'), FieldViewReadOnlyRaw = require('../fields/field-view-read-only-raw'); var DetailsHistoryView = Backbone.View.extend({ - template: require('templates/details/details-history.html'), + template: require('templates/details/details-history.hbs'), events: { 'click .details__history-close': 'closeHistory', diff --git a/app/scripts/views/details/details-view.js b/app/scripts/views/details/details-view.js index 3219b631..cdcdfab4 100644 --- a/app/scripts/views/details/details-view.js +++ b/app/scripts/views/details/details-view.js @@ -23,9 +23,9 @@ var Backbone = require('backbone'), kdbxweb = require('kdbxweb'); var DetailsView = Backbone.View.extend({ - template: require('templates/details/details.html'), - emptyTemplate: require('templates/details/details-empty.html'), - groupTemplate: require('templates/details/details-group.html'), + template: require('templates/details/details.hbs'), + emptyTemplate: require('templates/details/details-empty.hbs'), + groupTemplate: require('templates/details/details-group.hbs'), fieldViews: null, views: null, diff --git a/app/scripts/views/dropdown-view.js b/app/scripts/views/dropdown-view.js index 203cfb6f..8bb1c57a 100644 --- a/app/scripts/views/dropdown-view.js +++ b/app/scripts/views/dropdown-view.js @@ -3,7 +3,7 @@ var Backbone = require('backbone'); var DropdownView = Backbone.View.extend({ - template: require('templates/dropdown.html'), + template: require('templates/dropdown.hbs'), events: { 'click .dropdown__item': 'itemClick' diff --git a/app/scripts/views/fields/field-view.js b/app/scripts/views/fields/field-view.js index b2a1f674..4ba004e7 100644 --- a/app/scripts/views/fields/field-view.js +++ b/app/scripts/views/fields/field-view.js @@ -5,7 +5,7 @@ var Backbone = require('backbone'), CopyPaste = require('../../comp/copy-paste'); var FieldView = Backbone.View.extend({ - template: require('templates/details/field.html'), + template: require('templates/details/field.hbs'), events: { 'click .details__field-label': 'fieldLabelClick', diff --git a/app/scripts/views/footer-view.js b/app/scripts/views/footer-view.js index 409a8d33..49e10bec 100644 --- a/app/scripts/views/footer-view.js +++ b/app/scripts/views/footer-view.js @@ -7,7 +7,7 @@ var Backbone = require('backbone'), UpdateModel = require('../models/update-model'); var FooterView = Backbone.View.extend({ - template: require('templates/footer.html'), + template: require('templates/footer.hbs'), events: { 'click .footer__db-item': 'showFile', diff --git a/app/scripts/views/generator-view.js b/app/scripts/views/generator-view.js index 668da440..62a46169 100644 --- a/app/scripts/views/generator-view.js +++ b/app/scripts/views/generator-view.js @@ -11,7 +11,7 @@ var DefaultGenOpts = { var GeneratorView = Backbone.View.extend({ el: 'body', - template: require('templates/generator.html'), + template: require('templates/generator.hbs'), events: { 'click': 'click', diff --git a/app/scripts/views/grp-view.js b/app/scripts/views/grp-view.js index c8eafe31..0b163946 100644 --- a/app/scripts/views/grp-view.js +++ b/app/scripts/views/grp-view.js @@ -6,7 +6,7 @@ var Backbone = require('backbone'), baron = require('baron'); var GrpView = Backbone.View.extend({ - template: require('templates/grp.html'), + template: require('templates/grp.hbs'), events: { 'click .grp__icon': 'showIconsSelect', diff --git a/app/scripts/views/icon-select-view.js b/app/scripts/views/icon-select-view.js index d18d085c..7be076fb 100644 --- a/app/scripts/views/icon-select-view.js +++ b/app/scripts/views/icon-select-view.js @@ -8,7 +8,7 @@ var Backbone = require('backbone'), var logger = new Logger('icon-select-view'); var IconSelectView = Backbone.View.extend({ - template: require('templates/icon-select.html'), + template: require('templates/icon-select.hbs'), events: { 'click .icon-select__icon': 'iconClick', diff --git a/app/scripts/views/list-search-view.js b/app/scripts/views/list-search-view.js index 45c9b603..6f0e5529 100644 --- a/app/scripts/views/list-search-view.js +++ b/app/scripts/views/list-search-view.js @@ -7,7 +7,7 @@ var Backbone = require('backbone'), FeatureDetector = require('../util/feature-detector'); var ListSearchView = Backbone.View.extend({ - template: require('templates/list-search.html'), + template: require('templates/list-search.hbs'), events: { 'keydown .list__search-field': 'inputKeyDown', diff --git a/app/scripts/views/list-view.js b/app/scripts/views/list-view.js index 3557ab0f..bd1dbc87 100644 --- a/app/scripts/views/list-view.js +++ b/app/scripts/views/list-view.js @@ -10,8 +10,8 @@ var Backbone = require('backbone'), baron = require('baron'); var ListView = Backbone.View.extend({ - template: require('templates/list.html'), - emptyTemplate: require('templates/list-empty.html'), + template: require('templates/list.hbs'), + emptyTemplate: require('templates/list-empty.hbs'), events: { 'click .list__item': 'itemClick', @@ -84,7 +84,7 @@ var ListView = Backbone.View.extend({ getItemsTemplate: function() { if (this.model.settings.get('tableView')) { - return require('templates/list-table.html'); + return require('templates/list-table.hbs'); } else { return this.renderPlainItems; } @@ -96,9 +96,9 @@ var ListView = Backbone.View.extend({ getItemTemplate: function() { if (this.model.settings.get('tableView')) { - return require('templates/list-item-table.html'); + return require('templates/list-item-table.hbs'); } else { - return require('templates/list-item-short.html'); + return require('templates/list-item-short.hbs'); } }, diff --git a/app/scripts/views/menu/menu-item-view.js b/app/scripts/views/menu/menu-item-view.js index e24be358..d4eeb782 100644 --- a/app/scripts/views/menu/menu-item-view.js +++ b/app/scripts/views/menu/menu-item-view.js @@ -7,7 +7,7 @@ var Backbone = require('backbone'), DragDropInfo = require('../../comp/drag-drop-info'); var MenuItemView = Backbone.View.extend({ - template: require('templates/menu/menu-item.html'), + template: require('templates/menu/menu-item.hbs'), events: { 'mouseover': 'mouseover', diff --git a/app/scripts/views/menu/menu-section-view.js b/app/scripts/views/menu/menu-section-view.js index a76eb4f8..a3a930f9 100644 --- a/app/scripts/views/menu/menu-section-view.js +++ b/app/scripts/views/menu/menu-section-view.js @@ -8,7 +8,7 @@ var Backbone = require('backbone'), baron = require('baron'); var MenuSectionView = Backbone.View.extend({ - template: require('templates/menu/menu-section.html'), + template: require('templates/menu/menu-section.hbs'), events: {}, diff --git a/app/scripts/views/menu/menu-view.js b/app/scripts/views/menu/menu-view.js index c4ebaa2f..74740390 100644 --- a/app/scripts/views/menu/menu-view.js +++ b/app/scripts/views/menu/menu-view.js @@ -7,7 +7,7 @@ var Backbone = require('backbone'), AppSettingsModel = require('../../models/app-settings-model'); var MenuView = Backbone.View.extend({ - template: require('templates/menu/menu.html'), + template: require('templates/menu/menu.hbs'), events: {}, diff --git a/app/scripts/views/modal-view.js b/app/scripts/views/modal-view.js index 3d20ffc1..787e9a85 100644 --- a/app/scripts/views/modal-view.js +++ b/app/scripts/views/modal-view.js @@ -7,7 +7,7 @@ var Backbone = require('backbone'), var ModalView = Backbone.View.extend({ el: 'body', - template: require('templates/modal.html'), + template: require('templates/modal.hbs'), events: { 'click .modal__buttons button': 'buttonClick', diff --git a/app/scripts/views/open-view.js b/app/scripts/views/open-view.js index 8dd1a1a4..5ca1b8de 100644 --- a/app/scripts/views/open-view.js +++ b/app/scripts/views/open-view.js @@ -10,7 +10,7 @@ var Backbone = require('backbone'), var logger = new Logger('open-view'); var OpenView = Backbone.View.extend({ - template: require('templates/open.html'), + template: require('templates/open.hbs'), events: { 'change .open__file-ctrl': 'fileSelected', diff --git a/app/scripts/views/settings/settings-about-view.js b/app/scripts/views/settings/settings-about-view.js index ac7152a0..fd4e9324 100644 --- a/app/scripts/views/settings/settings-about-view.js +++ b/app/scripts/views/settings/settings-about-view.js @@ -5,7 +5,7 @@ var Backbone = require('backbone'), Links = require('../../const/links'); var SettingsAboutView = Backbone.View.extend({ - template: require('templates/settings/settings-about.html'), + template: require('templates/settings/settings-about.hbs'), render: function() { this.renderTemplate({ diff --git a/app/scripts/views/settings/settings-file-view.js b/app/scripts/views/settings/settings-file-view.js index 0c0755e6..300aee04 100644 --- a/app/scripts/views/settings/settings-file-view.js +++ b/app/scripts/views/settings/settings-file-view.js @@ -13,7 +13,7 @@ var Backbone = require('backbone'), FileSaver = require('filesaver'); var SettingsAboutView = Backbone.View.extend({ - template: require('templates/settings/settings-file.html'), + template: require('templates/settings/settings-file.hbs'), events: { 'click .settings__file-button-save-default': 'saveDefault', diff --git a/app/scripts/views/settings/settings-general-view.js b/app/scripts/views/settings/settings-general-view.js index a6e61c35..6b2be206 100644 --- a/app/scripts/views/settings/settings-general-view.js +++ b/app/scripts/views/settings/settings-general-view.js @@ -11,7 +11,7 @@ var Backbone = require('backbone'), Links = require('../../const/links'); var SettingsGeneralView = Backbone.View.extend({ - template: require('templates/settings/settings-general.html'), + template: require('templates/settings/settings-general.hbs'), events: { 'change .settings__general-theme': 'changeTheme', @@ -43,6 +43,9 @@ var SettingsGeneralView = Backbone.View.extend({ }, render: function() { + var updateReady = UpdateModel.instance.get('updateStatus') === 'ready', + updateFound = UpdateModel.instance.get('updateStatus') === 'found', + updateManual = UpdateModel.instance.get('updateManual'); this.renderTemplate({ themes: this.allThemes, activeTheme: AppSettingsModel.instance.get('theme'), @@ -61,9 +64,11 @@ var SettingsGeneralView = Backbone.View.extend({ autoUpdate: Updater.getAutoUpdateType(), updateInProgress: Updater.updateInProgress(), updateInfo: this.getUpdateInfo(), - updateReady: UpdateModel.instance.get('updateStatus') === 'ready', - updateFound: UpdateModel.instance.get('updateStatus') === 'found', - updateManual: UpdateModel.instance.get('updateManual'), + updateWaitingReload: updateReady && !Launcher, + showUpdateBlock: Launcher && !updateManual, + updateReady: updateReady, + updateFound: updateFound, + updateManual: updateManual, releaseNotesLink: Links.ReleaseNotes, colorfulIcons: AppSettingsModel.instance.get('colorfulIcons') }); diff --git a/app/scripts/views/settings/settings-help-view.js b/app/scripts/views/settings/settings-help-view.js index dac1efe0..d104aec3 100644 --- a/app/scripts/views/settings/settings-help-view.js +++ b/app/scripts/views/settings/settings-help-view.js @@ -5,7 +5,7 @@ var Backbone = require('backbone'), Links = require('../../const/links'); var SettingsHelpView = Backbone.View.extend({ - template: require('templates/settings/settings-help.html'), + template: require('templates/settings/settings-help.hbs'), render: function() { var appInfo = 'KeeWeb v' + RuntimeInfo.version + ' (' + RuntimeInfo.commit + ', ' + RuntimeInfo.buildDate + ')\n' + diff --git a/app/scripts/views/settings/settings-shortcuts-view.js b/app/scripts/views/settings/settings-shortcuts-view.js index 0599783a..ba46b210 100644 --- a/app/scripts/views/settings/settings-shortcuts-view.js +++ b/app/scripts/views/settings/settings-shortcuts-view.js @@ -4,7 +4,7 @@ var Backbone = require('backbone'), FeatureDetector = require('../../util/feature-detector'); var SettingsShortcutsView = Backbone.View.extend({ - template: require('templates/settings/settings-shortcuts.html'), + template: require('templates/settings/settings-shortcuts.hbs'), render: function() { this.renderTemplate({ diff --git a/app/scripts/views/settings/settings-view.js b/app/scripts/views/settings/settings-view.js index 5ada9004..bf1da8f1 100644 --- a/app/scripts/views/settings/settings-view.js +++ b/app/scripts/views/settings/settings-view.js @@ -7,7 +7,7 @@ var Backbone = require('backbone'), baron = require('baron'); var SettingsView = Backbone.View.extend({ - template: require('templates/settings/settings.html'), + template: require('templates/settings/settings.hbs'), views: null, diff --git a/app/templates/app.html b/app/templates/app.hbs similarity index 100% rename from app/templates/app.html rename to app/templates/app.hbs diff --git a/app/templates/details/details-attachment.html b/app/templates/details/details-attachment.hbs similarity index 100% rename from app/templates/details/details-attachment.html rename to app/templates/details/details-attachment.hbs diff --git a/app/templates/details/details-empty.html b/app/templates/details/details-empty.hbs similarity index 100% rename from app/templates/details/details-empty.html rename to app/templates/details/details-empty.hbs diff --git a/app/templates/details/details-group.html b/app/templates/details/details-group.hbs similarity index 100% rename from app/templates/details/details-group.html rename to app/templates/details/details-group.hbs diff --git a/app/templates/details/details-history.html b/app/templates/details/details-history.hbs similarity index 100% rename from app/templates/details/details-history.html rename to app/templates/details/details-history.hbs diff --git a/app/templates/details/details.html b/app/templates/details/details.hbs similarity index 62% rename from app/templates/details/details.html rename to app/templates/details/details.hbs index cbe87763..97b1bd88 100644 --- a/app/templates/details/details.html +++ b/app/templates/details/details.hbs @@ -13,12 +13,12 @@ -

<%- title || '(no title)' %>

- <% if (customIcon) { %> -
- <% } else { %> - - <% } %> +

{{#if title}}{{title}}{{else}}(no title){{/if}}

+ {{#if customIcon}} +
+ {{else}} + + {{/if}}
@@ -30,17 +30,19 @@
- <% if (deleted) { %> - <% } else { %><% } %> + {{#if deleted~}} + + {{~else~}} + + {{~/if~}}
- <% attachments.forEach(function(attachment, ix) { %> -
<%- attachment.title %>
- <% }); %> - <% if (!attachments.length) { %> -
- drag attachments here -
- <% } %> + {{#each attachments as |attachment ix|}} +
{{attachment.title}}
+ {{else}} +
+ drag attachments here +
+ {{/each}}
diff --git a/app/templates/details/field.hbs b/app/templates/details/field.hbs new file mode 100644 index 00000000..4ca8ce4d --- /dev/null +++ b/app/templates/details/field.hbs @@ -0,0 +1,9 @@ +
+
{{title}}
+
+
+
diff --git a/app/templates/details/field.html b/app/templates/details/field.html deleted file mode 100644 index 804a3867..00000000 --- a/app/templates/details/field.html +++ /dev/null @@ -1,8 +0,0 @@ -
-
<%- title %>
-
-
-
\ No newline at end of file diff --git a/app/templates/dropdown.hbs b/app/templates/dropdown.hbs new file mode 100644 index 00000000..235ee6fc --- /dev/null +++ b/app/templates/dropdown.hbs @@ -0,0 +1,8 @@ + diff --git a/app/templates/dropdown.html b/app/templates/dropdown.html deleted file mode 100644 index 513ee732..00000000 --- a/app/templates/dropdown.html +++ /dev/null @@ -1,8 +0,0 @@ - \ No newline at end of file diff --git a/app/templates/footer.hbs b/app/templates/footer.hbs new file mode 100644 index 00000000..8c0aa233 --- /dev/null +++ b/app/templates/footer.hbs @@ -0,0 +1,26 @@ + diff --git a/app/templates/footer.html b/app/templates/footer.html deleted file mode 100644 index 86222d64..00000000 --- a/app/templates/footer.html +++ /dev/null @@ -1,22 +0,0 @@ - diff --git a/app/templates/generator.hbs b/app/templates/generator.hbs new file mode 100644 index 00000000..7c4afaee --- /dev/null +++ b/app/templates/generator.hbs @@ -0,0 +1,22 @@ +
+
Length: {{opt.length}}
+ +
+
+
+
+
+
+
+
+
+
password
+
+
diff --git a/app/templates/generator.html b/app/templates/generator.html deleted file mode 100644 index eea3361c..00000000 --- a/app/templates/generator.html +++ /dev/null @@ -1,22 +0,0 @@ -
-
Length: <%= opt.length %>
- -
-
>
-
>
-
>
-
>
-
>
-
>
-
>
-
-
password
-
-
diff --git a/app/templates/grp.html b/app/templates/grp.hbs similarity index 63% rename from app/templates/grp.html rename to app/templates/grp.hbs index bcce46ba..be6724ae 100644 --- a/app/templates/grp.html +++ b/app/templates/grp.hbs @@ -6,27 +6,27 @@

Group

- /> +
- <% if (!readonly) { %> + {{#unless readonly}}
- /> +
- <% } %> + {{/unless}} - <% if (customIcon) { %> - - <% } else { %> - - <% } %> + {{#if customIcon}} + + {{else}} + + {{/if}}
- <% if (!readonly) { %> + {{#unless readonly}}
- <% } %> + {{/unless}}
diff --git a/app/templates/icon-select.html b/app/templates/icon-select.hbs similarity index 61% rename from app/templates/icon-select.html rename to app/templates/icon-select.hbs index f73db905..f24359ca 100644 --- a/app/templates/icon-select.html +++ b/app/templates/icon-select.hbs @@ -1,26 +1,26 @@
- <% icons.forEach(function(icon, ix) { %> - - <% }); %> + {{#each icons as |icon ix|}} + + {{/each}}
- <% if (canDownloadFavicon) { %> + {{#if canDownloadFavicon}} - <% } %> + {{/if}} - <% Object.keys(customIcons).forEach(function(ci) { %> - - + {{#each customIcons as |icon ci|}} + + - <% }); %> + {{/each}}
diff --git a/app/templates/list-empty.html b/app/templates/list-empty.hbs similarity index 100% rename from app/templates/list-empty.html rename to app/templates/list-empty.hbs diff --git a/app/templates/list-item-short.hbs b/app/templates/list-item-short.hbs new file mode 100644 index 00000000..03368d76 --- /dev/null +++ b/app/templates/list-item-short.hbs @@ -0,0 +1,8 @@ +
+ {{#if customIcon~}} + + {{~else~}} + + {{~/if}} + {{#if title}}{{title}}{{else}}(no title){{/if}}{{description}} +
diff --git a/app/templates/list-item-short.html b/app/templates/list-item-short.html deleted file mode 100644 index bdfc93a0..00000000 --- a/app/templates/list-item-short.html +++ /dev/null @@ -1,5 +0,0 @@ -
- <% if (customIcon) { %><% } - else { %><% } %> - <%- title || '(no title)' %><%- description %> -
diff --git a/app/templates/list-item-table.hbs b/app/templates/list-item-table.hbs new file mode 100644 index 00000000..206f75f3 --- /dev/null +++ b/app/templates/list-item-table.hbs @@ -0,0 +1,14 @@ + + + {{~#if customIcon~}} + + {{~else~}} + + {{~/if~}} + + {{#if title}}{{title}}{{else}}(no title){{/if}} + {{user}} + {{url}} + {{tags}} + {{notes}} + diff --git a/app/templates/list-item-table.html b/app/templates/list-item-table.html deleted file mode 100644 index 60e4520e..00000000 --- a/app/templates/list-item-table.html +++ /dev/null @@ -1,9 +0,0 @@ - - <% if (customIcon) { %><% } - else { %><% } %> - <%- title || '(no title)' %> - <%- user %> - <%- url %> - <%- tags %> - <%- notes %> - diff --git a/app/templates/list-search.html b/app/templates/list-search.hbs similarity index 100% rename from app/templates/list-search.html rename to app/templates/list-search.hbs diff --git a/app/templates/list-table.html b/app/templates/list-table.hbs similarity index 92% rename from app/templates/list-table.html rename to app/templates/list-table.hbs index 434aa541..a4017324 100644 --- a/app/templates/list-table.html +++ b/app/templates/list-table.hbs @@ -10,6 +10,6 @@ - <%= items %> + {{{items}}} diff --git a/app/templates/list.html b/app/templates/list.hbs similarity index 100% rename from app/templates/list.html rename to app/templates/list.hbs diff --git a/app/templates/menu/menu-item.hbs b/app/templates/menu/menu-item.hbs new file mode 100644 index 00000000..c0ec55ba --- /dev/null +++ b/app/templates/menu/menu-item.hbs @@ -0,0 +1,25 @@ + diff --git a/app/templates/menu/menu-item.html b/app/templates/menu/menu-item.html deleted file mode 100644 index 6be5ebb5..00000000 --- a/app/templates/menu/menu-item.html +++ /dev/null @@ -1,25 +0,0 @@ - diff --git a/app/templates/menu/menu-section.hbs b/app/templates/menu/menu-section.hbs new file mode 100644 index 00000000..cbcf0411 --- /dev/null +++ b/app/templates/menu/menu-section.hbs @@ -0,0 +1,9 @@ + diff --git a/app/templates/menu/menu-section.html b/app/templates/menu/menu-section.html deleted file mode 100644 index 41445d05..00000000 --- a/app/templates/menu/menu-section.html +++ /dev/null @@ -1,8 +0,0 @@ - \ No newline at end of file diff --git a/app/templates/menu/menu.html b/app/templates/menu/menu.hbs similarity index 100% rename from app/templates/menu/menu.html rename to app/templates/menu/menu.hbs diff --git a/app/templates/modal.hbs b/app/templates/modal.hbs new file mode 100644 index 00000000..60ea3a96 --- /dev/null +++ b/app/templates/modal.hbs @@ -0,0 +1,18 @@ + diff --git a/app/templates/modal.html b/app/templates/modal.html deleted file mode 100644 index 1bfcf863..00000000 --- a/app/templates/modal.html +++ /dev/null @@ -1,17 +0,0 @@ - diff --git a/app/templates/open.html b/app/templates/open.hbs similarity index 87% rename from app/templates/open.html rename to app/templates/open.hbs index 220e1761..de8c4fcf 100644 --- a/app/templates/open.html +++ b/app/templates/open.hbs @@ -36,13 +36,13 @@
- <% lastOpenFiles.forEach(function(file) { %> -
- - <%- file.name %> + {{#each lastOpenFiles as |file|}} +
+ + {{file.name}}
- <% }); %> + {{/each}}
diff --git a/app/templates/settings/settings-about.html b/app/templates/settings/settings-about.hbs similarity index 92% rename from app/templates/settings/settings-about.html rename to app/templates/settings/settings-about.hbs index b5fda0bd..8e7c1979 100644 --- a/app/templates/settings/settings-about.html +++ b/app/templates/settings/settings-about.hbs @@ -1,8 +1,8 @@
-

About KeeWeb v<%= version %>

+

About KeeWeb v{{version}}

This is an open-source app created by Antelle and licensed under - MIT. - The source code and issues are on GitHub .

+ MIT. + The source code and issues are on GitHub .

This app is built with these awesome tools:

Libraries

    @@ -11,6 +11,7 @@
  • underscore, utility-belt library for JavaScript
  • zepto.js, a minimalist JavaScript library for modern browsers, with a jQuery-compatible API
  • +
  • handlebars, semantic templates
  • dropbox-js, unofficial JavaScript library for the Dropbox Core API
diff --git a/app/templates/settings/settings-file.html b/app/templates/settings/settings-file.hbs similarity index 56% rename from app/templates/settings/settings-file.html rename to app/templates/settings/settings-file.hbs index c09edf98..f96c12a7 100644 --- a/app/templates/settings/settings-file.html +++ b/app/templates/settings/settings-file.hbs @@ -1,32 +1,29 @@
-

<%- name %>

- <% if (storage) { %> - <% if (storage === 'file') { %> -

File path: <%- path %>

- <% } else if (storage === 'dropbox') { %> -

This file is opened from Dropbox.

- <% } %> - <% } else { %> +

{{name}}

+ {{#if storage}} + {{#ifeq storage 'file'}}

File path: {{path}}

{{/ifeq}} + {{#ifeq storage 'dropbox'}}

This file is opened from Dropbox.

{{/ifeq}} + {{else}}

This file is stored in internal app storage.

- <% if (!supportFiles) { %> -

Want to work seamlessly with local files? Download a desktop app

- <% } %> - <% } %> + {{#unless supportFiles}} +

Want to work seamlessly with local files? Download a desktop app

+ {{/unless}} + {{/if}}
- <% if (!storage || storage === 'file') { %><% } %> - - <% if (storage !== 'file') { %><% } %> + {{#ifemptyoreq storage 'file'}}{{/ifemptyoreq}} + + {{#ifneq storage 'file'}}{{/ifneq}}
- <% if (storage) { %> + {{#if storage}}

Sync

-
Last sync: <%= syncDate || 'unknown' %> <%= syncing ? '(sync in progress...)' : '' %>
- <% if (syncError) { %>
Sync error: <%- syncError %>
<% } %> - <% } %> +
Last sync: {{#if syncDate}}{{syncDate}}{{else}}unknown{{/if}} {{#if syncing}}(sync in progress...){{/if}}
+ {{#if syncError}}
Sync error: {{syncError}}
{{/if}} + {{/if}}

Settings

- + Select a key file @@ -42,21 +39,21 @@

Names

- + - +

History

- /> + />
- + - +

Advanced

- +
diff --git a/app/templates/settings/settings-general.html b/app/templates/settings/settings-general.hbs similarity index 53% rename from app/templates/settings/settings-general.html rename to app/templates/settings/settings-general.hbs index 7bbb1856..582be044 100644 --- a/app/templates/settings/settings-general.html +++ b/app/templates/settings/settings-general.hbs @@ -1,109 +1,109 @@

General Settings

- <% if (updateReady && !canAutoUpdate) { %> + {{#if updateWaitingReload}}

Update

-
New app version was released and downloaded. View release notes
+
New app version was released and downloaded. View release notes
- <% } else if (updateManual) { %> + {{else if updateManual}}

Update

New version has been released. It will check for updates and install them automatically but auto-upgrading from your version is impossible.
- <% } %> - <% if (canAutoUpdate && !updateManual) { %> + {{/if}} + {{#if showUpdateBlock}}

Update

-
<%- updateInfo %>
- View release notes +
{{updateInfo}}
+ View release notes
- <% if (updateInProgress) { %> + {{#if updateInProgress}} - <% } else { %> + {{else}} - <% } %> - <% if (updateReady) { %><% } %> - <% if (updateFound) { %><% } %> + {{/if}} + {{#if updateReady}}{{/if}} + {{#if updateFound}}{{/if}}
- <% } %> + {{/if}}

Appearance

- /> +
- <% if (canSetTableView) { %> + {{#if canSetTableView}}
- /> +
- <% } %> + {{/if}}
- /> +

Function

/> + {{#if autoSave}}checked{{/if}} />
- <% if (canClearClipboard) { %> + {{#if canClearClipboard}}
- <% } %> - <% if (canMinimize) { %> + {{/if}} + {{#if canMinimize}}
/> + {{#if minimizeOnClose}}checked{{/if}} />
/> + {{#if lockOnMinimize}}checked{{/if}} />
- <% } %> + {{/if}} - <% if (devTools) { %> + {{#if devTools}}

Advanced

Show dev tools - <% } %> + {{/if}}
diff --git a/app/templates/settings/settings-help.html b/app/templates/settings/settings-help.hbs similarity index 78% rename from app/templates/settings/settings-help.html rename to app/templates/settings/settings-help.hbs index 834022c9..c2141d8f 100644 --- a/app/templates/settings/settings-help.html +++ b/app/templates/settings/settings-help.hbs @@ -6,18 +6,18 @@ The file format is 100% compatible and should be understood by both apps.

Problems?

-

If something goes wrong, please, open an issue on GitHub +

If something goes wrong, please, open an issue on GitHub or contact a developer directly.

App information:

-
<%= appInfo %>
+
{{appInfo}}

Other platforms

Updates

diff --git a/app/templates/settings/settings-shortcuts.hbs b/app/templates/settings/settings-shortcuts.hbs new file mode 100644 index 00000000..4db7be4c --- /dev/null +++ b/app/templates/settings/settings-shortcuts.hbs @@ -0,0 +1,16 @@ +
+

Shortcuts

+
{{{cmd}}}A or {{{alt}}}A show all items
+
{{{alt}}}C show items with colors
+
{{{alt}}}D go to trash
+
{{{cmd}}}F search, or just start typing
+
esc clear search
+
go to entry
+
{{{cmd}}}C copy password or selected field
+
go to previous item
+
go to next item
+
{{{alt}}}N create entry
+
{{{cmd}}}O open / new
+
{{{cmd}}}S save
+
{{{cmd}}}G generate
+
diff --git a/app/templates/settings/settings-shortcuts.html b/app/templates/settings/settings-shortcuts.html deleted file mode 100644 index 72cb1508..00000000 --- a/app/templates/settings/settings-shortcuts.html +++ /dev/null @@ -1,16 +0,0 @@ -
-

Shortcuts

-
<%= cmd %>A or <%= alt %>A show all items
-
<%= alt %>C show items with colors
-
<%= alt %>D go to trash
-
<%= cmd %>F search, or just start typing
-
esc clear search
-
go to entry
-
<%= cmd %>C copy password or selected field
-
go to previous item
-
go to next item
-
<%= alt %>N create entry
-
<%= cmd %>O open / new
-
<%= cmd %>S save
-
<%= cmd %>G generate
-
diff --git a/app/templates/settings/settings.html b/app/templates/settings/settings.hbs similarity index 100% rename from app/templates/settings/settings.html rename to app/templates/settings/settings.hbs diff --git a/package.json b/package.json index 50e1c7e0..8f36afb0 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,6 @@ "devDependencies": { "base64-loader": "^1.0.0", "cssnano": "^3.3.2", - "ejs-loader": "^0.2.1", "electron-builder": "^2.1.1", "exports-loader": "^0.6.2", "grunt": "^0.4.5", @@ -27,6 +26,8 @@ "grunt-sass": "^1.1.0", "grunt-string-replace": "^1.2.0", "grunt-webpack": "^1.0.11", + "handlebars": "^4.0.5", + "handlebars-loader": "^1.1.4", "load-grunt-tasks": "^3.2.0", "string-replace-webpack-plugin": "0.0.2", "time-grunt": "^1.2.1",