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:
parent
30d1318d92
commit
e87b33a8c2
9 changed files with 177 additions and 168 deletions
|
@ -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'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -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'));
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -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)) {
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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 });
|
||||||
|
|
|
@ -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',
|
||||||
|
|
|
@ -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}`, {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue