diff --git a/app/assets/javascripts/app/frontend/controllers/home.js b/app/assets/javascripts/app/frontend/controllers/home.js index 79880660d..ea70d15e6 100644 --- a/app/assets/javascripts/app/frontend/controllers/home.js +++ b/app/assets/javascripts/app/frontend/controllers/home.js @@ -29,6 +29,7 @@ angular.module('app.frontend') modelManager.createRelationshipBetweenItems(note, tag); } + note.setDirty(true); syncManager.sync(); } diff --git a/app/assets/javascripts/app/frontend/models/api/item.js b/app/assets/javascripts/app/frontend/models/api/item.js index d486f9739..4cc38b8fc 100644 --- a/app/assets/javascripts/app/frontend/models/api/item.js +++ b/app/assets/javascripts/app/frontend/models/api/item.js @@ -37,7 +37,7 @@ class Item { updateFromJSON(json) { _.merge(this, json); - + if(this.created_at) { this.created_at = new Date(this.created_at); this.updated_at = new Date(this.updated_at); @@ -113,6 +113,10 @@ class Item { this.setDirty(true); } + locallyClearAllReferences() { + + } + mergeMetadataFromItem(item) { _.merge(this, _.omit(item, ["content"])); } diff --git a/app/assets/javascripts/app/frontend/models/app/note.js b/app/assets/javascripts/app/frontend/models/app/note.js index b7b4a6c06..e79a64682 100644 --- a/app/assets/javascripts/app/frontend/models/app/note.js +++ b/app/assets/javascripts/app/frontend/models/app/note.js @@ -56,6 +56,14 @@ class Note extends Item { this.tags = []; } + locallyClearAllReferences() { + super.locallyClearAllReferences(); + this.tags.forEach(function(tag){ + _.pull(tag.notes, this); + }.bind(this)) + this.tags = []; + } + isBeingRemovedLocally() { this.tags.forEach(function(tag){ _.pull(tag.notes, this); diff --git a/app/assets/javascripts/app/frontend/models/app/tag.js b/app/assets/javascripts/app/frontend/models/app/tag.js index f8361ca5a..be36360c9 100644 --- a/app/assets/javascripts/app/frontend/models/app/tag.js +++ b/app/assets/javascripts/app/frontend/models/app/tag.js @@ -55,6 +55,15 @@ class Tag extends Item { this.notes = []; } + locallyClearAllReferences() { + super.locallyClearAllReferences(); + this.notes.forEach(function(note){ + _.pull(note.tags, this); + }.bind(this)) + + this.notes = []; + } + isBeingRemovedLocally() { this.notes.forEach(function(note){ _.pull(note.tags, this); diff --git a/app/assets/javascripts/app/services/helpers/crypto.js b/app/assets/javascripts/app/services/helpers/crypto.js index e93b9017c..ab09b41e8 100644 --- a/app/assets/javascripts/app/services/helpers/crypto.js +++ b/app/assets/javascripts/app/services/helpers/crypto.js @@ -60,11 +60,13 @@ class SNCrypto { } base64(text) { - return CryptoJS.enc.Utf8.parse(text).toString(CryptoJS.enc.Base64) + // return CryptoJS.enc.Utf8.parse(text).toString(CryptoJS.enc.Base64) + return window.btoa(text); } base64Decode(base64String) { - return CryptoJS.enc.Base64.parse(base64String).toString(CryptoJS.enc.Utf8) + // return CryptoJS.enc.Base64.parse(base64String).toString(CryptoJS.enc.Utf8) + return window.atob(base64String); } sha256(text) { diff --git a/app/assets/javascripts/app/services/modelManager.js b/app/assets/javascripts/app/services/modelManager.js index 37b24a832..ef67bc86a 100644 --- a/app/assets/javascripts/app/services/modelManager.js +++ b/app/assets/javascripts/app/services/modelManager.js @@ -168,6 +168,7 @@ class ModelManager { } resolveReferencesForItem(item) { + item.locallyClearAllReferences(); var contentObject = item.contentObject; if(!contentObject.references) { return; diff --git a/app/assets/stylesheets/app/_standard.scss b/app/assets/stylesheets/app/_standard.scss index e9f7e8b04..60cc3601a 100644 --- a/app/assets/stylesheets/app/_standard.scss +++ b/app/assets/stylesheets/app/_standard.scss @@ -89,6 +89,7 @@ .wrap { word-wrap: break-word; + word-break: break-all; } .one-line-overflow { diff --git a/app/assets/templates/frontend/directives/global-extensions-menu.html.haml b/app/assets/templates/frontend/directives/global-extensions-menu.html.haml index 2dd5df9d1..a28067719 100644 --- a/app/assets/templates/frontend/directives/global-extensions-menu.html.haml +++ b/app/assets/templates/frontend/directives/global-extensions-menu.html.haml @@ -1,8 +1,8 @@ .panel.panel-default.account-panel.panel-right .panel-body - %div{"style" => "font-size: 18px;", "ng-if" => "!extensionManager.extensions.length"} No extensions installed + %div{"style" => "font-size: 15px;", "ng-if" => "!extensionManager.extensions.length"} No extensions installed %div{"ng-if" => "extensionManager.extensions.length"} - %section.gray-bg.inline-h.mb-10.medium-padding{"ng-repeat" => "extension in extensionManager.extensions", "ng-init" => "extension.formData = {}"} + %section.gray-bg.inline-h.mb-10.medium-padding{"ng-repeat" => "extension in extensionManager.extensions | orderBy: 'name'", "ng-init" => "extension.formData = {}"} %h3.center-align {{extension.name}} .center-align.centered.mt-10 %label.block.normal Send data: diff --git a/app/assets/templates/frontend/editor.html.haml b/app/assets/templates/frontend/editor.html.haml index 41dedafed..e8956bb3b 100644 --- a/app/assets/templates/frontend/editor.html.haml +++ b/app/assets/templates/frontend/editor.html.haml @@ -6,7 +6,7 @@ "select-on-click" => "true"} .save-status{"ng-class" => "{'red bold': ctrl.saveError}", "ng-bind-html" => "ctrl.noteStatus"} .tags - %input.tags-input{"type" => "text", "ng-keyup" => "$event.keyCode == 13 && ctrl.updateTagsFromTagsString($event, ctrl.tagsString)", + %input.tags-input{"type" => "text", "ng-keyup" => "$event.keyCode == 13 && $event.target.blur();", "ng-model" => "ctrl.tagsString", "placeholder" => "#tags", "ng-blur" => "ctrl.updateTagsFromTagsString($event, ctrl.tagsString)"} .section-menu %ul.nav