diff --git a/README.md b/README.md index 9f380067..57e2fa23 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ The mission is to bring software dev inspired features (refactoring, testing, li ## Latest version -v0.29.0 +v0.30.0 ## OS Support diff --git a/app/app/components/back-to-home.js b/app/app/components/back-to-home.js deleted file mode 100644 index cb25c125..00000000 --- a/app/app/components/back-to-home.js +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2016 Documize Inc. . All rights reserved. -// -// This software (Documize Community Edition) is licensed under -// GNU AGPL v3 http://www.gnu.org/licenses/agpl-3.0.en.html -// -// You can operate outside the AGPL restrictions by purchasing -// Documize Enterprise Edition and obtaining a commercial license -// by contacting . -// -// https://documize.com - -import Ember from 'ember'; - -export default Ember.Component.extend({ -}); diff --git a/app/app/components/document/document-sidebar-toc.js b/app/app/components/document/document-sidebar-toc.js index 435ea341..a8380c7b 100644 --- a/app/app/components/document/document-sidebar-toc.js +++ b/app/app/components/document/document-sidebar-toc.js @@ -52,22 +52,6 @@ export default Ember.Component.extend(NotifierMixin, TooltipMixin, { this.destroyTooltips(); }, - // positionToc() { - // let s = $(".document-structure"); - // let pos = s.position(); - // - // $(window).scroll(_.throttle(function() { - // let windowpos = $(window).scrollTop(); - // if (windowpos - 200 >= pos.top) { - // s.addClass("stuck-toc"); - // s.css('width', s.parent().width()); - // } else { - // s.removeClass("stuck-toc"); - // s.css('width', 'auto'); - // } - // }, 50)); - // }, - onDocumentPageAdded(pageId) { this.send('onEntryClick', pageId); }, diff --git a/app/app/components/folder/folders-list.js b/app/app/components/folder/folders-list.js index b2eef93f..24cbe931 100644 --- a/app/app/components/folder/folders-list.js +++ b/app/app/components/folder/folders-list.js @@ -37,6 +37,10 @@ export default Ember.Component.extend(TooltipMixin, NotifierMixin, { init() { this._super(...arguments); + if (this.get('noFolder')) { + return; + } + let _this = this; this.get('templateService').getSavedTemplates().then(function(saved) { let emptyTemplate = { @@ -57,12 +61,20 @@ export default Ember.Component.extend(TooltipMixin, NotifierMixin, { }, didRender() { + if (this.get('noFolder')) { + return; + } + if (this.get('folderService').get('canEditCurrentFolder')) { this.addTooltip(document.getElementById("start-document-button")); } }, didInsertElement() { + if (this.get('noFolder')) { + return; + } + this.eventBus.subscribe('resized', this, 'positionTool'); this.eventBus.subscribe('scrolled', this, 'positionTool'); }, diff --git a/app/app/components/folder/start-document.js b/app/app/components/folder/start-document.js index b97b1c65..4524635d 100644 --- a/app/app/components/folder/start-document.js +++ b/app/app/components/folder/start-document.js @@ -24,13 +24,18 @@ export default Ember.Component.extend(NotifierMixin, { this.setupImport(); }, + willDestroyElement() { + if (is.not.null(this.get('drop'))) { + this.get('drop').destroy(); + this.set('drop', null); + } + }, + setupImport() { // already done init? if (is.not.null(this.get('drop'))) { - if (is.not.null(this.get('drop'))) { - this.get('drop').destroy(); - this.set('drop', null); - } + this.get('drop').destroy(); + this.set('drop', null); } let self = this; diff --git a/app/app/components/layout/zone-container.js b/app/app/components/layout/zone-container.js deleted file mode 100644 index a5417462..00000000 --- a/app/app/components/layout/zone-container.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2016 Documize Inc. . All rights reserved. -// -// This software (Documize Community Edition) is licensed under -// GNU AGPL v3 http://www.gnu.org/licenses/agpl-3.0.en.html -// -// You can operate outside the AGPL restrictions by purchasing -// Documize Enterprise Edition and obtaining a commercial license -// by contacting . -// -// https://documize.com - -import Ember from 'ember'; - -export default Ember.Component.extend({}); \ No newline at end of file diff --git a/app/app/pods/auth/login/controller.js b/app/app/pods/auth/login/controller.js index b3cab9d4..8488ba34 100644 --- a/app/app/pods/auth/login/controller.js +++ b/app/app/pods/auth/login/controller.js @@ -1,11 +1,11 @@ // Copyright 2016 Documize Inc. . All rights reserved. // -// This software (Documize Community Edition) is licensed under +// This software (Documize Community Edition) is licensed under // GNU AGPL v3 http://www.gnu.org/licenses/agpl-3.0.en.html // // You can operate outside the AGPL restrictions by purchasing // Documize Enterprise Edition and obtaining a commercial license -// by contacting . +// by contacting . // // https://documize.com @@ -38,11 +38,11 @@ export default Ember.Controller.extend({ this.get('session').authenticate('authenticator:documize', creds) .then((response) => { this.get('audit').record("logged-in"); - this.transitionToRoute('folders.folder'); + this.transitionToRoute('folders'); return response; }).catch(() => { this.set('invalidCredentials', true); }); } } -}); \ No newline at end of file +}); diff --git a/app/app/pods/auth/logout/route.js b/app/app/pods/auth/logout/route.js index 015a8748..cf293ecb 100644 --- a/app/app/pods/auth/logout/route.js +++ b/app/app/pods/auth/logout/route.js @@ -1,11 +1,11 @@ // Copyright 2016 Documize Inc. . All rights reserved. // -// This software (Documize Community Edition) is licensed under +// This software (Documize Community Edition) is licensed under // GNU AGPL v3 http://www.gnu.org/licenses/agpl-3.0.en.html // // You can operate outside the AGPL restrictions by purchasing // Documize Enterprise Edition and obtaining a commercial license -// by contacting . +// by contacting . // // https://documize.com @@ -24,7 +24,11 @@ export default Ember.Route.extend({ if (config.environment === 'test') { this.transitionTo('auth.login'); } else { - window.document.location = this.get("appMeta.allowAnonymousAccess") ? "/" : "/auth/login"; + if (this.get("appMeta.allowAnonymousAccess")) { + this.transitionTo('folders'); + } else { + this.transitionTo('auth.login'); + } } } -}); \ No newline at end of file +}); diff --git a/app/app/pods/auth/route.js b/app/app/pods/auth/route.js index bf50215a..cb79666d 100644 --- a/app/app/pods/auth/route.js +++ b/app/app/pods/auth/route.js @@ -1,14 +1,15 @@ // Copyright 2016 Documize Inc. . All rights reserved. // -// This software (Documize Community Edition) is licensed under +// This software (Documize Community Edition) is licensed under // GNU AGPL v3 http://www.gnu.org/licenses/agpl-3.0.en.html // // You can operate outside the AGPL restrictions by purchasing // Documize Enterprise Edition and obtaining a commercial license -// by contacting . +// by contacting . // // https://documize.com import Ember from 'ember'; -export default Ember.Route.extend({}); \ No newline at end of file +export default Ember.Route.extend({ +}); diff --git a/app/app/pods/auth/sso/route.js b/app/app/pods/auth/sso/route.js index 3c694362..acbdc6d0 100644 --- a/app/app/pods/auth/sso/route.js +++ b/app/app/pods/auth/sso/route.js @@ -1,11 +1,11 @@ // Copyright 2016 Documize Inc. . All rights reserved. // -// This software (Documize Community Edition) is licensed under +// This software (Documize Community Edition) is licensed under // GNU AGPL v3 http://www.gnu.org/licenses/agpl-3.0.en.html // // You can operate outside the AGPL restrictions by purchasing // Documize Enterprise Edition and obtaining a commercial license -// by contacting . +// by contacting . // // https://documize.com @@ -17,10 +17,10 @@ export default Ember.Route.extend({ model({ token }) { this.get("session").authenticate('authenticator:documize', decodeURIComponent(token)) .then(() => { - this.transitionTo('folders.folder'); + this.transitionTo('folders'); }, () => { this.transitionTo('auth.login'); console.log(">>>>> Documize SSO failure"); }); }, -}); \ No newline at end of file +}); diff --git a/app/app/pods/customize/folders/template.hbs b/app/app/pods/customize/folders/template.hbs index 09bbcf09..f770c84e 100644 --- a/app/app/pods/customize/folders/template.hbs +++ b/app/app/pods/customize/folders/template.hbs @@ -17,7 +17,7 @@ {{#each folders as |folder|}} - {{#link-to 'folders.folder' folder.id folder.slug class="alt"}}{{folder.name}}{{/link-to}} + {{#link-to 'folder' folder.id folder.slug class="alt"}}{{folder.name}}{{/link-to}} {{#each folder.sharedWith as |person|}} diff --git a/app/app/pods/document/index/controller.js b/app/app/pods/document/index/controller.js index bf83cf7b..f4fd8b1a 100644 --- a/app/app/pods/document/index/controller.js +++ b/app/app/pods/document/index/controller.js @@ -239,7 +239,7 @@ export default Ember.Controller.extend(NotifierMixin, { this.get('documentService').deleteDocument(this.get('model.id')).then(function () { self.audit.record("deleted-page"); self.send("showNotification", "Deleted"); - self.transitionToRoute('folders.folder', self.get('folder.id'), self.get('folder.slug')); + self.transitionToRoute('folder', self.get('folder.id'), self.get('folder.slug')); }); } } diff --git a/app/app/pods/folders/folder/controller.js b/app/app/pods/folder/controller.js similarity index 93% rename from app/app/pods/folders/folder/controller.js rename to app/app/pods/folder/controller.js index af7feda1..c3d84974 100644 --- a/app/app/pods/folders/folder/controller.js +++ b/app/app/pods/folder/controller.js @@ -10,7 +10,7 @@ // https://documize.com import Ember from 'ember'; -import NotifierMixin from '../../../mixins/notifier'; +import NotifierMixin from '../../mixins/notifier'; export default Ember.Controller.extend(NotifierMixin, { documentService: Ember.inject.service('document'), @@ -71,7 +71,7 @@ export default Ember.Controller.extend(NotifierMixin, { this.get('folderService').add({ name: folder }).then(function (newFolder) { self.get('folderService').setCurrentFolder(newFolder); - self.transitionToRoute('folders.folder', newFolder.get('id'), newFolder.get('slug')); + self.transitionToRoute('folder', newFolder.get('id'), newFolder.get('slug')); }); } } diff --git a/app/app/pods/folders/folder/route.js b/app/app/pods/folder/route.js similarity index 100% rename from app/app/pods/folders/folder/route.js rename to app/app/pods/folder/route.js diff --git a/app/app/pods/folders/folder/template.hbs b/app/app/pods/folder/template.hbs similarity index 100% rename from app/app/pods/folders/folder/template.hbs rename to app/app/pods/folder/template.hbs diff --git a/app/app/pods/folders/controller.js b/app/app/pods/folders/controller.js index 17a79e72..54afc4c3 100644 --- a/app/app/pods/folders/controller.js +++ b/app/app/pods/folders/controller.js @@ -1,14 +1,29 @@ // Copyright 2016 Documize Inc. . All rights reserved. // -// This software (Documize Community Edition) is licensed under +// This software (Documize Community Edition) is licensed under // GNU AGPL v3 http://www.gnu.org/licenses/agpl-3.0.en.html // // You can operate outside the AGPL restrictions by purchasing // Documize Enterprise Edition and obtaining a commercial license -// by contacting . +// by contacting . // // https://documize.com import Ember from 'ember'; +import NotifierMixin from '../../mixins/notifier'; -export default Ember.Controller.extend({}); \ No newline at end of file +export default Ember.Controller.extend(NotifierMixin, { + folderService: Ember.inject.service('folder'), + + actions: { + onFolderAdd(folder) { + let self = this; + this.showNotification("Added"); + + this.get('folderService').add({ name: folder }).then(function (newFolder) { + self.get('folderService').setCurrentFolder(newFolder); + self.transitionToRoute('folder', newFolder.get('id'), newFolder.get('slug')); + }); + } + } +}); diff --git a/app/app/pods/folders/route.js b/app/app/pods/folders/route.js index e2a284e8..be6d8459 100644 --- a/app/app/pods/folders/route.js +++ b/app/app/pods/folders/route.js @@ -11,74 +11,11 @@ import Ember from 'ember'; import AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin'; -import { isNotFoundError } from 'ember-ajax/errors'; - -const { - isPresent -} = Ember; export default Ember.Route.extend(AuthenticatedRouteMixin, { folderService: Ember.inject.service('folder'), - localStorage: Ember.inject.service(), - folder: {}, model: function () { return this.get('folderService').getAll(); - }, - - afterModel: function (model) { - let params = this.paramsFor('folders.folder'); - - if (is.empty(params)) { - let lastFolder = this.get('localStorage').getSessionItem("folder"); - let self = this; - - //If folder lastFolder is defined - if (isPresent(lastFolder)) { - return this.get('folderService').getFolder(lastFolder).then((folder) => { - //if Response is null or undefined redirect to login else transitionTo dashboard - if (Ember.isNone(folder)) { - self.get('localStorage').clearSessionItem("folder"); - this.transitionTo('application'); - } - - Ember.set(this, 'folder', folder); - this.transitionTo('folders.folder', folder.get('id'), folder.get('slug')); - }).catch(() => { - //if there was an error redirect to login - self.get('localStorage').clearSessionItem("folder"); - this.transitionTo('application'); - }); - } - - // If model has any folders redirect to dashboard - if (model.get('length') > 0) { - let folder = model[0]; - Ember.set(this, 'folder', folder); - this.transitionTo('folders.folder', folder.get('id'), folder.get('slug')); - } - } - - //If folder route has params - if (isPresent(params)) { - let self = this; - let folderId = this.paramsFor('folders.folder').folder_id; - - return this.get('folderService').getFolder(folderId).then((folder) => { - Ember.set(this, 'folder', folder); - }).catch(function (error) { - if (isNotFoundError(error)) { - // handle 404 errors here - self.transitionTo('application'); - } - }); - } - - this.browser.setMetaDescription(); - }, - - setupController(controller, model) { - controller.set('model', model); - controller.set('folder', this.folder); } }); diff --git a/app/app/pods/folders/template.hbs b/app/app/pods/folders/template.hbs index c24cd689..eb81b23e 100644 --- a/app/app/pods/folders/template.hbs +++ b/app/app/pods/folders/template.hbs @@ -1 +1,8 @@ -{{outlet}} +{{layout/zone-navigation}} + +{{#layout/zone-sidebar}} + {{folder/folders-list folders=model noFolder=true onFolderAdd=(action 'onFolderAdd')}} +{{/layout/zone-sidebar}} + +{{#layout/zone-content}} +{{/layout/zone-content}} diff --git a/app/app/pods/folders/settings/controller.js b/app/app/pods/settings/controller.js similarity index 100% rename from app/app/pods/folders/settings/controller.js rename to app/app/pods/settings/controller.js diff --git a/app/app/pods/folders/settings/route.js b/app/app/pods/settings/route.js similarity index 97% rename from app/app/pods/folders/settings/route.js rename to app/app/pods/settings/route.js index f44e2dbc..68ae83e6 100644 --- a/app/app/pods/folders/settings/route.js +++ b/app/app/pods/settings/route.js @@ -10,7 +10,7 @@ // https://documize.com import Ember from 'ember'; -import NotifierMixin from '../../../mixins/notifier'; +import NotifierMixin from '../../mixins/notifier'; const { inject: { service } @@ -119,7 +119,7 @@ export default Ember.Route.extend(NotifierMixin, { this.get('folderService').getFolder(moveId).then((folder) => { this.get('folderService').setCurrentFolder(folder); - this.transitionTo('folders.folder', folder.get('id'), folder.get('slug')); + this.transitionTo('folder', folder.get('id'), folder.get('slug')); }); }); }, diff --git a/app/app/pods/folders/settings/template.hbs b/app/app/pods/settings/template.hbs similarity index 88% rename from app/app/pods/folders/settings/template.hbs rename to app/app/pods/settings/template.hbs index d220e26d..83a34d8a 100644 --- a/app/app/pods/folders/settings/template.hbs +++ b/app/app/pods/settings/template.hbs @@ -2,9 +2,7 @@ {{#layout/zone-sidebar}} {{#layout/sidebar-intro message='Rename, delete, share and manage space permissions'}} - {{#link-to 'folders.folder' model.id model.slug}} - arrow_back {{model.name}} - {{/link-to}} + {{back-to-space folder=model}} {{/layout/sidebar-intro}}