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

More refactoring and fixes

This commit is contained in:
zinyando 2016-08-17 15:37:46 +02:00
parent 30d1318d92
commit e87b33a8c2
9 changed files with 177 additions and 168 deletions

View file

@ -11,100 +11,104 @@
import Ember from 'ember'; import Ember from 'ember';
const {
inject: { service }
} = Ember;
export default Ember.Component.extend({ export default Ember.Component.extend({
folderService: Ember.inject.service('folder'), folderService: service('folder'),
appMeta: Ember.inject.service(), appMeta: service(),
users: [], users: [],
folders: [], folders: [],
folder: {}, folder: {},
moveTarget: null, moveTarget: null,
inviteEmail: "", inviteEmail: "",
inviteMessage: "", inviteMessage: "",
roleMessage: "", roleMessage: "",
permissions: {}, permissions: {},
getDefaultInvitationMessage() { getDefaultInvitationMessage() {
return "Hey there, I am sharing the " + this.folder.get('name') + " (in " + this.get("appMeta.title") + ") with you so we can both access the same documents."; return "Hey there, I am sharing the " + this.folder.get('name') + " (in " + this.get("appMeta.title") + ") with you so we can both access the same documents.";
}, },
willRender() { willRender() {
if (this.inviteMessage.length === 0) { if (this.inviteMessage.length === 0) {
this.set('inviteMessage', this.getDefaultInvitationMessage()); this.set('inviteMessage', this.getDefaultInvitationMessage());
} }
if (this.roleMessage.length === 0) { if (this.roleMessage.length === 0) {
this.set('roleMessage', this.getDefaultInvitationMessage()); this.set('roleMessage', this.getDefaultInvitationMessage());
} }
}, },
actions: { actions: {
rename() { rename() {
if (is.empty(this.folder.get('name'))) { if (is.empty(this.folder.get('name'))) {
$("#folderName").addClass("error").focus(); $("#folderName").addClass("error").focus();
return; return;
} }
this.sendAction("onRename", this.folder); this.sendAction("onRename", this.folder);
}, },
remove() { remove() {
if (is.null(this.get('moveTarget'))) { if (is.null(this.get('moveTarget'))) {
$("#delete-target > select").addClass("error").focus(); $("#delete-target > select").addClass("error").focus();
return; return;
} }
this.sendAction("onRemove", this.get('moveTarget').get('id')); this.sendAction("onRemove", this.get('moveTarget').get('id'));
}, },
share() { share() {
var email = this.get('inviteEmail').trim().replace(/ /g, ''); var email = this.get('inviteEmail').trim().replace(/ /g, '');
var message = this.get('inviteMessage').trim(); var message = this.get('inviteMessage').trim();
if (message.length === 0) { if (message.length === 0) {
message = this.getDefaultInvitationMessage(); message = this.getDefaultInvitationMessage();
} }
if (email.length === 0) { if (email.length === 0) {
$("#inviteEmail").addClass("error").focus(); $("#inviteEmail").addClass("error").focus();
return; return;
} }
var result = { var result = {
Message: message, Message: message,
Recipients: [] Recipients: []
}; };
// Check for multiple email addresses // Check for multiple email addresses
if (email.indexOf(",") > -1) { if (email.indexOf(",") > -1) {
result.Recipients = email.split(','); result.Recipients = email.split(',');
} }
if (email.indexOf(";") > -1 && result.Recipients.length === 0) { if (email.indexOf(";") > -1 && result.Recipients.length === 0) {
result.Recipients = email.split(';'); result.Recipients = email.split(';');
} }
// Handle just one email address // Handle just one email address
if (result.Recipients.length === 0 && email.length > 0) { if (result.Recipients.length === 0 && email.length > 0) {
result.Recipients.push(email); result.Recipients.push(email);
} }
this.set('inviteEmail', ""); this.set('inviteEmail', "");
this.sendAction("onShare", result); this.sendAction("onShare", result);
}, },
setPermissions() { setPermissions() {
var message = this.get('roleMessage').trim(); var message = this.get('roleMessage').trim();
if (message.length === 0) { if (message.length === 0) {
message = this.getDefaultInvitationMessage(); message = this.getDefaultInvitationMessage();
} }
this.get('permissions').forEach(function(permission, index) /* jshint ignore:line */ { this.get('permissions').forEach((permission, index) => { /* jshint ignore:line */
Ember.set(permission, 'canView', $("#canView-" + permission.userId).prop('checked')); Ember.set(permission, 'canView', $("#canView-" + permission.userId).prop('checked'));
Ember.set(permission, 'canEdit', $("#canEdit-" + permission.userId).prop('checked')); Ember.set(permission, 'canEdit', $("#canEdit-" + permission.userId).prop('checked'));
}); });
this.sendAction("onPermission", this.get('folder'), message, this.get('permissions')); this.sendAction("onPermission", this.get('folder'), message, this.get('permissions'));
} }
} }
}); });

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
@ -14,71 +14,70 @@ import constants from '../../utils/constants';
import TooltipMixin from '../../mixins/tooltip'; import TooltipMixin from '../../mixins/tooltip';
export default Ember.Component.extend(TooltipMixin, { export default Ember.Component.extend(TooltipMixin, {
folderService: Ember.inject.service('folder'), folderService: Ember.inject.service('folder'),
publicFolders: [], publicFolders: [],
protectedFolders: [], protectedFolders: [],
privateFolders: [], privateFolders: [],
hasPublicFolders: false, hasPublicFolders: false,
hasProtectedFolders: false, hasProtectedFolders: false,
hasPrivateFolders: false, hasPrivateFolders: false,
newFolder: "", newFolder: "",
didInsertElement() { didInsertElement() {
this._super(...arguments); this._super(...arguments);
if (this.session.authenticated) { if (this.session.authenticated) {
this.addTooltip(document.getElementById("add-folder-button")); this.addTooltip(document.getElementById("add-folder-button"));
} }
}, },
didReceiveAttrs() { didReceiveAttrs() {
let folders = this.get('folders'); let folders = this.get('folders');
let self = this;
// clear out state // clear out state
this.set('publicFolders', []); this.set('publicFolders', []);
this.set('protectedFolders', []); this.set('protectedFolders', []);
this.set('privateFolders', []); this.set('privateFolders', []);
_.each(folders, folder => { _.each(folders, folder => {
if (folder.folderType === constants.FolderType.Public) { if (folder.get('folderType') === constants.FolderType.Public) {
let folders = self.get('publicFolders'); let folders = this.get('publicFolders');
folders.pushObject(folder); folders.pushObject(folder);
self.set('publicFolders', folders); this.set('publicFolders', folders);
} }
if (folder.folderType === constants.FolderType.Private) { if (folder.get('folderType') === constants.FolderType.Private) {
let folders = self.get('privateFolders'); let folders = this.get('privateFolders');
folders.pushObject(folder); folders.pushObject(folder);
self.set('privateFolders', folders); this.set('privateFolders', folders);
} }
if (folder.folderType === constants.FolderType.Protected) { if (folder.get('folderType') === constants.FolderType.Protected) {
let folders = self.get('protectedFolders'); let folders = this.get('protectedFolders');
folders.pushObject(folder); folders.pushObject(folder);
self.set('protectedFolders', folders); this.set('protectedFolders', folders);
} }
}); });
this.set('hasPublicFolders', this.get('publicFolders.length') > 0); this.set('hasPublicFolders', this.get('publicFolders.length') > 0);
this.set('hasPrivateFolders', this.get('privateFolders.length') > 0); this.set('hasPrivateFolders', this.get('privateFolders.length') > 0);
this.set('hasProtectedFolders', this.get('protectedFolders.length') > 0); this.set('hasProtectedFolders', this.get('protectedFolders.length') > 0);
}, },
willDestroyElement() { willDestroyElement() {
this.destroyTooltips(); this.destroyTooltips();
}, },
actions: { actions: {
addFolder() { addFolder() {
var folderName = this.get('newFolder'); var folderName = this.get('newFolder');
if (is.empty(folderName)) { if (is.empty(folderName)) {
$("#new-folder-name").addClass("error").focus(); $("#new-folder-name").addClass("error").focus();
return false; return false;
} }
this.attrs.onFolderAdd(folderName); this.attrs.onFolderAdd(folderName);
this.set('newFolder', ""); this.set('newFolder', "");
return true; return true;
} }
} }
}); });

View file

@ -20,7 +20,7 @@ export default Model.extend({
name: attr('string'), name: attr('string'),
orgId: attr('string'), orgId: attr('string'),
userId: attr('string'), userId: attr('string'),
folderType: constants.FolderType.Private, folderType: attr('number', { defaultValue: 2 }),
slug: Ember.computed('name', function () { slug: Ember.computed('name', function () {
return stringUtil.makeSlug(this.get('name')); return stringUtil.makeSlug(this.get('name'));

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
@ -31,4 +31,4 @@ export default Ember.Route.extend(AuthenticatedRouteMixin, {
this.browser.setTitle(model.folder.get('name')); this.browser.setTitle(model.folder.get('name'));
this.get('folderService').setCurrentFolder(model.folder); this.get('folderService').setCurrentFolder(model.folder);
} }
}); });

View file

@ -27,7 +27,7 @@ export default Ember.Route.extend(AuthenticatedRouteMixin, {
}, },
afterModel: function (model) { afterModel: function (model) {
debugger;
let params = this.paramsFor('folders.folder'); let params = this.paramsFor('folders.folder');
if (is.empty(params)) { if (is.empty(params)) {

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
@ -13,11 +13,16 @@ import Ember from 'ember';
import models from '../../../utils/model'; import models from '../../../utils/model';
import NotifierMixin from '../../../mixins/notifier'; import NotifierMixin from '../../../mixins/notifier';
const {
inject: { service }
} = Ember;
export default Ember.Route.extend(NotifierMixin, { export default Ember.Route.extend(NotifierMixin, {
folderService: Ember.inject.service('folder'), folderService: service('folder'),
userService: Ember.inject.service('user'), userService: service('user'),
folder: {}, folder: {},
tab: "", tab: "",
localStorage: service(),
beforeModel: function (transition) { beforeModel: function (transition) {
this.tab = is.not.undefined(transition.queryParams.tab) ? transition.queryParams.tab : "tabGeneral"; this.tab = is.not.undefined(transition.queryParams.tab) ? transition.queryParams.tab : "tabGeneral";
@ -100,36 +105,33 @@ export default Ember.Route.extend(NotifierMixin, {
}, },
onRemove(moveId) { onRemove(moveId) {
let self = this;
this.get('folderService').remove(this.folder.get('id'), moveId).then(function () { /* jshint ignore:line */ this.get('folderService').remove(this.folder.get('id'), moveId).then(() => { /* jshint ignore:line */
self.showNotification("Deleted"); this.showNotification("Deleted");
self.session.clearSessionItem('folder'); this.get('localStorage').clearSessionItem('folder');
self.get('folderService').getFolder(moveId).then(function (folder) { this.get('folderService').getFolder(moveId).then((folder) => {
self.get('folderService').setCurrentFolder(folder); this.get('folderService').setCurrentFolder(folder);
self.transitionTo('folders.folder', folder.get('id'), folder.get('slug')); this.transitionTo('folders.folder', folder.get('id'), folder.get('slug'));
}); });
}); });
}, },
onShare: function (invitation) { onShare: function (invitation) {
let self = this;
this.get('folderService').share(this.folder.get('id'), invitation).then(function () { this.get('folderService').share(this.folder.get('id'), invitation).then(() => {
self.showNotification("Shared"); this.showNotification("Shared");
}); });
}, },
onPermission: function (folder, message, permissions) { onPermission: function (folder, message, permissions) {
var self = this;
var data = permissions.map(function (obj) { var data = permissions.map(function (obj) {
return obj.getProperties('orgId', 'folderId', 'userId', 'canEdit', 'canView'); return obj.getProperties('orgId', 'folderId', 'userId', 'canEdit', 'canView');
}); });
var payload = { Message: message, Roles: data }; var payload = { Message: message, Roles: data };
this.get('folderService').savePermissions(folder.get('id'), payload).then(function () { this.get('folderService').savePermissions(folder.get('id'), payload).then(() => {
self.showNotification("Saved"); this.showNotification("Saved");
}); });
var hasEveryone = _.find(data, function (permission) { var hasEveryone = _.find(data, function (permission) {

View file

@ -39,6 +39,10 @@ export default Ember.Service.extend({
content: Ember.A([]) content: Ember.A([])
}); });
if (isObject(response)) {
return documents;
}
documents = response.map((doc) => { documents = response.map((doc) => {
let data = this.get('store').normalize('document', doc); let data = this.get('store').normalize('document', doc);
return this.get('store').push({ data: data }); return this.get('store').push({ data: data });

View file

@ -14,7 +14,7 @@ import BaseService from '../services/base';
const { const {
get, get,
RSVP: { resolve }, RSVP,
inject: { service } inject: { service }
} = Ember; } = Ember;
@ -41,7 +41,6 @@ export default BaseService.extend({
// Returns folder model for specified folder id. // Returns folder model for specified folder id.
getFolder(id) { getFolder(id) {
return this.get('ajax').request(`folders/${id}`, { return this.get('ajax').request(`folders/${id}`, {
method: 'GET' method: 'GET'
}).then((folder) => { }).then((folder) => {
@ -52,12 +51,14 @@ export default BaseService.extend({
// Returns all folders that user can see. // Returns all folders that user can see.
getAll() { getAll() {
let folders = this.get('folders');
if (this.get('folders') != null) { if (folders != null) {
return new resolve(this.get('folders')); return new RSVP.resolve(folders);
} else {
return this.reload();
} }
return this.reload();
}, },
// Updates an existing folder record. // Updates an existing folder record.
@ -140,7 +141,6 @@ export default BaseService.extend({
// persist folder permissions // persist folder permissions
savePermissions(folderId, payload) { savePermissions(folderId, payload) {
return this.get('ajax').request(`folders/${folderId}/permissions`, { return this.get('ajax').request(`folders/${folderId}/permissions`, {
method: 'PUT', method: 'PUT',
contentType: 'json', contentType: 'json',

View file

@ -33,11 +33,11 @@ export default Ember.Service.extend({
// Updates an existing organization record. // Updates an existing organization record.
save(org) { save(org) {
let id = org.get('id'); let id = org.id;
this.get('appMeta').setProperties({ this.get('appMeta').setProperties({
message: org.message, message: org.get('message'),
title: org.title title: org.get('title')
}); });
return this.get('ajax').request(`organizations/${id}`, { return this.get('ajax').request(`organizations/${id}`, {