mirror of
https://github.com/documize/community.git
synced 2025-07-24 15:49:44 +02:00
Merge branch 'master' into wordconvert
This commit is contained in:
commit
788437ff64
45 changed files with 1666 additions and 1124 deletions
|
@ -1,64 +1,64 @@
|
|||
// 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
|
||||
|
||||
import Ember from 'ember';
|
||||
|
||||
export default Ember.Component.extend({
|
||||
document: {},
|
||||
meta: [],
|
||||
pages: [],
|
||||
document: {},
|
||||
meta: [],
|
||||
pages: [],
|
||||
|
||||
didReceiveAttrs() {
|
||||
let editors = this.get('meta.editors');
|
||||
let toc = this.get('pages');
|
||||
didReceiveAttrs() {
|
||||
let editors = this.get('meta.editors');
|
||||
let toc = this.get('pages');
|
||||
|
||||
if (is.null(editors)) {
|
||||
return;
|
||||
}
|
||||
if (is.null(editors)) {
|
||||
return;
|
||||
}
|
||||
|
||||
editors.forEach(function(item) {
|
||||
Ember.set(item, "added", item.action === "add-page");
|
||||
Ember.set(item, "changed", item.action === "update-page");
|
||||
Ember.set(item, "deleted", item.action === "remove-page");
|
||||
editors.forEach(function (item) {
|
||||
Ember.set(item, "added", item.action === "add-page");
|
||||
Ember.set(item, "changed", item.action === "update-page");
|
||||
Ember.set(item, "deleted", item.action === "remove-page");
|
||||
|
||||
let page = _.findWhere(toc, {
|
||||
id: item.pageId
|
||||
});
|
||||
let title = "";
|
||||
let page = _.findWhere(toc, {
|
||||
id: item.pageId
|
||||
});
|
||||
let title = "";
|
||||
|
||||
if (is.not.undefined(page)) {
|
||||
title = page.title;
|
||||
if (is.not.undefined(page)) {
|
||||
title = page.get('title');
|
||||
|
||||
if (item.added) {
|
||||
Ember.set(item, 'changeLabel', "added " + title);
|
||||
}
|
||||
if (item.added) {
|
||||
Ember.set(item, 'changeLabel', "added " + title);
|
||||
}
|
||||
|
||||
if (item.changed) {
|
||||
Ember.set(item, 'changeLabel', "changed " + title);
|
||||
}
|
||||
} else {
|
||||
Ember.set(item, "deleted", true);
|
||||
if (item.changed) {
|
||||
Ember.set(item, 'changeLabel', "changed " + title);
|
||||
}
|
||||
} else {
|
||||
Ember.set(item, "deleted", true);
|
||||
|
||||
if (item.added) {
|
||||
Ember.set(item, 'changeLabel', "added section (since removed)");
|
||||
}
|
||||
if (item.added) {
|
||||
Ember.set(item, 'changeLabel', "added section (since removed)");
|
||||
}
|
||||
|
||||
if (item.changed) {
|
||||
Ember.set(item, 'changeLabel', "changed section (since removed)");
|
||||
}
|
||||
if (item.changed) {
|
||||
Ember.set(item, 'changeLabel', "changed section (since removed)");
|
||||
}
|
||||
|
||||
if (item.deleted) {
|
||||
Ember.set(item, 'changeLabel', "removed section");
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
if (item.deleted) {
|
||||
Ember.set(item, 'changeLabel', "removed section");
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
|
@ -12,14 +12,19 @@
|
|||
import Ember from 'ember';
|
||||
import netUtil from '../../utils/net';
|
||||
|
||||
const {
|
||||
inject: { service }
|
||||
} = Ember;
|
||||
|
||||
export default Ember.Component.extend({
|
||||
folderService: Ember.inject.service('folder'),
|
||||
folderService: service('folder'),
|
||||
folder: null,
|
||||
appMeta: Ember.inject.service(),
|
||||
appMeta: service(),
|
||||
session: service(),
|
||||
|
||||
didInitAttrs() {
|
||||
if (this.get("session.authenticated")) {
|
||||
this.get("session.user.accounts").forEach((account)=>{
|
||||
this.get("session.session.content.authenticated.user.accounts").forEach((account) => {
|
||||
// TODO: do not mutate account.active here
|
||||
account.active = account.orgId === this.get("appMeta.orgId");
|
||||
});
|
||||
|
|
|
@ -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
|
||||
|
||||
|
@ -54,7 +54,8 @@ export default Ember.Component.extend({
|
|||
let self = this;
|
||||
|
||||
let user = this.users.findBy("id", id);
|
||||
this.set('editUser', user.copy());
|
||||
let userCopy = user.getProperties('id', 'created', 'revised', 'firstname', 'lastname', 'email', 'initials', 'active', 'editor', 'admin', 'accounts');
|
||||
this.set('editUser', userCopy);
|
||||
this.set('password', {
|
||||
password: "",
|
||||
confirmation: ""
|
||||
|
@ -112,15 +113,15 @@ export default Ember.Component.extend({
|
|||
let user = this.get('editUser');
|
||||
let password = this.get('password');
|
||||
|
||||
if (is.empty(user.get('firstname'))) {
|
||||
if (is.empty(user.firstname)) {
|
||||
$("#edit-firstname").addClass("error").focus();
|
||||
return;
|
||||
}
|
||||
if (is.empty(user.get('lastname'))) {
|
||||
if (is.empty(user.lastname)) {
|
||||
$("#edit-lastname").addClass("error").focus();
|
||||
return;
|
||||
}
|
||||
if (is.empty(user.get('email'))) {
|
||||
if (is.empty(user.email)) {
|
||||
$("#edit-email").addClass("error").focus();
|
||||
return;
|
||||
}
|
||||
|
@ -144,4 +145,4 @@ export default Ember.Component.extend({
|
|||
this.attrs.onDelete(user);
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
|
25
app/app/models/attachment.js
Normal file
25
app/app/models/attachment.js
Normal file
|
@ -0,0 +1,25 @@
|
|||
// Copyright 2016 Documize Inc. <legal@documize.com>. All rights reserved.
|
||||
//
|
||||
// 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>.
|
||||
//
|
||||
// https://documize.com
|
||||
|
||||
import Model from 'ember-data/model';
|
||||
import attr from 'ember-data/attr';
|
||||
// import { belongsTo, hasMany } from 'ember-data/relationships';
|
||||
|
||||
export default Model.extend({
|
||||
documentId: attr('string'),
|
||||
extension: attr('string'),
|
||||
fileId: attr('string'),
|
||||
filename: attr('string'),
|
||||
job: attr('string'),
|
||||
orgId: attr('string'),
|
||||
created: attr(),
|
||||
revised: attr(),
|
||||
});
|
36
app/app/models/document.js
Normal file
36
app/app/models/document.js
Normal file
|
@ -0,0 +1,36 @@
|
|||
// Copyright 2016 Documize Inc. <legal@documize.com>. All rights reserved.
|
||||
//
|
||||
// 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>.
|
||||
//
|
||||
// https://documize.com
|
||||
|
||||
import Model from 'ember-data/model';
|
||||
import attr from 'ember-data/attr';
|
||||
import Ember from 'ember';
|
||||
import stringUtil from '../utils/string';
|
||||
// import { belongsTo, hasMany } from 'ember-data/relationships';
|
||||
|
||||
export default Model.extend({
|
||||
name: attr('string'),
|
||||
excerpt: attr('string'),
|
||||
job: attr('string'),
|
||||
location: attr('string'),
|
||||
orgId: attr('string'),
|
||||
folderId: attr('string'),
|
||||
userId: attr('string'),
|
||||
tags: attr('string'),
|
||||
template: attr('boolean'),
|
||||
|
||||
// client-side property
|
||||
selected: attr('boolean', { defaultValue: false }),
|
||||
slug: Ember.computed('name', function () {
|
||||
return stringUtil.makeSlug(this.get('name'));
|
||||
}),
|
||||
created: attr(),
|
||||
revised: attr()
|
||||
});
|
23
app/app/models/folder-permission.js
Normal file
23
app/app/models/folder-permission.js
Normal file
|
@ -0,0 +1,23 @@
|
|||
// Copyright 2016 Documize Inc. <legal@documize.com>. All rights reserved.
|
||||
//
|
||||
// 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>.
|
||||
//
|
||||
// https://documize.com
|
||||
|
||||
import Model from 'ember-data/model';
|
||||
import attr from 'ember-data/attr';
|
||||
// import { belongsTo, hasMany } from 'ember-data/relationships';
|
||||
|
||||
export default Model.extend({
|
||||
orgId: attr('string'),
|
||||
folderId: attr('string'),
|
||||
userId: attr('string'),
|
||||
fullname: attr('string'),
|
||||
canView: attr('boolean', { defaultValue: false }),
|
||||
canEdit: attr('boolean', { defaultValue: false })
|
||||
});
|
45
app/app/models/folder.js
Normal file
45
app/app/models/folder.js
Normal file
|
@ -0,0 +1,45 @@
|
|||
// Copyright 2016 Documize Inc. <legal@documize.com>. All rights reserved.
|
||||
//
|
||||
// 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>.
|
||||
//
|
||||
// https://documize.com
|
||||
|
||||
import Model from 'ember-data/model';
|
||||
import attr from 'ember-data/attr';
|
||||
import constants from '../utils/constants';
|
||||
import stringUtil from '../utils/string';
|
||||
import Ember from 'ember';
|
||||
// import { belongsTo, hasMany } from 'ember-data/relationships';
|
||||
|
||||
export default Model.extend({
|
||||
name: attr('string'),
|
||||
orgId: attr('string'),
|
||||
userId: attr('string'),
|
||||
folderType: attr('number', { defaultValue: 2 }),
|
||||
|
||||
slug: Ember.computed('name', function () {
|
||||
return stringUtil.makeSlug(this.get('name'));
|
||||
}),
|
||||
|
||||
markAsRestricted() {
|
||||
this.set('folderType', constants.FolderType.Protected);
|
||||
},
|
||||
|
||||
markAsPrivate() {
|
||||
this.set('folderType', constants.FolderType.Private);
|
||||
},
|
||||
|
||||
markAsPublic() {
|
||||
this.set('folderType', constants.FolderType.Public);
|
||||
},
|
||||
|
||||
// client-side prop that holds who can see this folder
|
||||
sharedWith: attr(),
|
||||
created: attr(),
|
||||
revised: attr()
|
||||
});
|
23
app/app/models/organization.js
Normal file
23
app/app/models/organization.js
Normal file
|
@ -0,0 +1,23 @@
|
|||
// Copyright 2016 Documize Inc. <legal@documize.com>. All rights reserved.
|
||||
//
|
||||
// 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>.
|
||||
//
|
||||
// https://documize.com
|
||||
|
||||
import Model from 'ember-data/model';
|
||||
import attr from 'ember-data/attr';
|
||||
// import { belongsTo, hasMany } from 'ember-data/relationships';
|
||||
|
||||
export default Model.extend({
|
||||
title: attr('string'),
|
||||
message: attr('string'),
|
||||
email: attr('string'),
|
||||
allowAnonymousAccess: attr('boolean', { defaultValue: false }),
|
||||
created: attr(),
|
||||
revised: attr()
|
||||
});
|
25
app/app/models/page-meta.js
Normal file
25
app/app/models/page-meta.js
Normal file
|
@ -0,0 +1,25 @@
|
|||
// Copyright 2016 Documize Inc. <legal@documize.com>. All rights reserved.
|
||||
//
|
||||
// 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>.
|
||||
//
|
||||
// https://documize.com
|
||||
|
||||
import Model from 'ember-data/model';
|
||||
import attr from 'ember-data/attr';
|
||||
// import { belongsTo } from 'ember-data/relationships';
|
||||
|
||||
export default Model.extend({
|
||||
pageId: attr('string'),
|
||||
documentId: attr('string'),
|
||||
orgId: attr('string'),
|
||||
rawBody: attr(),
|
||||
config: attr(),
|
||||
externalSource: attr('boolean', { defaultValue: false }),
|
||||
created: attr(),
|
||||
revised: attr(),
|
||||
});
|
44
app/app/models/page.js
Normal file
44
app/app/models/page.js
Normal file
|
@ -0,0 +1,44 @@
|
|||
// Copyright 2016 Documize Inc. <legal@documize.com>. All rights reserved.
|
||||
//
|
||||
// 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>.
|
||||
//
|
||||
// https://documize.com
|
||||
|
||||
import Model from 'ember-data/model';
|
||||
import attr from 'ember-data/attr';
|
||||
import Ember from 'ember';
|
||||
// import { hasMany } from 'ember-data/relationships';
|
||||
|
||||
export default Model.extend({
|
||||
documentId: attr('string'),
|
||||
orgId: attr('string'),
|
||||
contentType: attr('string'),
|
||||
level: attr('number', { defaultValue: 1 }),
|
||||
sequence: attr('number', { defaultValue: 0 }),
|
||||
revisions: attr('number', { defaultValue: 0 }),
|
||||
title: attr('string'),
|
||||
body: attr('string'),
|
||||
rawBody: attr('string'),
|
||||
meta: attr(),
|
||||
// meta: hasMany('page-meta'),
|
||||
|
||||
tagName: Ember.computed('level', function () {
|
||||
return "h" + this.get('level');
|
||||
}),
|
||||
|
||||
tocIndent: Ember.computed('level', function () {
|
||||
return (this.get('level') - 1) * 20;
|
||||
}),
|
||||
|
||||
tocIndentCss: Ember.computed('tocIndent', function () {
|
||||
let tocIndent = this.get('tocIndent');
|
||||
return `margin-left-${tocIndent}`;
|
||||
}),
|
||||
created: attr(),
|
||||
revised: attr()
|
||||
});
|
29
app/app/models/protected-folder-participant.js
Normal file
29
app/app/models/protected-folder-participant.js
Normal file
|
@ -0,0 +1,29 @@
|
|||
// Copyright 2016 Documize Inc. <legal@documize.com>. All rights reserved.
|
||||
//
|
||||
// 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>.
|
||||
//
|
||||
// https://documize.com
|
||||
|
||||
import Model from 'ember-data/model';
|
||||
import attr from 'ember-data/attr';
|
||||
import Ember from 'ember';
|
||||
// import { belongsTo, hasMany } from 'ember-data/relationships';
|
||||
|
||||
export default Model.extend({
|
||||
userId: attr('string'),
|
||||
email: attr('string'),
|
||||
firstname: attr('string'),
|
||||
lastname: attr('string'),
|
||||
name: attr('string'),
|
||||
folderId: attr('string'),
|
||||
folderType: attr('number', { defaultValue: 0 }),
|
||||
|
||||
fullname: Ember.computed('firstname', 'lastname', function () {
|
||||
return `${this.get('firstname')} ${this.get('lastname')}`;
|
||||
})
|
||||
});
|
29
app/app/models/section.js
Normal file
29
app/app/models/section.js
Normal file
|
@ -0,0 +1,29 @@
|
|||
// Copyright 2016 Documize Inc. <legal@documize.com>. All rights reserved.
|
||||
//
|
||||
// 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>.
|
||||
//
|
||||
// https://documize.com
|
||||
|
||||
import Model from 'ember-data/model';
|
||||
import attr from 'ember-data/attr';
|
||||
import Ember from 'ember';
|
||||
// import { belongsTo, hasMany } from 'ember-data/relationships';
|
||||
|
||||
export default Model.extend({
|
||||
contentType: attr('string'),
|
||||
title: attr('string'),
|
||||
description: attr('string'),
|
||||
iconFont: attr('string'),
|
||||
iconFile: attr('string'),
|
||||
|
||||
hasImage: Ember.computed('iconFont', 'iconFile', function () {
|
||||
return this.get('iconFile').length > 0;
|
||||
}),
|
||||
created: attr(),
|
||||
revised: attr()
|
||||
});
|
30
app/app/models/template.js
Normal file
30
app/app/models/template.js
Normal file
|
@ -0,0 +1,30 @@
|
|||
// Copyright 2016 Documize Inc. <legal@documize.com>. All rights reserved.
|
||||
//
|
||||
// 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>.
|
||||
//
|
||||
// https://documize.com
|
||||
|
||||
import Model from 'ember-data/model';
|
||||
import attr from 'ember-data/attr';
|
||||
import stringUtil from '../utils/string';
|
||||
import Ember from 'ember';
|
||||
// import { belongsTo, hasMany } from 'ember-data/relationships';
|
||||
|
||||
export default Model.extend({
|
||||
author: attr('string'),
|
||||
dated: attr(),
|
||||
description: attr('string'),
|
||||
title: attr('string'),
|
||||
type: attr('number', { defaultValue: 0 }),
|
||||
|
||||
slug: Ember.computed('title', function () {
|
||||
return stringUtil.makeSlug(this.get('title'));
|
||||
}),
|
||||
created: attr(),
|
||||
revised: attr()
|
||||
});
|
38
app/app/models/user.js
Normal file
38
app/app/models/user.js
Normal file
|
@ -0,0 +1,38 @@
|
|||
// Copyright 2016 Documize Inc. <legal@documize.com>. All rights reserved.
|
||||
//
|
||||
// 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>.
|
||||
//
|
||||
// https://documize.com
|
||||
|
||||
import Model from 'ember-data/model';
|
||||
import attr from 'ember-data/attr';
|
||||
import Ember from 'ember';
|
||||
// import { belongsTo, hasMany } from 'ember-data/relationships';
|
||||
|
||||
export default Model.extend({
|
||||
firstname: attr('string'),
|
||||
lastname: attr('string'),
|
||||
email: attr('string'),
|
||||
initials: attr('string'),
|
||||
active: attr('boolean', { defaultValue: false }),
|
||||
editor: attr('boolean', { defaultValue: false }),
|
||||
admin: attr('boolean', { defaultValue: false }),
|
||||
accounts: attr(),
|
||||
created: attr(),
|
||||
revised: attr(),
|
||||
|
||||
fullname: Ember.computed('firstname', 'lastname', function () {
|
||||
return `${this.get('firstname')} ${this.get('lastname')}`;
|
||||
}),
|
||||
|
||||
generateInitials() {
|
||||
let first = this.get('firstname').trim();
|
||||
let last = this.get('lastname').trim();
|
||||
this.set('initials', first.substr(0, 1) + last.substr(0, 1));
|
||||
}
|
||||
});
|
|
@ -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
|
||||
|
||||
|
@ -27,17 +27,16 @@ export default Ember.Controller.extend(NotifierMixin, {
|
|||
|
||||
actions: {
|
||||
changeOwner: function (folderId, userId) {
|
||||
let self = this;
|
||||
this.get('folderService').getFolder(folderId).then(function (folder) {
|
||||
this.get('folderService').getFolder(folderId).then((folder) => {
|
||||
folder.set('userId', userId);
|
||||
|
||||
self.get('folderService').save(folder).then(function () {
|
||||
self.showNotification("Changed");
|
||||
self.audit.record('changed-folder-owner');
|
||||
this.get('folderService').save(folder).then(() => {
|
||||
this.showNotification("Changed");
|
||||
this.audit.record('changed-folder-owner');
|
||||
});
|
||||
|
||||
self.send('onChangeOwner');
|
||||
this.send('onChangeOwner');
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
|
|
@ -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
|
||||
|
||||
|
@ -29,17 +29,17 @@ export default Ember.Route.extend(AuthenticatedRouteMixin, {
|
|||
let nonPrivateFolders = model.rejectBy('folderType', 2);
|
||||
controller.set('folders', nonPrivateFolders);
|
||||
|
||||
this.get('folderService').getProtectedFolderInfo().then(function (people) {
|
||||
people.forEach(function (person) {
|
||||
person.isEveryone = person.userId === '';
|
||||
person.isOwner = false;
|
||||
this.get('folderService').getProtectedFolderInfo().then((people) => {
|
||||
people.forEach((person) => {
|
||||
person.set('isEveryone', person.get('userId') === '');
|
||||
person.set('isOwner', false);
|
||||
});
|
||||
|
||||
nonPrivateFolders.forEach(function (folder) {
|
||||
let shared = people.filterBy('folderId', folder.get('id'));
|
||||
let person = shared.findBy('userId', folder.get('userId'));
|
||||
if (is.not.undefined(person)) {
|
||||
person.isOwner = true;
|
||||
person.set('isOwner', true);
|
||||
}
|
||||
|
||||
folder.set('sharedWith', shared);
|
||||
|
@ -56,4 +56,4 @@ export default Ember.Route.extend(AuthenticatedRouteMixin, {
|
|||
this.refresh();
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
|
|
@ -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
|
||||
|
||||
|
@ -29,8 +29,8 @@ export default Ember.Controller.extend(NotifierMixin, {
|
|||
this.showNotification("Saving");
|
||||
|
||||
let model = {
|
||||
page: page,
|
||||
meta: meta
|
||||
page: page.toJSON({ includeId: true }),
|
||||
meta: meta.toJSON({ includeId: true })
|
||||
};
|
||||
|
||||
this.get('documentService').updatePage(page.get('documentId'), page.get('id'), model).then(function () {
|
||||
|
@ -43,4 +43,4 @@ export default Ember.Controller.extend(NotifierMixin, {
|
|||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
|
|
@ -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
|
||||
|
||||
|
@ -79,7 +79,7 @@ export default Ember.Controller.extend(NotifierMixin, {
|
|||
}
|
||||
});
|
||||
|
||||
self.set('pages', _.sortBy(self.get('pages'), "sequence"));
|
||||
self.set('pages', self.get('pages').sortBy('sequence'));
|
||||
});
|
||||
},
|
||||
|
||||
|
@ -98,7 +98,7 @@ export default Ember.Controller.extend(NotifierMixin, {
|
|||
});
|
||||
|
||||
let pages = self.get('pages');
|
||||
pages = _.sortBy(pages, "sequence");
|
||||
pages = pages.sortBy('sequence');
|
||||
self.set('pages', []);
|
||||
self.set('pages', pages);
|
||||
});
|
||||
|
@ -216,4 +216,4 @@ export default Ember.Controller.extend(NotifierMixin, {
|
|||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
|
|
@ -1,49 +1,52 @@
|
|||
import Ember from 'ember';
|
||||
import models from '../../../utils/model';
|
||||
import NotifierMixin from '../../../mixins/notifier';
|
||||
|
||||
export default Ember.Controller.extend(NotifierMixin, {
|
||||
documentService: Ember.inject.service('document'),
|
||||
documentService: Ember.inject.service('document'),
|
||||
|
||||
actions: {
|
||||
onCancel() {
|
||||
this.transitionToRoute('document');
|
||||
},
|
||||
|
||||
onAddSection(section) {
|
||||
let self = this;
|
||||
actions: {
|
||||
onCancel() {
|
||||
this.transitionToRoute('document');
|
||||
},
|
||||
|
||||
onAddSection(section) {
|
||||
this.audit.record("added-section");
|
||||
this.audit.record("added-section-" + section.contentType);
|
||||
this.audit.record("added-section-" + section.get('contentType'));
|
||||
|
||||
let page = models.PageModel.create({
|
||||
documentId: this.get('model.document.id'),
|
||||
title: `${section.title} Section`,
|
||||
level: 1,
|
||||
sequence: 2048,
|
||||
body: "",
|
||||
contentType: section.contentType
|
||||
});
|
||||
let page = {
|
||||
documentId: this.get('model.document.id'),
|
||||
title: `${section.get('title')} Section`,
|
||||
level: 1,
|
||||
sequence: 2048,
|
||||
body: "",
|
||||
contentType: section.get('contentType')
|
||||
};
|
||||
|
||||
let meta = models.PageMetaModel.create({
|
||||
documentId: this.get('model.document.id'),
|
||||
rawBody: "",
|
||||
config: ""
|
||||
});
|
||||
let data = this.get('store').normalize('page', page);
|
||||
let pageData = this.get('store').push(data);
|
||||
|
||||
let model = {
|
||||
page: page,
|
||||
meta: meta
|
||||
};
|
||||
let meta = {
|
||||
documentId: this.get('model.document.id'),
|
||||
rawBody: "",
|
||||
config: ""
|
||||
};
|
||||
|
||||
this.get('documentService').addPage(this.get('model.document.id'), model).then(function(newPage) {
|
||||
self.transitionToRoute('document.edit',
|
||||
self.get('model.folder.id'),
|
||||
self.get('model.folder.slug'),
|
||||
self.get('model.document.id'),
|
||||
self.get('model.document.slug'),
|
||||
newPage.id);
|
||||
});
|
||||
}
|
||||
}
|
||||
let pageMeta = this.get('store').normalize('page-meta', meta);
|
||||
let pageMetaData = this.get('store').push(pageMeta);
|
||||
|
||||
let model = {
|
||||
page: pageData,
|
||||
meta: pageMetaData
|
||||
};
|
||||
|
||||
this.get('documentService').addPage(this.get('model.document.id'), model).then((newPage) => {
|
||||
this.transitionToRoute('document.edit',
|
||||
this.get('model.folder.id'),
|
||||
this.get('model.folder.slug'),
|
||||
this.get('model.document.id'),
|
||||
this.get('model.document.slug'),
|
||||
newPage.id);
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
|
@ -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,6 @@ export default Ember.Route.extend(AuthenticatedRouteMixin, {
|
|||
},
|
||||
|
||||
afterModel: function (model) {
|
||||
|
||||
let params = this.paramsFor('folders.folder');
|
||||
|
||||
if (is.empty(params)) {
|
||||
|
|
|
@ -1,23 +1,28 @@
|
|||
// 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
|
||||
|
||||
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(),
|
||||
store: service(),
|
||||
|
||||
beforeModel: function (transition) {
|
||||
this.tab = is.not.undefined(transition.queryParams.tab) ? transition.queryParams.tab : "tabGeneral";
|
||||
|
@ -28,7 +33,6 @@ export default Ember.Route.extend(NotifierMixin, {
|
|||
},
|
||||
|
||||
setupController(controller, model) {
|
||||
var self = this;
|
||||
this.folder = model;
|
||||
controller.set('model', model);
|
||||
|
||||
|
@ -38,54 +42,63 @@ export default Ember.Route.extend(NotifierMixin, {
|
|||
controller.set('tabDelete', false);
|
||||
controller.set(this.get('tab'), true);
|
||||
|
||||
this.get('folderService').getAll().then(function (folders) {
|
||||
this.get('folderService').getAll().then((folders) => {
|
||||
controller.set('folders', folders.rejectBy('id', model.get('id')));
|
||||
});
|
||||
|
||||
this.get('userService').getAll().then(function (users) {
|
||||
this.get('userService').getAll().then((users) => {
|
||||
controller.set('users', users);
|
||||
|
||||
var folderPermissions = [];
|
||||
|
||||
var u = models.FolderPermissionModel.create({
|
||||
users.forEach((user) => {
|
||||
let isActive = user.get('active');
|
||||
|
||||
let u = {
|
||||
userId: user.get('id'),
|
||||
fullname: user.get('fullname'),
|
||||
orgId: model.get('orgId'),
|
||||
folderId: model.get('id'),
|
||||
canEdit: false,
|
||||
canView: false,
|
||||
canViewPrevious: false
|
||||
};
|
||||
|
||||
if (isActive) {
|
||||
folderPermissions.pushObject(u);
|
||||
}
|
||||
});
|
||||
|
||||
var u = {
|
||||
userId: "",
|
||||
fullname: " Everyone",
|
||||
orgId: model.get('orgId'),
|
||||
folderId: model.get('id'),
|
||||
canEdit: false,
|
||||
canView: false
|
||||
});
|
||||
};
|
||||
|
||||
folderPermissions.pushObject(u);
|
||||
|
||||
users.forEach(function (user, index) /* jshint ignore:line */ {
|
||||
if (user.get('active')) {
|
||||
var u = models.FolderPermissionModel.create({
|
||||
userId: user.get('id'),
|
||||
fullname: user.get('fullname'),
|
||||
orgId: model.get('orgId'),
|
||||
folderId: model.get('id'),
|
||||
canEdit: false,
|
||||
canView: false,
|
||||
canViewPrevious: false
|
||||
});
|
||||
|
||||
folderPermissions.pushObject(u);
|
||||
}
|
||||
});
|
||||
|
||||
self.get('folderService').getPermissions(model.id).then(function (permissions) {
|
||||
permissions.forEach(function (permission, index) /* jshint ignore:line */ {
|
||||
var folderPermission = folderPermissions.findBy('userId', permission.userId);
|
||||
this.get('folderService').getPermissions(model.id).then((permissions) => {
|
||||
permissions.forEach((permission, index) => { /* jshint ignore:line */
|
||||
var folderPermission = folderPermissions.findBy('userId', permission.get('userId'));
|
||||
if (is.not.undefined(folderPermission)) {
|
||||
Ember.set(folderPermission, 'orgId', permission.orgId);
|
||||
Ember.set(folderPermission, 'folderId', permission.folderId);
|
||||
Ember.set(folderPermission, 'canEdit', permission.canEdit);
|
||||
Ember.set(folderPermission, 'canView', permission.canView);
|
||||
Ember.set(folderPermission, 'canViewPrevious', permission.canView);
|
||||
Ember.setProperties(folderPermission, {
|
||||
orgId: permission.get('orgId'),
|
||||
folderId: permission.get('folderId'),
|
||||
canEdit: permission.get('canEdit'),
|
||||
canView: permission.get('canView'),
|
||||
canViewPrevious: permission.get('canView')
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
folderPermissions.map((permission) => {
|
||||
let data = this.get('store').normalize('folder-permission', permission);
|
||||
return this.get('store').push(data);
|
||||
});
|
||||
|
||||
controller.set('permissions', folderPermissions.sortBy('fullname'));
|
||||
});
|
||||
});
|
||||
|
@ -100,36 +113,41 @@ 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 data = permissions.map((obj) => {
|
||||
let permission = {
|
||||
'orgId': obj.orgId,
|
||||
'folderId': obj.folderId,
|
||||
'userId': obj.userId,
|
||||
'canEdit': obj.canEdit,
|
||||
'canView': obj.canView
|
||||
};
|
||||
|
||||
return permission;
|
||||
});
|
||||
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) {
|
||||
|
|
13
app/app/serializers/application.js
Normal file
13
app/app/serializers/application.js
Normal file
|
@ -0,0 +1,13 @@
|
|||
import JSONAPISerializer from 'ember-data/serializers/json-api';
|
||||
|
||||
export default JSONAPISerializer.extend({
|
||||
normalize(modelClass, resourceHash) {
|
||||
return {
|
||||
data: {
|
||||
id: resourceHash.id,
|
||||
type: modelClass.modelName,
|
||||
attributes: resourceHash
|
||||
}
|
||||
};
|
||||
}
|
||||
});
|
13
app/app/serializers/folder-permission.js
Normal file
13
app/app/serializers/folder-permission.js
Normal file
|
@ -0,0 +1,13 @@
|
|||
import ApplicationSerializer from './application';
|
||||
|
||||
export default ApplicationSerializer.extend({
|
||||
normalize(modelClass, resourceHash) {
|
||||
return {
|
||||
data: {
|
||||
id: resourceHash.userId ? resourceHash.userId : 0,
|
||||
type: modelClass.modelName,
|
||||
attributes: resourceHash
|
||||
}
|
||||
};
|
||||
}
|
||||
});
|
13
app/app/serializers/page-meta.js
Normal file
13
app/app/serializers/page-meta.js
Normal file
|
@ -0,0 +1,13 @@
|
|||
import ApplicationSerializer from './application';
|
||||
|
||||
export default ApplicationSerializer.extend({
|
||||
normalize(modelClass, resourceHash) {
|
||||
return {
|
||||
data: {
|
||||
id: resourceHash.id ? resourceHash.id : resourceHash.documentId,
|
||||
type: modelClass.modelName,
|
||||
attributes: resourceHash
|
||||
}
|
||||
};
|
||||
}
|
||||
});
|
13
app/app/serializers/page.js
Normal file
13
app/app/serializers/page.js
Normal file
|
@ -0,0 +1,13 @@
|
|||
import ApplicationSerializer from './application';
|
||||
|
||||
export default ApplicationSerializer.extend({
|
||||
normalize(modelClass, resourceHash) {
|
||||
return {
|
||||
data: {
|
||||
id: resourceHash.id ? resourceHash.id : resourceHash.documentId,
|
||||
type: modelClass.modelName,
|
||||
attributes: resourceHash
|
||||
}
|
||||
};
|
||||
}
|
||||
});
|
13
app/app/serializers/protected-folder-participant.js
Normal file
13
app/app/serializers/protected-folder-participant.js
Normal file
|
@ -0,0 +1,13 @@
|
|||
import ApplicationSerializer from './application';
|
||||
|
||||
export default ApplicationSerializer.extend({
|
||||
normalize(modelClass, resourceHash) {
|
||||
return {
|
||||
data: {
|
||||
id: resourceHash.id ? resourceHash.id : resourceHash.folderId + resourceHash.userId,
|
||||
type: modelClass.modelName,
|
||||
attributes: resourceHash
|
||||
}
|
||||
};
|
||||
}
|
||||
});
|
13
app/app/serializers/user.js
Normal file
13
app/app/serializers/user.js
Normal file
|
@ -0,0 +1,13 @@
|
|||
import ApplicationSerializer from './application';
|
||||
|
||||
export default ApplicationSerializer.extend({
|
||||
normalize(modelClass, resourceHash) {
|
||||
return {
|
||||
data: {
|
||||
id: resourceHash.id ? resourceHash.id : 0,
|
||||
type: modelClass.modelName,
|
||||
attributes: resourceHash
|
||||
}
|
||||
};
|
||||
}
|
||||
});
|
|
@ -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,6 +14,7 @@ import AjaxService from 'ember-ajax/services/ajax';
|
|||
import config from '../config/environment';
|
||||
|
||||
const {
|
||||
computed,
|
||||
inject: { service }
|
||||
} = Ember;
|
||||
|
||||
|
@ -22,7 +23,7 @@ export default AjaxService.extend({
|
|||
host: config.apiHost,
|
||||
namespace: config.apiNamespace,
|
||||
|
||||
headers: Ember.computed('session.session.content.authenticated.token', {
|
||||
headers: computed('session.session.content.authenticated.token', {
|
||||
get() {
|
||||
let headers = {};
|
||||
const token = this.get('session.session.content.authenticated.token');
|
||||
|
@ -33,4 +34,4 @@ export default AjaxService.extend({
|
|||
return headers;
|
||||
}
|
||||
})
|
||||
});
|
||||
});
|
||||
|
|
|
@ -13,9 +13,13 @@ import Ember from 'ember';
|
|||
import netUtil from '../utils/net';
|
||||
import config from '../config/environment';
|
||||
|
||||
const {
|
||||
inject: { service }
|
||||
} = Ember;
|
||||
|
||||
export default Ember.Service.extend({
|
||||
session: Ember.inject.service('session'),
|
||||
appMeta: Ember.inject.service(),
|
||||
session: service('session'),
|
||||
appMeta: service(),
|
||||
ready: false,
|
||||
enabled: config.APP.auditEnabled,
|
||||
appId: config.APP.intercomKey,
|
||||
|
|
|
@ -10,18 +10,23 @@
|
|||
// https://documize.com
|
||||
|
||||
import Ember from 'ember';
|
||||
import models from '../utils/model';
|
||||
|
||||
const {
|
||||
inject: { service }
|
||||
} = Ember;
|
||||
|
||||
export default Ember.Service.extend({
|
||||
sessionService: Ember.inject.service('session'),
|
||||
ajax: Ember.inject.service(),
|
||||
sessionService: service('session'),
|
||||
ajax: service(),
|
||||
store: service(),
|
||||
|
||||
// Returns document model for specified document id.
|
||||
getDocument(documentId) {
|
||||
return this.get('ajax').request(`documents/${documentId}`, {
|
||||
method: "GET"
|
||||
}).then((response) => {
|
||||
return models.DocumentModel.create(response);
|
||||
let data = this.get('store').normalize('document', response);
|
||||
return this.get('store').push(data);
|
||||
});
|
||||
},
|
||||
|
||||
|
@ -34,9 +39,13 @@ export default Ember.Service.extend({
|
|||
content: Ember.A([])
|
||||
});
|
||||
|
||||
_.each(response, function (doc) {
|
||||
let documentModel = models.DocumentModel.create(doc);
|
||||
documents.pushObject(documentModel);
|
||||
if (isObject(response)) {
|
||||
return documents;
|
||||
}
|
||||
|
||||
documents = response.map((doc) => {
|
||||
let data = this.get('store').normalize('document', doc);
|
||||
return this.get('store').push(data);
|
||||
});
|
||||
|
||||
return documents;
|
||||
|
@ -52,9 +61,9 @@ export default Ember.Service.extend({
|
|||
content: Ember.A([])
|
||||
});
|
||||
|
||||
_.each(response, function (doc) {
|
||||
let documentModel = models.DocumentModel.create(doc);
|
||||
documents.pushObject(documentModel);
|
||||
documents = response.map((doc) => {
|
||||
let data = this.get('store').normalize('document', doc);
|
||||
return this.get('store').push(data);
|
||||
});
|
||||
|
||||
return documents;
|
||||
|
@ -115,6 +124,7 @@ export default Ember.Service.extend({
|
|||
updatePage: function (documentId, pageId, payload, skipRevision) {
|
||||
var revision = skipRevision ? "?r=true" : "?r=false";
|
||||
let url = `documents/${documentId}/pages/${pageId}${revision}`;
|
||||
Ember.set(payload.meta, 'id', parseInt(payload.meta.id));
|
||||
|
||||
return this.get('ajax').request(url, {
|
||||
method: 'PUT',
|
||||
|
@ -192,8 +202,9 @@ export default Ember.Service.extend({
|
|||
method: 'GET'
|
||||
}).then((response) => {
|
||||
let data = [];
|
||||
_.each(response, function (obj) {
|
||||
data.pushObject(models.PageModel.create(obj));
|
||||
data = response.map((obj) => {
|
||||
let data = this.get('store').normalize('page', obj);
|
||||
return this.get('store').push(data);
|
||||
});
|
||||
|
||||
return data;
|
||||
|
@ -208,8 +219,9 @@ export default Ember.Service.extend({
|
|||
}).then((response) => {
|
||||
let pages = [];
|
||||
|
||||
_.each(response, function (page) {
|
||||
pages.pushObject(models.PageModel.create(page));
|
||||
pages = response.map((page) => {
|
||||
let data = this.get('store').normalize('page', page);
|
||||
return this.get('store').push(data);
|
||||
});
|
||||
|
||||
return pages;
|
||||
|
@ -222,8 +234,8 @@ export default Ember.Service.extend({
|
|||
return this.get('ajax').request(`documents/${documentId}/pages/${pageId}`, {
|
||||
method: 'GET'
|
||||
}).then((response) => {
|
||||
let page = models.PageModel.create(response);
|
||||
return page;
|
||||
let data = this.get('store').normalize('page', response);
|
||||
return this.get('store').push(data);
|
||||
});
|
||||
},
|
||||
|
||||
|
@ -233,8 +245,8 @@ export default Ember.Service.extend({
|
|||
return this.get('ajax').request(`documents/${documentId}/pages/${pageId}/meta`, {
|
||||
method: 'GET'
|
||||
}).then((response) => {
|
||||
let meta = models.PageMetaModel.create(response);
|
||||
return meta;
|
||||
let data = this.get('store').normalize('page-meta', response);
|
||||
return this.get('store').push(data);
|
||||
});
|
||||
},
|
||||
|
||||
|
@ -245,9 +257,16 @@ export default Ember.Service.extend({
|
|||
method: 'GET'
|
||||
}).then((response) => {
|
||||
let data = [];
|
||||
_.each(response, function (obj) {
|
||||
data.pushObject(models.AttachmentModel.create(obj));
|
||||
|
||||
if (isObject(response)) {
|
||||
return data;
|
||||
}
|
||||
|
||||
data = response.map((obj) => {
|
||||
let data = this.get('store').normalize('attachment', obj);
|
||||
return this.get('store').push(data);
|
||||
});
|
||||
|
||||
return data;
|
||||
});
|
||||
},
|
||||
|
@ -260,3 +279,7 @@ export default Ember.Service.extend({
|
|||
});
|
||||
},
|
||||
});
|
||||
|
||||
function isObject(a) {
|
||||
return (!!a) && (a.constructor === Object);
|
||||
}
|
||||
|
|
|
@ -10,17 +10,19 @@
|
|||
// https://documize.com
|
||||
|
||||
import Ember from 'ember';
|
||||
import models from '../utils/model';
|
||||
import BaseService from '../services/base';
|
||||
|
||||
const {
|
||||
get
|
||||
get,
|
||||
RSVP,
|
||||
inject: { service }
|
||||
} = Ember;
|
||||
|
||||
export default BaseService.extend({
|
||||
sessionService: Ember.inject.service('session'),
|
||||
ajax: Ember.inject.service(),
|
||||
localStorage: Ember.inject.service(),
|
||||
sessionService: service('session'),
|
||||
ajax: service(),
|
||||
localStorage: service(),
|
||||
store: service(),
|
||||
|
||||
// selected folder
|
||||
currentFolder: null,
|
||||
|
@ -28,38 +30,35 @@ export default BaseService.extend({
|
|||
|
||||
// Add a new folder.
|
||||
add(folder) {
|
||||
|
||||
return this.get('ajax').post(`folders`, {
|
||||
contentType: 'json',
|
||||
data: JSON.stringify(folder)
|
||||
}).then((folder) => {
|
||||
let folderModel = models.FolderModel.create(folder);
|
||||
return folderModel;
|
||||
let data = this.get('store').normalize('folder', folder);
|
||||
return this.get('store').push(data);
|
||||
});
|
||||
},
|
||||
|
||||
// Returns folder model for specified folder id.
|
||||
getFolder(id) {
|
||||
|
||||
return this.get('ajax').request(`folders/${id}`, {
|
||||
method: 'GET'
|
||||
}).then((response) => {
|
||||
let folder = models.FolderModel.create(response);
|
||||
return folder;
|
||||
}).then((folder) => {
|
||||
let data = this.get('store').normalize('folder', folder);
|
||||
return this.get('store').push(data);
|
||||
});
|
||||
},
|
||||
|
||||
// Returns all folders that user can see.
|
||||
getAll() {
|
||||
let self = this;
|
||||
let folders = this.get('folders');
|
||||
|
||||
if (this.get('folders') != null) {
|
||||
return new Ember.RSVP.Promise(function (resolve) {
|
||||
resolve(self.get('folders'));
|
||||
});
|
||||
} else {
|
||||
return this.reload();
|
||||
if (folders != null) {
|
||||
return new RSVP.resolve(folders);
|
||||
}
|
||||
|
||||
return this.reload();
|
||||
|
||||
},
|
||||
|
||||
// Updates an existing folder record.
|
||||
|
@ -73,7 +72,7 @@ export default BaseService.extend({
|
|||
});
|
||||
},
|
||||
|
||||
remove: function (folderId, moveToId) {
|
||||
remove(folderId, moveToId) {
|
||||
let url = `folders/${folderId}/move/${moveToId}`;
|
||||
|
||||
return this.get('ajax').request(url, {
|
||||
|
@ -81,7 +80,7 @@ export default BaseService.extend({
|
|||
});
|
||||
},
|
||||
|
||||
onboard: function (folderId, payload) {
|
||||
onboard(folderId, payload) {
|
||||
let url = `public/share/${folderId}`;
|
||||
|
||||
return this.get('ajax').post(url, {
|
||||
|
@ -91,13 +90,15 @@ export default BaseService.extend({
|
|||
},
|
||||
|
||||
// getProtectedFolderInfo returns non-private folders and who has access to them.
|
||||
getProtectedFolderInfo: function () {
|
||||
getProtectedFolderInfo() {
|
||||
return this.get('ajax').request(`folders?filter=viewers`, {
|
||||
method: "GET"
|
||||
}).then((response) => {
|
||||
let data = [];
|
||||
_.each(response, function (obj) {
|
||||
data.pushObject(models.ProtectedFolderParticipant.create(obj));
|
||||
|
||||
data = response.map((obj) => {
|
||||
let data = this.get('store').normalize('protected-folder-participant', obj);
|
||||
return this.get('store').push(data);
|
||||
});
|
||||
|
||||
return data;
|
||||
|
@ -111,8 +112,10 @@ export default BaseService.extend({
|
|||
method: "GET"
|
||||
}).then((response) => {
|
||||
let data = [];
|
||||
_.each(response, function (obj) {
|
||||
data.pushObject(models.FolderModel.create(obj));
|
||||
|
||||
data = response.map((obj) => {
|
||||
let data = this.get('store').normalize('folder', obj);
|
||||
return this.get('store').push(data);
|
||||
});
|
||||
|
||||
return data;
|
||||
|
@ -126,8 +129,10 @@ export default BaseService.extend({
|
|||
method: "GET"
|
||||
}).then((response) => {
|
||||
let data = [];
|
||||
_.each(response, function (obj) {
|
||||
data.pushObject(models.FolderPermissionModel.create(obj));
|
||||
|
||||
data = response.map((obj) => {
|
||||
let data = this.get('store').normalize('folder-permission', obj);
|
||||
return this.get('store').push(data);
|
||||
});
|
||||
|
||||
return data;
|
||||
|
@ -136,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',
|
||||
|
@ -181,7 +185,7 @@ export default BaseService.extend({
|
|||
let result = [];
|
||||
let folderId = folder.get('id');
|
||||
|
||||
folderPermissions.forEach(function (item) {
|
||||
folderPermissions.forEach((item) => {
|
||||
if (item.folderId === folderId) {
|
||||
result.push(item);
|
||||
}
|
||||
|
@ -189,7 +193,7 @@ export default BaseService.extend({
|
|||
|
||||
let canEdit = false;
|
||||
|
||||
result.forEach(function (permission) {
|
||||
result.forEach((permission) => {
|
||||
if (permission.userId === userId) {
|
||||
canEdit = permission.canEdit;
|
||||
}
|
||||
|
@ -203,4 +207,4 @@ export default BaseService.extend({
|
|||
});
|
||||
});
|
||||
},
|
||||
});
|
||||
});
|
||||
|
|
|
@ -10,35 +10,39 @@
|
|||
// https://documize.com
|
||||
|
||||
import Ember from 'ember';
|
||||
import models from '../utils/model';
|
||||
|
||||
const {
|
||||
inject: { service }
|
||||
} = Ember;
|
||||
|
||||
export default Ember.Service.extend({
|
||||
sessionService: Ember.inject.service('session'),
|
||||
ajax: Ember.inject.service(),
|
||||
appMeta: Ember.inject.service(),
|
||||
sessionService: service('session'),
|
||||
ajax: service(),
|
||||
appMeta: service(),
|
||||
store: service(),
|
||||
|
||||
// Returns attributes for specified org id.
|
||||
getOrg(id) {
|
||||
return this.get('ajax').request(`organizations/${id}`, {
|
||||
method: 'GET'
|
||||
}).then((response) =>{
|
||||
let org = models.OrganizationModel.create(response);
|
||||
return org;
|
||||
});
|
||||
},
|
||||
// Returns attributes for specified org id.
|
||||
getOrg(id) {
|
||||
return this.get('ajax').request(`organizations/${id}`, {
|
||||
method: 'GET'
|
||||
}).then((response) => {
|
||||
let data = this.get('store').normalize('organization', response);
|
||||
return this.get('store').push(data);
|
||||
});
|
||||
},
|
||||
|
||||
// Updates an existing organization record.
|
||||
save(org) {
|
||||
let id = org.get('id');
|
||||
// Updates an existing organization record.
|
||||
save(org) {
|
||||
let id = org.id;
|
||||
|
||||
this.get('appMeta').setProperties({
|
||||
message: org.message,
|
||||
title: org.title
|
||||
});
|
||||
this.get('appMeta').setProperties({
|
||||
message: org.get('message'),
|
||||
title: org.get('title')
|
||||
});
|
||||
|
||||
return this.get('ajax').request(`organizations/${id}`, {
|
||||
method: 'PUT',
|
||||
data: JSON.stringify(org)
|
||||
});
|
||||
}
|
||||
return this.get('ajax').request(`organizations/${id}`, {
|
||||
method: 'PUT',
|
||||
data: JSON.stringify(org)
|
||||
});
|
||||
}
|
||||
});
|
||||
|
|
|
@ -11,16 +11,20 @@
|
|||
|
||||
import Ember from 'ember';
|
||||
|
||||
const {
|
||||
inject: { service }
|
||||
} = Ember;
|
||||
|
||||
export default Ember.Service.extend({
|
||||
sessionService: Ember.inject.service('session'),
|
||||
ajax: Ember.inject.service(),
|
||||
sessionService: service('session'),
|
||||
ajax: service(),
|
||||
|
||||
// getUsers returns all users for organization.
|
||||
find(keywords) {
|
||||
let url = "search?keywords=" + encodeURIComponent(keywords);
|
||||
// getUsers returns all users for organization.
|
||||
find(keywords) {
|
||||
let url = "search?keywords=" + encodeURIComponent(keywords);
|
||||
|
||||
return this.get('ajax').request(url, {
|
||||
method: "GET"
|
||||
});
|
||||
},
|
||||
return this.get('ajax').request(url, {
|
||||
method: "GET"
|
||||
});
|
||||
},
|
||||
});
|
||||
|
|
|
@ -10,56 +10,63 @@
|
|||
// https://documize.com
|
||||
|
||||
import Ember from 'ember';
|
||||
import models from '../utils/model';
|
||||
import BaseService from '../services/base';
|
||||
|
||||
const {
|
||||
inject: { service }
|
||||
} = Ember;
|
||||
|
||||
export default BaseService.extend({
|
||||
sessionService: Ember.inject.service('session'),
|
||||
ajax: Ember.inject.service(),
|
||||
sessionService: service('session'),
|
||||
ajax: service(),
|
||||
store: service(),
|
||||
|
||||
// Returns all available sections.
|
||||
getAll() {
|
||||
return this.get('ajax').request(`sections`,{
|
||||
method: 'GET'
|
||||
}).then((response)=>{
|
||||
let data = [];
|
||||
_.each(response, function(obj) {
|
||||
data.pushObject(models.SectionModel.create(obj));
|
||||
});
|
||||
// Returns all available sections.
|
||||
getAll() {
|
||||
return this.get('ajax').request(`sections`, {
|
||||
method: 'GET'
|
||||
}).then((response) => {
|
||||
let data = [];
|
||||
|
||||
return data;
|
||||
});
|
||||
},
|
||||
data = response.map((obj) => {
|
||||
let data = this.get('store').normalize('section', obj);
|
||||
return this.get('store').push(data);
|
||||
});
|
||||
|
||||
// Requests data from the specified section handler, passing the method and document ID
|
||||
// and POST payload.
|
||||
fetch(page, method, data) {
|
||||
let documentId = page.get('documentId');
|
||||
let section = page.get('contentType');
|
||||
let url = `sections?documentID=${documentId}§ion=${section}&method=${method}`;
|
||||
return data;
|
||||
});
|
||||
},
|
||||
|
||||
return this.get('ajax').post(url, {
|
||||
data: JSON.stringify(data),
|
||||
contentType: "application/json"
|
||||
});
|
||||
},
|
||||
// Requests data from the specified section handler, passing the method and document ID
|
||||
// and POST payload.
|
||||
fetch(page, method, data) {
|
||||
let documentId = page.get('documentId');
|
||||
let section = page.get('contentType');
|
||||
let url = `sections?documentID=${documentId}§ion=${section}&method=${method}`;
|
||||
|
||||
// Did any dynamic sections change? Fetch and send up for rendering?
|
||||
refresh(documentId) {
|
||||
let url = `sections/refresh?documentID=${documentId}`;
|
||||
return this.get('ajax').post(url, {
|
||||
data: JSON.stringify(data),
|
||||
contentType: "application/json"
|
||||
});
|
||||
},
|
||||
|
||||
return this.get('ajax').request(url, {
|
||||
method: 'GET'
|
||||
}).then((response)=>{
|
||||
let pages = [];
|
||||
// Did any dynamic sections change? Fetch and send up for rendering?
|
||||
refresh(documentId) {
|
||||
let url = `sections/refresh?documentID=${documentId}`;
|
||||
|
||||
if (is.not.null(response) && is.array(response) && response.length > 0) {
|
||||
_.each(response, function(page) {
|
||||
pages.pushObject(models.PageModel.create(page));
|
||||
});
|
||||
}
|
||||
return this.get('ajax').request(url, {
|
||||
method: 'GET'
|
||||
}).then((response) => {
|
||||
let pages = [];
|
||||
|
||||
return pages;
|
||||
});
|
||||
}
|
||||
if (is.not.null(response) && is.array(response) && response.length > 0) {
|
||||
pages = response.map((page) => {
|
||||
let data = this.get('store').normalize('page', page);
|
||||
return this.get('store').push(data);
|
||||
});
|
||||
}
|
||||
|
||||
return pages;
|
||||
});
|
||||
}
|
||||
});
|
||||
|
|
|
@ -10,24 +10,31 @@
|
|||
// https://documize.com
|
||||
|
||||
import Ember from 'ember';
|
||||
import models from '../utils/model';
|
||||
import SimpleAuthSession from 'ember-simple-auth/services/session';
|
||||
|
||||
const {
|
||||
inject: { service },
|
||||
computed: { oneWay, or, notEmpty },
|
||||
computed
|
||||
} = Ember;
|
||||
|
||||
export default SimpleAuthSession.extend({
|
||||
ajax: service(),
|
||||
appMeta: service(),
|
||||
store: service(),
|
||||
|
||||
isMac: false,
|
||||
isMobile: false,
|
||||
authenticated: notEmpty('user.id'),
|
||||
isAdmin: oneWay('user.admin'),
|
||||
isEditor: or('user.admin', 'user.editor'),
|
||||
authenticated: computed('user.id', function () {
|
||||
return this.get('user.id') !== '0';
|
||||
}),
|
||||
isAdmin: computed('user', function () {
|
||||
let data = this.get('user');
|
||||
return data.get('admin');
|
||||
}),
|
||||
isEditor: computed('user', function () {
|
||||
let data = this.get('user');
|
||||
return data.get('editor');
|
||||
}),
|
||||
|
||||
init: function () {
|
||||
this.set('isMac', is.mac());
|
||||
|
@ -37,10 +44,11 @@ export default SimpleAuthSession.extend({
|
|||
user: computed('isAuthenticated', 'session.content.authenticated.user', function () {
|
||||
if (this.get('isAuthenticated')) {
|
||||
let user = this.get('session.content.authenticated.user') || { id: '' };
|
||||
return models.UserModel.create(user);
|
||||
let data = this.get('store').normalize('user', user);
|
||||
return this.get('store').push(data);
|
||||
}
|
||||
}),
|
||||
|
||||
folderPermissions: null,
|
||||
currentFolder: null
|
||||
});
|
||||
});
|
||||
|
|
|
@ -10,54 +10,58 @@
|
|||
// https://documize.com
|
||||
|
||||
import Ember from 'ember';
|
||||
import models from '../utils/model';
|
||||
|
||||
const {
|
||||
inject: { service }
|
||||
} = Ember;
|
||||
|
||||
export default Ember.Service.extend({
|
||||
sessionService: Ember.inject.service('session'),
|
||||
ajax: Ember.inject.service(),
|
||||
sessionService: service('session'),
|
||||
ajax: service(),
|
||||
store: service(),
|
||||
|
||||
importStockTemplate: function(folderId, templateId) {
|
||||
let url = `templates/${templateId}/folder/${folderId}?type=stock`;
|
||||
importStockTemplate: function (folderId, templateId) {
|
||||
let url = `templates/${templateId}/folder/${folderId}?type=stock`;
|
||||
|
||||
return this.get('ajax').request(url, {
|
||||
method: "POST"
|
||||
});
|
||||
},
|
||||
return this.get('ajax').request(url, {
|
||||
method: "POST"
|
||||
});
|
||||
},
|
||||
|
||||
importSavedTemplate: function(folderId, templateId) {
|
||||
let url = `templates/${templateId}/folder/${folderId}?type=saved`;
|
||||
importSavedTemplate: function (folderId, templateId) {
|
||||
let url = `templates/${templateId}/folder/${folderId}?type=saved`;
|
||||
|
||||
return this.get('ajax').post(url).then((doc)=>{
|
||||
let docModel = models.DocumentModel.create(doc);
|
||||
return docModel;
|
||||
});
|
||||
},
|
||||
return this.get('ajax').post(url).then((doc) => {
|
||||
let data = this.get('store').normalize('document', doc);
|
||||
return this.get('store').push(data);
|
||||
});
|
||||
},
|
||||
|
||||
getSavedTemplates() {
|
||||
return this.get('ajax').request(`templates`, {
|
||||
method: 'GET'
|
||||
}).then((response) => {
|
||||
if (is.not.array(response)) {
|
||||
response = [];
|
||||
}
|
||||
let templates = Ember.ArrayProxy.create({
|
||||
content: Ember.A([])
|
||||
});
|
||||
getSavedTemplates() {
|
||||
return this.get('ajax').request(`templates`, {
|
||||
method: 'GET'
|
||||
}).then((response) => {
|
||||
if (is.not.array(response)) {
|
||||
response = [];
|
||||
}
|
||||
let templates = Ember.ArrayProxy.create({
|
||||
content: Ember.A([])
|
||||
});
|
||||
|
||||
_.each(response, function(template) {
|
||||
let templateModel = models.TemplateModel.create(template);
|
||||
templates.pushObject(templateModel);
|
||||
});
|
||||
templates = response.map((template) => {
|
||||
let data = this.get('store').normalize('template', template);
|
||||
return this.get('store').push(data);
|
||||
});
|
||||
|
||||
return templates;
|
||||
});
|
||||
},
|
||||
return templates;
|
||||
});
|
||||
},
|
||||
|
||||
getStockTemplates() {
|
||||
return this.get('ajax').request(`templates/stock`, {
|
||||
method: 'GET'
|
||||
});
|
||||
},
|
||||
getStockTemplates() {
|
||||
return this.get('ajax').request(`templates/stock`, {
|
||||
method: 'GET'
|
||||
});
|
||||
},
|
||||
|
||||
saveAsTemplate(documentId, name, excerpt) {
|
||||
let payload = {
|
||||
|
@ -66,10 +70,9 @@ export default Ember.Service.extend({
|
|||
Excerpt: excerpt
|
||||
};
|
||||
|
||||
return this.get('ajax').request(`templates`, {
|
||||
method: 'POST',
|
||||
data: JSON.stringify(payload)
|
||||
}).then(() => {
|
||||
});
|
||||
return this.get('ajax').request(`templates`, {
|
||||
method: 'POST',
|
||||
data: JSON.stringify(payload)
|
||||
}).then(() => {});
|
||||
}
|
||||
});
|
||||
|
|
|
@ -10,21 +10,27 @@
|
|||
// https://documize.com
|
||||
|
||||
import Ember from 'ember';
|
||||
import models from '../utils/model';
|
||||
|
||||
const {
|
||||
isEmpty,
|
||||
RSVP,
|
||||
inject: { service }
|
||||
} = Ember;
|
||||
|
||||
export default Ember.Service.extend({
|
||||
sessionService: Ember.inject.service('session'),
|
||||
ajax: Ember.inject.service(),
|
||||
sessionService: service('session'),
|
||||
ajax: service(),
|
||||
store: service(),
|
||||
|
||||
// Adds a new user.
|
||||
add(user) {
|
||||
|
||||
return this.get('ajax').request(`users`, {
|
||||
type: 'POST',
|
||||
data: JSON.stringify(user),
|
||||
contentType: 'json'
|
||||
}).then(function (response) {
|
||||
return models.UserModel.create(response);
|
||||
}).then((response) => {
|
||||
let data = this.get('store').normalize('user', response);
|
||||
return this.get('store').push(data);
|
||||
});
|
||||
},
|
||||
|
||||
|
@ -35,15 +41,17 @@ export default Ember.Service.extend({
|
|||
return this.get('ajax').request(url, {
|
||||
type: 'GET'
|
||||
}).then((response) => {
|
||||
return models.UserModel.create(response);
|
||||
let data = this.get('store').normalize('user', response);
|
||||
return this.get('store').push(data);
|
||||
});
|
||||
},
|
||||
|
||||
// Returns all users for organization.
|
||||
getAll() {
|
||||
return this.get('ajax').request(`users`).then((response) => {
|
||||
return response.map(function (obj) {
|
||||
return models.UserModel.create(obj);
|
||||
return response.map((obj) => {
|
||||
let data = this.get('store').normalize('user', obj);
|
||||
return this.get('store').push(data);
|
||||
});
|
||||
});
|
||||
},
|
||||
|
@ -56,8 +64,10 @@ export default Ember.Service.extend({
|
|||
method: "GET"
|
||||
}).then((response) => {
|
||||
let data = [];
|
||||
_.each(response, function (obj) {
|
||||
data.pushObject(models.UserModel.create(obj));
|
||||
|
||||
data = response.map((obj) => {
|
||||
let data = this.get('store').normalize('user', obj);
|
||||
return this.get('store').push(data);
|
||||
});
|
||||
|
||||
return data;
|
||||
|
@ -66,7 +76,7 @@ export default Ember.Service.extend({
|
|||
|
||||
// Updates an existing user record.
|
||||
save(user) {
|
||||
let userId = user.get('id');
|
||||
let userId = user.id;
|
||||
let url = `users/${userId}`;
|
||||
|
||||
return this.get('ajax').request(url, {
|
||||
|
@ -91,6 +101,9 @@ export default Ember.Service.extend({
|
|||
|
||||
return this.get('ajax').request(url, {
|
||||
method: 'DELETE'
|
||||
}).then(() => {
|
||||
let user = this.get('store').peekRecord('user', `${userId}`);
|
||||
return user.deleteRecord();
|
||||
});
|
||||
},
|
||||
|
||||
|
@ -98,8 +111,8 @@ export default Ember.Service.extend({
|
|||
forgotPassword(email) {
|
||||
let url = `public/forgot`;
|
||||
|
||||
if (is.empty(email)) {
|
||||
return Ember.RSVP.reject("invalid");
|
||||
if (isEmpty(email)) {
|
||||
return RSVP.reject("invalid");
|
||||
}
|
||||
|
||||
let data = JSON.stringify({
|
||||
|
@ -117,8 +130,8 @@ export default Ember.Service.extend({
|
|||
resetPassword(token, password) {
|
||||
var url = `public/reset/${token}`;
|
||||
|
||||
if (is.empty(token) || is.empty(password)) {
|
||||
return Ember.RSVP.reject("invalid");
|
||||
if (isEmpty(token) || isEmpty(password)) {
|
||||
return RSVP.reject("invalid");
|
||||
}
|
||||
|
||||
return this.get('ajax').request(url, {
|
||||
|
|
|
@ -50,7 +50,7 @@
|
|||
<li class="item">
|
||||
{{#link-to 'profile'}}Profile{{/link-to}}
|
||||
</li>
|
||||
{{#if session.isAdmin}}
|
||||
{{#if session.session.content.authenticated.user.admin}}
|
||||
<li class="item">
|
||||
{{#link-to 'customize.general'}}Settings{{/link-to}}
|
||||
</li>
|
||||
|
|
|
@ -12,17 +12,17 @@
|
|||
function getState(toc, page) {
|
||||
let state = {
|
||||
tocTools: {
|
||||
upTarget: "",
|
||||
downTarget: "",
|
||||
upTarget: "",
|
||||
downTarget: "",
|
||||
indentIncrement: 0,
|
||||
allowIndent: false,
|
||||
allowOutdent: false
|
||||
},
|
||||
actionablePage: false,
|
||||
upDisabled: true,
|
||||
downDisabled: true,
|
||||
indentDisabled: true,
|
||||
outdentDisabled: true,
|
||||
allowIndent: false,
|
||||
allowOutdent: false
|
||||
},
|
||||
actionablePage: false,
|
||||
upDisabled: true,
|
||||
downDisabled: true,
|
||||
indentDisabled: true,
|
||||
outdentDisabled: true,
|
||||
};
|
||||
|
||||
if (is.undefined(page)) {
|
||||
|
@ -55,19 +55,19 @@ function getState(toc, page) {
|
|||
if (index2 !== -1) {
|
||||
// up
|
||||
for (var i = index2; i >= 0; i--) {
|
||||
if (page.level > toc[i].level) {
|
||||
if (page.get('level') > toc[i].get('level')) {
|
||||
break;
|
||||
}
|
||||
|
||||
if (page.level === toc[i].level) {
|
||||
if (page.get('level') === toc[i].get('level')) {
|
||||
state.tocTools.upTarget = toc[i].id;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// indent?
|
||||
state.tocTools.allowIndent = upPage.level >= page.level;
|
||||
state.tocTools.indentIncrement = upPage.level - page.level;
|
||||
state.tocTools.allowIndent = upPage.get('level') >= page.get('level');
|
||||
state.tocTools.indentIncrement = upPage.get('level') - page.get('level');
|
||||
|
||||
if (state.tocTools.indentIncrement === 0) {
|
||||
state.tocTools.indentIncrement = 1;
|
||||
|
@ -94,28 +94,28 @@ function getState(toc, page) {
|
|||
|
||||
if (index3 !== -1) {
|
||||
for (var i3 = index3; i3 < toc.length; i3++) {
|
||||
if (toc[i3].level < page.level) {
|
||||
if (toc[i3].get('level') < page.get('level')) {
|
||||
break;
|
||||
}
|
||||
|
||||
if (page.level === toc[i3].level) {
|
||||
if (page.get('level') === toc[i3].get('level')) {
|
||||
state.tocTools.downTarget = toc[i3].id;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (page.level > downPage.level) {
|
||||
if (page.get('level') > downPage.get('level')) {
|
||||
state.tocTools.downTarget = '';
|
||||
}
|
||||
}
|
||||
|
||||
// can we outdent?
|
||||
state.tocTools.allowOutdent = page.level > 1;
|
||||
state.tocTools.allowOutdent = page.get('level') > 1;
|
||||
|
||||
state.upDisabled = state.tocTools.upTarget === '';
|
||||
state.downDisabled = state.tocTools.downTarget === '';
|
||||
state.indentDisabled = !state.tocTools.allowIndent;
|
||||
state.indentDisabled = !state.tocTools.allowIndent;
|
||||
state.outdentDisabled = !state.tocTools.allowOutdent;
|
||||
|
||||
state.actionablePage = is.not.empty(state.tocTools.upTarget) ||
|
||||
|
@ -141,8 +141,8 @@ function moveUp(state, pages, current) {
|
|||
page2 = pages[index1 - 1];
|
||||
}
|
||||
|
||||
var sequence1 = page1.sequence;
|
||||
var sequence2 = is.not.null(page2) && is.not.undefined(page2) ? page2.sequence : 0;
|
||||
var sequence1 = page1.get('sequence');
|
||||
var sequence2 = is.not.null(page2) && is.not.undefined(page2) ? page2.get('sequence') : 0;
|
||||
var index = _.indexOf(pages, current, false);
|
||||
|
||||
if (index !== -1) {
|
||||
|
@ -154,11 +154,11 @@ function moveUp(state, pages, current) {
|
|||
});
|
||||
|
||||
for (var i = index + 1; i < pages.length; i++) {
|
||||
if (pages[i].level <= current.level) {
|
||||
if (pages[i].get('level') <= current.get('level')) {
|
||||
break;
|
||||
}
|
||||
|
||||
sequence = (sequence + page1.sequence) / 2;
|
||||
sequence = (sequence + page1.get('sequence')) / 2;
|
||||
|
||||
pendingChanges.push({
|
||||
pageId: pages[i].id,
|
||||
|
@ -184,28 +184,28 @@ function moveDown(state, pages, current) {
|
|||
var startingSequence = 0;
|
||||
var upperSequence = 0;
|
||||
var cutOff = _.rest(pages, downTargetIndex);
|
||||
var siblings = _.reject(cutOff, function(p) {
|
||||
return p.level !== current.level || p.id === current.id || p.id === downTarget.id;
|
||||
var siblings = _.reject(cutOff, function (p) {
|
||||
return p.get('level') !== current.get('level') || p.id === current.id || p.id === downTarget.id;
|
||||
});
|
||||
|
||||
if (siblings.length > 0) {
|
||||
var aboveThisGuy = siblings[0];
|
||||
var belowThisGuy = pages[_.indexOf(pages, aboveThisGuy, false) - 1];
|
||||
|
||||
if (is.not.null(belowThisGuy) && belowThisGuy.level > current.level) {
|
||||
startingSequence = (aboveThisGuy.sequence + belowThisGuy.sequence) / 2;
|
||||
upperSequence = aboveThisGuy.sequence;
|
||||
if (is.not.null(belowThisGuy) && belowThisGuy.get('level') > current.get('level')) {
|
||||
startingSequence = (aboveThisGuy.get('sequence') + belowThisGuy.get('sequence')) / 2;
|
||||
upperSequence = aboveThisGuy.get('sequence');
|
||||
} else {
|
||||
var otherGuy = pages[downTargetIndex + 1];
|
||||
|
||||
startingSequence = (otherGuy.sequence + downTarget.sequence) / 2;
|
||||
upperSequence = otherGuy.sequence;
|
||||
startingSequence = (otherGuy.get('sequence') + downTarget.get('sequence')) / 2;
|
||||
upperSequence = otherGuy.get('sequence');
|
||||
}
|
||||
} else {
|
||||
// startingSequence = downTarget.sequence * 2;
|
||||
startingSequence = cutOff[cutOff.length-1].sequence * 2;
|
||||
startingSequence = cutOff[cutOff.length - 1].sequence * 2;
|
||||
upperSequence = startingSequence * 2;
|
||||
}
|
||||
}
|
||||
|
||||
pendingChanges.push({
|
||||
pageId: current.id,
|
||||
|
@ -215,7 +215,7 @@ function moveDown(state, pages, current) {
|
|||
var sequence = (startingSequence + upperSequence) / 2;
|
||||
|
||||
for (var i = pageIndex + 1; i < pages.length; i++) {
|
||||
if (pages[i].level <= current.level) {
|
||||
if (pages[i].get('level') <= current.get('level')) {
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -237,17 +237,17 @@ function indent(state, pages, current) {
|
|||
|
||||
pendingChanges.push({
|
||||
pageId: current.id,
|
||||
level: current.level + state.tocTools.indentIncrement
|
||||
level: current.get('level') + state.tocTools.indentIncrement
|
||||
});
|
||||
|
||||
for (var i = pageIndex + 1; i < pages.length; i++) {
|
||||
if (pages[i].level <= current.level) {
|
||||
if (pages[i].get('level') <= current.get('level')) {
|
||||
break;
|
||||
}
|
||||
|
||||
pendingChanges.push({
|
||||
pageId: pages[i].id,
|
||||
level: pages[i].level + state.tocTools.indentIncrement
|
||||
level: pages[i].get('level') + state.tocTools.indentIncrement
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -260,17 +260,17 @@ function outdent(state, pages, current) {
|
|||
|
||||
pendingChanges.push({
|
||||
pageId: current.id,
|
||||
level: current.level - 1
|
||||
level: current.get('level') - 1
|
||||
});
|
||||
|
||||
for (var i = pageIndex + 1; i < pages.length; i++) {
|
||||
if (pages[i].level <= current.level) {
|
||||
if (pages[i].get('level') <= current.get('level')) {
|
||||
break;
|
||||
}
|
||||
|
||||
pendingChanges.push({
|
||||
pageId: pages[i].id,
|
||||
level: pages[i].level - 1
|
||||
level: pages[i].get('level') - 1
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -120,7 +120,25 @@ func Serve(ready chan struct{}) {
|
|||
|
||||
log.Info("Starting SSL server on " + port + " with " + certFile + " " + keyFile)
|
||||
|
||||
server := &http.Server{Addr: ":" + port, Handler: n}
|
||||
// myTLSConfig := &tls.Config{
|
||||
// CipherSuites: []uint16{
|
||||
// tls.TLS_RSA_WITH_3DES_EDE_CBC_SHA,
|
||||
// tls.TLS_RSA_WITH_AES_128_CBC_SHA,
|
||||
// tls.TLS_RSA_WITH_AES_256_CBC_SHA,
|
||||
// // tls.TLS_RSA_WITH_AES_128_CBC_SHA256,
|
||||
// // tls.TLS_RSA_WITH_AES_256_CBC_SHA256,
|
||||
// tls.TLS_RSA_WITH_AES_128_GCM_SHA256,
|
||||
// tls.TLS_RSA_WITH_AES_256_GCM_SHA384,
|
||||
// tls.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,
|
||||
// tls.TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,
|
||||
// // tls.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,
|
||||
// // tls.TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,
|
||||
// tls.TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
|
||||
// tls.TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384}}
|
||||
// // tls.TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256}}
|
||||
// myTLSConfig.PreferServerCipherSuites = true
|
||||
|
||||
server := &http.Server{Addr: ":" + port, Handler: n /*, TLSConfig: myTLSConfig*/}
|
||||
server.SetKeepAlivesEnabled(true)
|
||||
if err := server.ListenAndServeTLS(certFile, keyFile); err != nil {
|
||||
log.Error("ListenAndServeTLS on "+port, err)
|
||||
|
|
|
@ -26,7 +26,7 @@ type ProdInfo struct {
|
|||
// Product returns product edition details
|
||||
func Product() (p ProdInfo) {
|
||||
p.Major = "0"
|
||||
p.Minor = "19"
|
||||
p.Minor = "20"
|
||||
p.Patch = "0"
|
||||
p.Version = fmt.Sprintf("%s.%s.%s", p.Major, p.Minor, p.Patch)
|
||||
p.Edition = "Community"
|
||||
|
|
File diff suppressed because one or more lines are too long
Loading…
Add table
Add a link
Reference in a new issue