1
0
Fork 0
mirror of https://github.com/documize/community.git synced 2025-07-20 21:59: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';
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'));
}
}
});

View file

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

View file

@ -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'));

View file

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

View file

@ -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) {

View file

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

View file

@ -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',

View file

@ -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}`, {