1
0
Fork 0
mirror of https://github.com/documize/community.git synced 2025-07-26 00:29:47 +02:00

code for dashboard page

This commit is contained in:
Harvey Kandola 2016-11-06 20:11:21 -08:00
parent b6afd0602b
commit 2bfc558e91
24 changed files with 695 additions and 711 deletions

View file

@ -37,6 +37,10 @@ export default Ember.Component.extend(TooltipMixin, NotifierMixin, {
init() { init() {
this._super(...arguments); this._super(...arguments);
if (this.get('noFolder')) {
return;
}
let _this = this; let _this = this;
this.get('templateService').getSavedTemplates().then(function(saved) { this.get('templateService').getSavedTemplates().then(function(saved) {
let emptyTemplate = { let emptyTemplate = {
@ -57,12 +61,20 @@ export default Ember.Component.extend(TooltipMixin, NotifierMixin, {
}, },
didRender() { didRender() {
if (this.get('noFolder')) {
return;
}
if (this.get('folderService').get('canEditCurrentFolder')) { if (this.get('folderService').get('canEditCurrentFolder')) {
this.addTooltip(document.getElementById("start-document-button")); this.addTooltip(document.getElementById("start-document-button"));
} }
}, },
didInsertElement() { didInsertElement() {
if (this.get('noFolder')) {
return;
}
this.eventBus.subscribe('resized', this, 'positionTool'); this.eventBus.subscribe('resized', this, 'positionTool');
this.eventBus.subscribe('scrolled', this, 'positionTool'); this.eventBus.subscribe('scrolled', this, 'positionTool');
}, },

View file

@ -1,11 +1,11 @@
// Copyright 2016 Documize Inc. <legal@documize.com>. All rights reserved. // Copyright 2016 Documize Inc. <legal@documize.com>. 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 // GNU AGPL v3 http://www.gnu.org/licenses/agpl-3.0.en.html
// //
// You can operate outside the AGPL restrictions by purchasing // You can operate outside the AGPL restrictions by purchasing
// Documize Enterprise Edition and obtaining a commercial license // Documize Enterprise Edition and obtaining a commercial license
// by contacting <sales@documize.com>. // by contacting <sales@documize.com>.
// //
// https://documize.com // https://documize.com
@ -38,11 +38,11 @@ export default Ember.Controller.extend({
this.get('session').authenticate('authenticator:documize', creds) this.get('session').authenticate('authenticator:documize', creds)
.then((response) => { .then((response) => {
this.get('audit').record("logged-in"); this.get('audit').record("logged-in");
this.transitionToRoute('folders.folder'); this.transitionToRoute('folders');
return response; return response;
}).catch(() => { }).catch(() => {
this.set('invalidCredentials', true); this.set('invalidCredentials', true);
}); });
} }
} }
}); });

View file

@ -1,11 +1,11 @@
// Copyright 2016 Documize Inc. <legal@documize.com>. All rights reserved. // Copyright 2016 Documize Inc. <legal@documize.com>. 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 // GNU AGPL v3 http://www.gnu.org/licenses/agpl-3.0.en.html
// //
// You can operate outside the AGPL restrictions by purchasing // You can operate outside the AGPL restrictions by purchasing
// Documize Enterprise Edition and obtaining a commercial license // Documize Enterprise Edition and obtaining a commercial license
// by contacting <sales@documize.com>. // by contacting <sales@documize.com>.
// //
// https://documize.com // https://documize.com
@ -24,7 +24,11 @@ export default Ember.Route.extend({
if (config.environment === 'test') { if (config.environment === 'test') {
this.transitionTo('auth.login'); this.transitionTo('auth.login');
} else { } else {
window.document.location = this.get("appMeta.allowAnonymousAccess") ? "/" : "/auth/login"; if (this.get("appMeta.allowAnonymousAccess")) {
this.transitionTo('folders');
} else {
this.transitionTo('auth.login');
}
} }
} }
}); });

View file

@ -1,14 +1,15 @@
// Copyright 2016 Documize Inc. <legal@documize.com>. All rights reserved. // Copyright 2016 Documize Inc. <legal@documize.com>. 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 // GNU AGPL v3 http://www.gnu.org/licenses/agpl-3.0.en.html
// //
// You can operate outside the AGPL restrictions by purchasing // You can operate outside the AGPL restrictions by purchasing
// Documize Enterprise Edition and obtaining a commercial license // Documize Enterprise Edition and obtaining a commercial license
// by contacting <sales@documize.com>. // by contacting <sales@documize.com>.
// //
// https://documize.com // https://documize.com
import Ember from 'ember'; import Ember from 'ember';
export default Ember.Route.extend({}); export default Ember.Route.extend({
});

View file

@ -1,11 +1,11 @@
// Copyright 2016 Documize Inc. <legal@documize.com>. All rights reserved. // Copyright 2016 Documize Inc. <legal@documize.com>. 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 // GNU AGPL v3 http://www.gnu.org/licenses/agpl-3.0.en.html
// //
// You can operate outside the AGPL restrictions by purchasing // You can operate outside the AGPL restrictions by purchasing
// Documize Enterprise Edition and obtaining a commercial license // Documize Enterprise Edition and obtaining a commercial license
// by contacting <sales@documize.com>. // by contacting <sales@documize.com>.
// //
// https://documize.com // https://documize.com
@ -17,10 +17,10 @@ export default Ember.Route.extend({
model({ token }) { model({ token }) {
this.get("session").authenticate('authenticator:documize', decodeURIComponent(token)) this.get("session").authenticate('authenticator:documize', decodeURIComponent(token))
.then(() => { .then(() => {
this.transitionTo('folders.folder'); this.transitionTo('folders');
}, () => { }, () => {
this.transitionTo('auth.login'); this.transitionTo('auth.login');
console.log(">>>>> Documize SSO failure"); console.log(">>>>> Documize SSO failure");
}); });
}, },
}); });

View file

@ -17,7 +17,7 @@
{{#each folders as |folder|}} {{#each folders as |folder|}}
<tr> <tr>
<td class="bordered"> <td class="bordered">
{{#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}}
</td> </td>
<td class="bordered"> <td class="bordered">
{{#each folder.sharedWith as |person|}} {{#each folder.sharedWith as |person|}}

View file

@ -239,7 +239,7 @@ export default Ember.Controller.extend(NotifierMixin, {
this.get('documentService').deleteDocument(this.get('model.id')).then(function () { this.get('documentService').deleteDocument(this.get('model.id')).then(function () {
self.audit.record("deleted-page"); self.audit.record("deleted-page");
self.send("showNotification", "Deleted"); 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'));
}); });
} }
} }

View file

@ -10,7 +10,7 @@
// https://documize.com // https://documize.com
import Ember from 'ember'; import Ember from 'ember';
import NotifierMixin from '../../../mixins/notifier'; import NotifierMixin from '../../mixins/notifier';
export default Ember.Controller.extend(NotifierMixin, { export default Ember.Controller.extend(NotifierMixin, {
documentService: Ember.inject.service('document'), documentService: Ember.inject.service('document'),
@ -71,7 +71,7 @@ export default Ember.Controller.extend(NotifierMixin, {
this.get('folderService').add({ name: folder }).then(function (newFolder) { this.get('folderService').add({ name: folder }).then(function (newFolder) {
self.get('folderService').setCurrentFolder(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'));
}); });
} }
} }

View file

@ -1,14 +1,29 @@
// Copyright 2016 Documize Inc. <legal@documize.com>. All rights reserved. // Copyright 2016 Documize Inc. <legal@documize.com>. 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 // GNU AGPL v3 http://www.gnu.org/licenses/agpl-3.0.en.html
// //
// You can operate outside the AGPL restrictions by purchasing // You can operate outside the AGPL restrictions by purchasing
// Documize Enterprise Edition and obtaining a commercial license // Documize Enterprise Edition and obtaining a commercial license
// by contacting <sales@documize.com>. // by contacting <sales@documize.com>.
// //
// https://documize.com // https://documize.com
import Ember from 'ember'; import Ember from 'ember';
import NotifierMixin from '../../mixins/notifier';
export default Ember.Controller.extend({}); 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'));
});
}
}
});

View file

@ -11,74 +11,11 @@
import Ember from 'ember'; import Ember from 'ember';
import AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin'; 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, { export default Ember.Route.extend(AuthenticatedRouteMixin, {
folderService: Ember.inject.service('folder'), folderService: Ember.inject.service('folder'),
localStorage: Ember.inject.service(),
folder: {},
model: function () { model: function () {
return this.get('folderService').getAll(); 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);
} }
}); });

View file

@ -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}}

View file

@ -10,7 +10,7 @@
// https://documize.com // https://documize.com
import Ember from 'ember'; import Ember from 'ember';
import NotifierMixin from '../../../mixins/notifier'; import NotifierMixin from '../../mixins/notifier';
const { const {
inject: { service } inject: { service }
@ -119,7 +119,7 @@ export default Ember.Route.extend(NotifierMixin, {
this.get('folderService').getFolder(moveId).then((folder) => { this.get('folderService').getFolder(moveId).then((folder) => {
this.get('folderService').setCurrentFolder(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'));
}); });
}); });
}, },

View file

@ -2,7 +2,7 @@
{{#layout/zone-sidebar}} {{#layout/zone-sidebar}}
{{#layout/sidebar-intro message='Rename, delete, share and manage space permissions'}} {{#layout/sidebar-intro message='Rename, delete, share and manage space permissions'}}
{{#link-to 'folders.folder' model.id model.slug}} {{#link-to 'folder' model.id model.slug}}
<i class="material-icons">arrow_back</i>&nbsp;{{model.name}} <i class="material-icons">arrow_back</i>&nbsp;{{model.name}}
{{/link-to}} {{/link-to}}
{{/layout/sidebar-intro}} {{/layout/sidebar-intro}}

View file

@ -19,13 +19,14 @@ var Router = Ember.Router.extend({
export default Router.map(function () { export default Router.map(function () {
this.route('folders', { this.route('folders', {
path: '/' path: '/'
}, function () { });
this.route('folder', {
path: 's/:folder_id/:folder_slug' this.route('folder', {
}); path: 's/:folder_id/:folder_slug'
this.route('settings', { });
path: 's/:folder_id/:folder_slug/settings'
}); this.route('settings', {
path: 's/:folder_id/:folder_slug/settings'
}); });
this.route('document', { this.route('document', {

View file

@ -38,6 +38,8 @@ export default Ember.Route.extend(ApplicationRouteMixin, {
error(error /*, transition*/ ) { error(error /*, transition*/ ) {
if (error) { if (error) {
console.log(error);
if (netUtil.isAjaxAccessError(error)) { if (netUtil.isAjaxAccessError(error)) {
localStorage.clear(); localStorage.clear();
return this.transitionTo('auth.login'); return this.transitionTo('auth.login');

View file

@ -1,4 +1,4 @@
{{#link-to 'folders.folder' folder.id folder.slug}} {{#link-to 'folder' folder.id folder.slug}}
<div class="zone-sidebar-title"> <div class="zone-sidebar-title">
<i class="material-icons">arrow_back</i>&nbsp;{{folder.name}} <i class="material-icons">arrow_back</i>&nbsp;{{folder.name}}
</div> </div>

View file

@ -29,13 +29,13 @@
{{/dropdown-dialog}} {{/dropdown-dialog}}
{{else}} {{else}}
{{#if isFolderOwner}} {{#if isFolderOwner}}
{{#link-to 'folders.settings' folder.id folder.slug (query-params tab="tabShare")}} {{#link-to 'settings' folder.id folder.slug (query-params tab="tabShare")}}
<div class="round-button-mono" id="folder-share-button" data-tooltip="Share" data-tooltip-position="top center"> <div class="round-button-mono" id="folder-share-button" data-tooltip="Share" data-tooltip-position="top center">
<i class="material-icons color-gray">share</i> <i class="material-icons color-gray">share</i>
</div> </div>
{{/link-to}} {{/link-to}}
<div class="button-gap"></div> <div class="button-gap"></div>
{{#link-to 'folders.settings' folder.id folder.slug}} {{#link-to 'settings' folder.id folder.slug}}
<div class="round-button-mono" id="folder-settings-button" data-tooltip="Settings" data-tooltip-position="top center"> <div class="round-button-mono" id="folder-settings-button" data-tooltip="Settings" data-tooltip-position="top center">
<i class="material-icons color-gray">settings</i> <i class="material-icons color-gray">settings</i>
</div> </div>

View file

@ -1,30 +1,32 @@
<div class="space-tools"> {{#unless noFolder}}
{{#if showingDocument}} <div class="space-tools">
{{layout/sidebar-intro title=folder.name message='Import files or start with a template'}} {{#if showingDocument}}
<div {{action 'showList'}} id="cancel-tool" class="round-button round-button-mono button-white doc-tool"> {{layout/sidebar-intro title=folder.name message='Import files or start with a template'}}
<i class="material-icons color-gray">close</i> <div {{action 'showList'}} id="cancel-tool" class="round-button round-button-mono button-white doc-tool">
</div> <i class="material-icons color-gray">close</i>
</div>
{{folder/start-document savedTemplates=savedTemplates folder=folder editor=folderService.canEditCurrentFolder {{folder/start-document savedTemplates=savedTemplates folder=folder editor=folderService.canEditCurrentFolder
onImport=(action 'onImport') onImport=(action 'onImport')
onEditTemplate=(action 'onEditTemplate') onEditTemplate=(action 'onEditTemplate')
onDocumentTemplate=(action 'onDocumentTemplate')}} onDocumentTemplate=(action 'onDocumentTemplate')}}
{{/if}} {{/if}}
{{#if showScrollTool}} {{#if showScrollTool}}
<div {{action 'scrollTop'}} id="scroll-space-tool" class="round-button round-button-mono button-white scroll-space-tool" data-tooltip="Back to top" data-tooltip-position="top center"> <div {{action 'scrollTop'}} id="scroll-space-tool" class="round-button round-button-mono button-white scroll-space-tool" data-tooltip="Back to top" data-tooltip-position="top center">
<i class="material-icons color-gray">vertical_align_top</i> <i class="material-icons color-gray">vertical_align_top</i>
</div>
{{/if}}
{{#if showingList}}
{{#if folderService.canEditCurrentFolder}}
<div {{action 'showDocument'}} class="round-button button-green doc-tool" data-tooltip="Document" data-tooltip-position="top center">
<i class="material-icons">add</i>
</div> </div>
{{/if}} {{/if}}
{{/if}}
</div> {{#if showingList}}
{{#if folderService.canEditCurrentFolder}}
<div {{action 'showDocument'}} class="round-button button-green doc-tool" data-tooltip="Document" data-tooltip-position="top center">
<i class="material-icons">add</i>
</div>
{{/if}}
{{/if}}
</div>
{{/unless}}
<div class="folders-list"> <div class="folders-list">
{{#if showingList}} {{#if showingList}}
@ -52,7 +54,7 @@
{{/unless}} {{/unless}}
<ul class="list"> <ul class="list">
{{#each publicFolders as |folder|}} {{#each publicFolders as |folder|}}
{{#link-to 'folders.folder' folder.id folder.slug class="link" activeClass='selected' }} {{#link-to 'folder' folder.id folder.slug class="link" activeClass='selected' }}
<li class="item">{{ folder.name }}</li> <li class="item">{{ folder.name }}</li>
{{/link-to}} {{/link-to}}
{{/each}} {{/each}}
@ -67,7 +69,7 @@
{{/unless}} {{/unless}}
<ul class="list"> <ul class="list">
{{#each protectedFolders as |folder|}} {{#each protectedFolders as |folder|}}
{{#link-to 'folders.folder' folder.id folder.slug class="link" activeClass='selected' }} {{#link-to 'folder' folder.id folder.slug class="link" activeClass='selected' }}
<li class="item">{{ folder.name }}</li> <li class="item">{{ folder.name }}</li>
{{/link-to}} {{/link-to}}
{{/each}} {{/each}}
@ -81,7 +83,7 @@
{{/unless}} {{/unless}}
<ul class="list"> <ul class="list">
{{#each privateFolders as |folder|}} {{#each privateFolders as |folder|}}
{{#link-to 'folders.folder' folder.id folder.slug class="link" activeClass='selected' }} {{#link-to 'folder' folder.id folder.slug class="link" activeClass='selected' }}
<li class="item">{{ folder.name }}</li> <li class="item">{{ folder.name }}</li>
{{/link-to}} {{/link-to}}
{{/each}} {{/each}}

View file

@ -8,7 +8,7 @@
</li> </li>
{{else}} {{else}}
<li> <li>
{{#link-to 'application' class='title'}} {{#link-to 'folders' class='title'}}
<div class="filled-tool" title={{appMeta.title}}> <div class="filled-tool" title={{appMeta.title}}>
<i class="material-icons">apps</i> <i class="material-icons">apps</i>
</div> </div>

View file

@ -32,8 +32,8 @@ module.exports = function (environment) {
}, },
'ember-simple-auth': { 'ember-simple-auth': {
authenticationRoute: 'auth.login', authenticationRoute: 'auth.login',
routeAfterAuthentication: 'folders.folder', routeAfterAuthentication: 'folders',
routeIfAlreadyAuthenticated: 'folders.folder' routeIfAlreadyAuthenticated: 'folders'
}, },
APP: { APP: {
// Allows to disable audit service in tests // Allows to disable audit service in tests
@ -45,6 +45,9 @@ module.exports = function (environment) {
if (environment === 'development') { if (environment === 'development') {
ENV.APP.LOG_TRANSITIONS = true; ENV.APP.LOG_TRANSITIONS = true;
ENV.APP.LOG_TRANSITIONS_INTERNAL = true; ENV.APP.LOG_TRANSITIONS_INTERNAL = true;
ENV.APP.LOG_RESOLVER = false;
ENV.APP.LOG_ACTIVE_GENERATION = false;
ENV.APP.LOG_VIEW_LOOKUPS = false;
ENV['ember-cli-mirage'] = { ENV['ember-cli-mirage'] = {
enabled: false enabled: false
}; };

File diff suppressed because one or more lines are too long