mirror of
https://github.com/documize/community.git
synced 2025-07-24 15:49:44 +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';
|
||||
|
||||
const {
|
||||
inject: { service }
|
||||
} = Ember;
|
||||
|
||||
export default Ember.Component.extend({
|
||||
folderService: Ember.inject.service('folder'),
|
||||
appMeta: Ember.inject.service(),
|
||||
users: [],
|
||||
folders: [],
|
||||
folder: {},
|
||||
moveTarget: null,
|
||||
inviteEmail: "",
|
||||
inviteMessage: "",
|
||||
roleMessage: "",
|
||||
permissions: {},
|
||||
folderService: service('folder'),
|
||||
appMeta: service(),
|
||||
users: [],
|
||||
folders: [],
|
||||
folder: {},
|
||||
moveTarget: null,
|
||||
inviteEmail: "",
|
||||
inviteMessage: "",
|
||||
roleMessage: "",
|
||||
permissions: {},
|
||||
|
||||
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.";
|
||||
},
|
||||
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.";
|
||||
},
|
||||
|
||||
willRender() {
|
||||
if (this.inviteMessage.length === 0) {
|
||||
this.set('inviteMessage', this.getDefaultInvitationMessage());
|
||||
}
|
||||
willRender() {
|
||||
if (this.inviteMessage.length === 0) {
|
||||
this.set('inviteMessage', this.getDefaultInvitationMessage());
|
||||
}
|
||||
|
||||
if (this.roleMessage.length === 0) {
|
||||
this.set('roleMessage', this.getDefaultInvitationMessage());
|
||||
}
|
||||
},
|
||||
if (this.roleMessage.length === 0) {
|
||||
this.set('roleMessage', this.getDefaultInvitationMessage());
|
||||
}
|
||||
},
|
||||
|
||||
actions: {
|
||||
rename() {
|
||||
if (is.empty(this.folder.get('name'))) {
|
||||
$("#folderName").addClass("error").focus();
|
||||
return;
|
||||
}
|
||||
actions: {
|
||||
rename() {
|
||||
if (is.empty(this.folder.get('name'))) {
|
||||
$("#folderName").addClass("error").focus();
|
||||
return;
|
||||
}
|
||||
|
||||
this.sendAction("onRename", this.folder);
|
||||
},
|
||||
this.sendAction("onRename", this.folder);
|
||||
},
|
||||
|
||||
remove() {
|
||||
if (is.null(this.get('moveTarget'))) {
|
||||
$("#delete-target > select").addClass("error").focus();
|
||||
return;
|
||||
}
|
||||
remove() {
|
||||
if (is.null(this.get('moveTarget'))) {
|
||||
$("#delete-target > select").addClass("error").focus();
|
||||
return;
|
||||
}
|
||||
|
||||
this.sendAction("onRemove", this.get('moveTarget').get('id'));
|
||||
},
|
||||
this.sendAction("onRemove", this.get('moveTarget').get('id'));
|
||||
},
|
||||
|
||||
share() {
|
||||
var email = this.get('inviteEmail').trim().replace(/ /g, '');
|
||||
var message = this.get('inviteMessage').trim();
|
||||
share() {
|
||||
var email = this.get('inviteEmail').trim().replace(/ /g, '');
|
||||
var message = this.get('inviteMessage').trim();
|
||||
|
||||
if (message.length === 0) {
|
||||
message = this.getDefaultInvitationMessage();
|
||||
}
|
||||
if (message.length === 0) {
|
||||
message = this.getDefaultInvitationMessage();
|
||||
}
|
||||
|
||||
if (email.length === 0) {
|
||||
$("#inviteEmail").addClass("error").focus();
|
||||
return;
|
||||
}
|
||||
if (email.length === 0) {
|
||||
$("#inviteEmail").addClass("error").focus();
|
||||
return;
|
||||
}
|
||||
|
||||
var result = {
|
||||
Message: message,
|
||||
Recipients: []
|
||||
};
|
||||
var result = {
|
||||
Message: message,
|
||||
Recipients: []
|
||||
};
|
||||
|
||||
// Check for multiple email addresses
|
||||
if (email.indexOf(",") > -1) {
|
||||
result.Recipients = email.split(',');
|
||||
}
|
||||
if (email.indexOf(";") > -1 && result.Recipients.length === 0) {
|
||||
result.Recipients = email.split(';');
|
||||
}
|
||||
// Check for multiple email addresses
|
||||
if (email.indexOf(",") > -1) {
|
||||
result.Recipients = email.split(',');
|
||||
}
|
||||
if (email.indexOf(";") > -1 && result.Recipients.length === 0) {
|
||||
result.Recipients = email.split(';');
|
||||
}
|
||||
|
||||
// Handle just one email address
|
||||
if (result.Recipients.length === 0 && email.length > 0) {
|
||||
result.Recipients.push(email);
|
||||
}
|
||||
// Handle just one email address
|
||||
if (result.Recipients.length === 0 && email.length > 0) {
|
||||
result.Recipients.push(email);
|
||||
}
|
||||
|
||||
this.set('inviteEmail', "");
|
||||
this.set('inviteEmail', "");
|
||||
|
||||
this.sendAction("onShare", result);
|
||||
},
|
||||
this.sendAction("onShare", result);
|
||||
},
|
||||
|
||||
setPermissions() {
|
||||
var message = this.get('roleMessage').trim();
|
||||
setPermissions() {
|
||||
var message = this.get('roleMessage').trim();
|
||||
|
||||
if (message.length === 0) {
|
||||
message = this.getDefaultInvitationMessage();
|
||||
}
|
||||
if (message.length === 0) {
|
||||
message = this.getDefaultInvitationMessage();
|
||||
}
|
||||
|
||||
this.get('permissions').forEach(function(permission, index) /* jshint ignore:line */ {
|
||||
Ember.set(permission, 'canView', $("#canView-" + permission.userId).prop('checked'));
|
||||
Ember.set(permission, 'canEdit', $("#canEdit-" + permission.userId).prop('checked'));
|
||||
});
|
||||
this.get('permissions').forEach((permission, index) => { /* jshint ignore:line */
|
||||
Ember.set(permission, 'canView', $("#canView-" + 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.
|
||||
//
|
||||
// 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 <sales@documize.com>.
|
||||
// by contacting <sales@documize.com>.
|
||||
//
|
||||
// https://documize.com
|
||||
|
||||
|
@ -14,71 +14,70 @@ import constants from '../../utils/constants';
|
|||
import TooltipMixin from '../../mixins/tooltip';
|
||||
|
||||
export default Ember.Component.extend(TooltipMixin, {
|
||||
folderService: Ember.inject.service('folder'),
|
||||
publicFolders: [],
|
||||
protectedFolders: [],
|
||||
privateFolders: [],
|
||||
hasPublicFolders: false,
|
||||
hasProtectedFolders: false,
|
||||
hasPrivateFolders: false,
|
||||
newFolder: "",
|
||||
folderService: Ember.inject.service('folder'),
|
||||
publicFolders: [],
|
||||
protectedFolders: [],
|
||||
privateFolders: [],
|
||||
hasPublicFolders: false,
|
||||
hasProtectedFolders: false,
|
||||
hasPrivateFolders: false,
|
||||
newFolder: "",
|
||||
|
||||
didInsertElement() {
|
||||
this._super(...arguments);
|
||||
if (this.session.authenticated) {
|
||||
this.addTooltip(document.getElementById("add-folder-button"));
|
||||
}
|
||||
},
|
||||
didInsertElement() {
|
||||
this._super(...arguments);
|
||||
if (this.session.authenticated) {
|
||||
this.addTooltip(document.getElementById("add-folder-button"));
|
||||
}
|
||||
},
|
||||
|
||||
didReceiveAttrs() {
|
||||
let folders = this.get('folders');
|
||||
let self = this;
|
||||
didReceiveAttrs() {
|
||||
let folders = this.get('folders');
|
||||
|
||||
// clear out state
|
||||
this.set('publicFolders', []);
|
||||
this.set('protectedFolders', []);
|
||||
this.set('privateFolders', []);
|
||||
// clear out state
|
||||
this.set('publicFolders', []);
|
||||
this.set('protectedFolders', []);
|
||||
this.set('privateFolders', []);
|
||||
|
||||
_.each(folders, folder => {
|
||||
if (folder.folderType === constants.FolderType.Public) {
|
||||
let folders = self.get('publicFolders');
|
||||
folders.pushObject(folder);
|
||||
self.set('publicFolders', folders);
|
||||
}
|
||||
if (folder.folderType === constants.FolderType.Private) {
|
||||
let folders = self.get('privateFolders');
|
||||
folders.pushObject(folder);
|
||||
self.set('privateFolders', folders);
|
||||
}
|
||||
if (folder.folderType === constants.FolderType.Protected) {
|
||||
let folders = self.get('protectedFolders');
|
||||
folders.pushObject(folder);
|
||||
self.set('protectedFolders', folders);
|
||||
}
|
||||
});
|
||||
_.each(folders, folder => {
|
||||
if (folder.get('folderType') === constants.FolderType.Public) {
|
||||
let folders = this.get('publicFolders');
|
||||
folders.pushObject(folder);
|
||||
this.set('publicFolders', folders);
|
||||
}
|
||||
if (folder.get('folderType') === constants.FolderType.Private) {
|
||||
let folders = this.get('privateFolders');
|
||||
folders.pushObject(folder);
|
||||
this.set('privateFolders', folders);
|
||||
}
|
||||
if (folder.get('folderType') === constants.FolderType.Protected) {
|
||||
let folders = this.get('protectedFolders');
|
||||
folders.pushObject(folder);
|
||||
this.set('protectedFolders', folders);
|
||||
}
|
||||
});
|
||||
|
||||
this.set('hasPublicFolders', this.get('publicFolders.length') > 0);
|
||||
this.set('hasPrivateFolders', this.get('privateFolders.length') > 0);
|
||||
this.set('hasProtectedFolders', this.get('protectedFolders.length') > 0);
|
||||
},
|
||||
this.set('hasPublicFolders', this.get('publicFolders.length') > 0);
|
||||
this.set('hasPrivateFolders', this.get('privateFolders.length') > 0);
|
||||
this.set('hasProtectedFolders', this.get('protectedFolders.length') > 0);
|
||||
},
|
||||
|
||||
willDestroyElement() {
|
||||
this.destroyTooltips();
|
||||
},
|
||||
willDestroyElement() {
|
||||
this.destroyTooltips();
|
||||
},
|
||||
|
||||
actions: {
|
||||
addFolder() {
|
||||
var folderName = this.get('newFolder');
|
||||
actions: {
|
||||
addFolder() {
|
||||
var folderName = this.get('newFolder');
|
||||
|
||||
if (is.empty(folderName)) {
|
||||
$("#new-folder-name").addClass("error").focus();
|
||||
return false;
|
||||
}
|
||||
if (is.empty(folderName)) {
|
||||
$("#new-folder-name").addClass("error").focus();
|
||||
return false;
|
||||
}
|
||||
|
||||
this.attrs.onFolderAdd(folderName);
|
||||
this.attrs.onFolderAdd(folderName);
|
||||
|
||||
this.set('newFolder', "");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
});
|
||||
this.set('newFolder', "");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
|
@ -20,7 +20,7 @@ export default Model.extend({
|
|||
name: attr('string'),
|
||||
orgId: attr('string'),
|
||||
userId: attr('string'),
|
||||
folderType: constants.FolderType.Private,
|
||||
folderType: attr('number', { defaultValue: 2 }),
|
||||
|
||||
slug: Ember.computed('name', function () {
|
||||
return stringUtil.makeSlug(this.get('name'));
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
// 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
|
||||
//
|
||||
// You can operate outside the AGPL restrictions by purchasing
|
||||
// Documize Enterprise Edition and obtaining a commercial license
|
||||
// by contacting <sales@documize.com>.
|
||||
// by contacting <sales@documize.com>.
|
||||
//
|
||||
// https://documize.com
|
||||
|
||||
|
@ -31,4 +31,4 @@ export default Ember.Route.extend(AuthenticatedRouteMixin, {
|
|||
this.browser.setTitle(model.folder.get('name'));
|
||||
this.get('folderService').setCurrentFolder(model.folder);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
|
|
@ -27,7 +27,7 @@ export default Ember.Route.extend(AuthenticatedRouteMixin, {
|
|||
},
|
||||
|
||||
afterModel: function (model) {
|
||||
|
||||
debugger;
|
||||
let params = this.paramsFor('folders.folder');
|
||||
|
||||
if (is.empty(params)) {
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
// 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
|
||||
//
|
||||
// You can operate outside the AGPL restrictions by purchasing
|
||||
// Documize Enterprise Edition and obtaining a commercial license
|
||||
// by contacting <sales@documize.com>.
|
||||
// by contacting <sales@documize.com>.
|
||||
//
|
||||
// https://documize.com
|
||||
|
||||
|
@ -13,11 +13,16 @@ import Ember from 'ember';
|
|||
import models from '../../../utils/model';
|
||||
import NotifierMixin from '../../../mixins/notifier';
|
||||
|
||||
const {
|
||||
inject: { service }
|
||||
} = Ember;
|
||||
|
||||
export default Ember.Route.extend(NotifierMixin, {
|
||||
folderService: Ember.inject.service('folder'),
|
||||
userService: Ember.inject.service('user'),
|
||||
folderService: service('folder'),
|
||||
userService: service('user'),
|
||||
folder: {},
|
||||
tab: "",
|
||||
localStorage: service(),
|
||||
|
||||
beforeModel: function (transition) {
|
||||
this.tab = is.not.undefined(transition.queryParams.tab) ? transition.queryParams.tab : "tabGeneral";
|
||||
|
@ -100,36 +105,33 @@ export default Ember.Route.extend(NotifierMixin, {
|
|||
},
|
||||
|
||||
onRemove(moveId) {
|
||||
let self = this;
|
||||
|
||||
this.get('folderService').remove(this.folder.get('id'), moveId).then(function () { /* jshint ignore:line */
|
||||
self.showNotification("Deleted");
|
||||
self.session.clearSessionItem('folder');
|
||||
this.get('folderService').remove(this.folder.get('id'), moveId).then(() => { /* jshint ignore:line */
|
||||
this.showNotification("Deleted");
|
||||
this.get('localStorage').clearSessionItem('folder');
|
||||
|
||||
self.get('folderService').getFolder(moveId).then(function (folder) {
|
||||
self.get('folderService').setCurrentFolder(folder);
|
||||
self.transitionTo('folders.folder', folder.get('id'), folder.get('slug'));
|
||||
this.get('folderService').getFolder(moveId).then((folder) => {
|
||||
this.get('folderService').setCurrentFolder(folder);
|
||||
this.transitionTo('folders.folder', folder.get('id'), folder.get('slug'));
|
||||
});
|
||||
});
|
||||
},
|
||||
|
||||
onShare: function (invitation) {
|
||||
let self = this;
|
||||
|
||||
this.get('folderService').share(this.folder.get('id'), invitation).then(function () {
|
||||
self.showNotification("Shared");
|
||||
this.get('folderService').share(this.folder.get('id'), invitation).then(() => {
|
||||
this.showNotification("Shared");
|
||||
});
|
||||
},
|
||||
|
||||
onPermission: function (folder, message, permissions) {
|
||||
var self = this;
|
||||
var data = permissions.map(function (obj) {
|
||||
return obj.getProperties('orgId', 'folderId', 'userId', 'canEdit', 'canView');
|
||||
});
|
||||
var payload = { Message: message, Roles: data };
|
||||
|
||||
this.get('folderService').savePermissions(folder.get('id'), payload).then(function () {
|
||||
self.showNotification("Saved");
|
||||
this.get('folderService').savePermissions(folder.get('id'), payload).then(() => {
|
||||
this.showNotification("Saved");
|
||||
});
|
||||
|
||||
var hasEveryone = _.find(data, function (permission) {
|
||||
|
|
|
@ -39,6 +39,10 @@ export default Ember.Service.extend({
|
|||
content: Ember.A([])
|
||||
});
|
||||
|
||||
if (isObject(response)) {
|
||||
return documents;
|
||||
}
|
||||
|
||||
documents = response.map((doc) => {
|
||||
let data = this.get('store').normalize('document', doc);
|
||||
return this.get('store').push({ data: data });
|
||||
|
|
|
@ -14,7 +14,7 @@ import BaseService from '../services/base';
|
|||
|
||||
const {
|
||||
get,
|
||||
RSVP: { resolve },
|
||||
RSVP,
|
||||
inject: { service }
|
||||
} = Ember;
|
||||
|
||||
|
@ -41,7 +41,6 @@ export default BaseService.extend({
|
|||
|
||||
// Returns folder model for specified folder id.
|
||||
getFolder(id) {
|
||||
|
||||
return this.get('ajax').request(`folders/${id}`, {
|
||||
method: 'GET'
|
||||
}).then((folder) => {
|
||||
|
@ -52,12 +51,14 @@ export default BaseService.extend({
|
|||
|
||||
// Returns all folders that user can see.
|
||||
getAll() {
|
||||
let folders = this.get('folders');
|
||||
|
||||
if (this.get('folders') != null) {
|
||||
return new resolve(this.get('folders'));
|
||||
} else {
|
||||
return this.reload();
|
||||
if (folders != null) {
|
||||
return new RSVP.resolve(folders);
|
||||
}
|
||||
|
||||
return this.reload();
|
||||
|
||||
},
|
||||
|
||||
// Updates an existing folder record.
|
||||
|
@ -140,7 +141,6 @@ export default BaseService.extend({
|
|||
|
||||
// persist folder permissions
|
||||
savePermissions(folderId, payload) {
|
||||
|
||||
return this.get('ajax').request(`folders/${folderId}/permissions`, {
|
||||
method: 'PUT',
|
||||
contentType: 'json',
|
||||
|
|
|
@ -33,11 +33,11 @@ export default Ember.Service.extend({
|
|||
|
||||
// Updates an existing organization record.
|
||||
save(org) {
|
||||
let id = org.get('id');
|
||||
let id = org.id;
|
||||
|
||||
this.get('appMeta').setProperties({
|
||||
message: org.message,
|
||||
title: org.title
|
||||
message: org.get('message'),
|
||||
title: org.get('title')
|
||||
});
|
||||
|
||||
return this.get('ajax').request(`organizations/${id}`, {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue