mirror of
https://github.com/documize/community.git
synced 2025-07-22 14:49:42 +02:00
Reafctor client side (EJS) constants
This commit is contained in:
parent
8fb001422a
commit
bde0091a4a
23 changed files with 118 additions and 367 deletions
|
@ -9,18 +9,22 @@
|
||||||
//
|
//
|
||||||
// https://documize.com
|
// https://documize.com
|
||||||
|
|
||||||
import { equal, empty } from '@ember/object/computed';
|
import { computed } from '@ember/object';
|
||||||
|
import { empty } from '@ember/object/computed';
|
||||||
import { set } from '@ember/object';
|
import { set } from '@ember/object';
|
||||||
import { copy } from '@ember/object/internals';
|
import { copy } from '@ember/object/internals';
|
||||||
import { inject as service } from '@ember/service';
|
import { inject as service } from '@ember/service';
|
||||||
import Component from '@ember/component';
|
import Component from '@ember/component';
|
||||||
import constants from '../../utils/constants';
|
|
||||||
import encoding from '../../utils/encoding';
|
import encoding from '../../utils/encoding';
|
||||||
|
|
||||||
export default Component.extend({
|
export default Component.extend({
|
||||||
appMeta: service(),
|
appMeta: service(),
|
||||||
isDocumizeProvider: equal('authProvider', constants.AuthProvider.Documize),
|
isDocumizeProvider: computed('authProvider', function() {
|
||||||
isKeycloakProvider: equal('authProvider', constants.AuthProvider.Keycloak),
|
return this.get('authProvider') === this.get('constants').AuthProvider.Documize;
|
||||||
|
}),
|
||||||
|
isKeycloakProvider: computed('authProvider', function() {
|
||||||
|
return this.get('authProvider') === this.get('constants').AuthProvider.Keycloak;
|
||||||
|
}),
|
||||||
KeycloakUrlError: empty('keycloakConfig.url'),
|
KeycloakUrlError: empty('keycloakConfig.url'),
|
||||||
KeycloakRealmError: empty('keycloakConfig.realm'),
|
KeycloakRealmError: empty('keycloakConfig.realm'),
|
||||||
KeycloakClientIdError: empty('keycloakConfig.clientId'),
|
KeycloakClientIdError: empty('keycloakConfig.clientId'),
|
||||||
|
@ -47,6 +51,7 @@ export default Component.extend({
|
||||||
this._super(...arguments);
|
this._super(...arguments);
|
||||||
|
|
||||||
let provider = this.get('authProvider');
|
let provider = this.get('authProvider');
|
||||||
|
let constants = this.get('constants');
|
||||||
|
|
||||||
switch (provider) {
|
switch (provider) {
|
||||||
case constants.AuthProvider.Documize:
|
case constants.AuthProvider.Documize:
|
||||||
|
@ -71,14 +76,17 @@ export default Component.extend({
|
||||||
|
|
||||||
actions: {
|
actions: {
|
||||||
onDocumize() {
|
onDocumize() {
|
||||||
|
let constants = this.get('constants');
|
||||||
this.set('authProvider', constants.AuthProvider.Documize);
|
this.set('authProvider', constants.AuthProvider.Documize);
|
||||||
},
|
},
|
||||||
|
|
||||||
onKeycloak() {
|
onKeycloak() {
|
||||||
|
let constants = this.get('constants');
|
||||||
this.set('authProvider', constants.AuthProvider.Keycloak);
|
this.set('authProvider', constants.AuthProvider.Keycloak);
|
||||||
},
|
},
|
||||||
|
|
||||||
onSave() {
|
onSave() {
|
||||||
|
let constants = this.get('constants');
|
||||||
let provider = this.get('authProvider');
|
let provider = this.get('authProvider');
|
||||||
let config = this.get('authConfig');
|
let config = this.get('authConfig');
|
||||||
|
|
||||||
|
|
|
@ -15,11 +15,11 @@ import { inject as service } from '@ember/service';
|
||||||
import { computed } from '@ember/object';
|
import { computed } from '@ember/object';
|
||||||
import Component from '@ember/component';
|
import Component from '@ember/component';
|
||||||
import TooltipMixin from '../../mixins/tooltip';
|
import TooltipMixin from '../../mixins/tooltip';
|
||||||
import models from '../../utils/model';
|
|
||||||
|
|
||||||
export default Component.extend(TooltipMixin, {
|
export default Component.extend(TooltipMixin, {
|
||||||
documentService: service('document'),
|
documentService: service('document'),
|
||||||
sectionService: service('section'),
|
sectionService: service('section'),
|
||||||
|
store: service(),
|
||||||
appMeta: service(),
|
appMeta: service(),
|
||||||
link: service(),
|
link: service(),
|
||||||
hasPages: notEmpty('pages'),
|
hasPages: notEmpty('pages'),
|
||||||
|
@ -265,7 +265,7 @@ export default Component.extend(TooltipMixin, {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
let page = models.PageModel.create();
|
let page = this.get('store').createRecord('page');
|
||||||
page.set('documentId', this.get('document.id'));
|
page.set('documentId', this.get('document.id'));
|
||||||
page.set('title', sectionName);
|
page.set('title', sectionName);
|
||||||
page.set('contentType', section.get('contentType'));
|
page.set('contentType', section.get('contentType'));
|
||||||
|
@ -296,7 +296,7 @@ export default Component.extend(TooltipMixin, {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
let page = models.PageModel.create();
|
let page = this.get('store').createRecord('page');
|
||||||
page.set('documentId', this.get('document.id'));
|
page.set('documentId', this.get('document.id'));
|
||||||
page.set('title', `${block.get('title')}`);
|
page.set('title', `${block.get('title')}`);
|
||||||
page.set('body', block.get('body'));
|
page.set('body', block.get('body'));
|
||||||
|
|
|
@ -36,13 +36,12 @@ export default Component.extend(AuthMixin, {
|
||||||
|
|
||||||
didReceiveAttrs() {
|
didReceiveAttrs() {
|
||||||
this._super(...arguments);
|
this._super(...arguments);
|
||||||
// this.setup();
|
this.setup();
|
||||||
},
|
},
|
||||||
|
|
||||||
didUpdateAttrs() {
|
didUpdateAttrs() {
|
||||||
this._super(...arguments);
|
this._super(...arguments);
|
||||||
// this.set('selectedDocuments', []);
|
// this.setup();
|
||||||
// this.set('filteredDocs', []);
|
|
||||||
},
|
},
|
||||||
|
|
||||||
setup() {
|
setup() {
|
||||||
|
@ -65,10 +64,12 @@ export default Component.extend(AuthMixin, {
|
||||||
schedule('afterRender', () => {
|
schedule('afterRender', () => {
|
||||||
if (this.get('categoryFilter') !== '') {
|
if (this.get('categoryFilter') !== '') {
|
||||||
this.send('onDocumentFilter', 'category', this.get('categoryFilter'));
|
this.send('onDocumentFilter', 'category', this.get('categoryFilter'));
|
||||||
} else if (this.get('rootDocCount') > 0) {
|
} else {
|
||||||
this.send('onDocumentFilter', 'space', this.get('folder.id'));
|
this.send('onDocumentFilter', 'space', this.get('folder.id'));
|
||||||
} else if (selectedCategory !== '') {
|
// } else if (this.get('rootDocCount') > 0) {
|
||||||
this.send('onDocumentFilter', 'category', selectedCategory);
|
// this.send('onDocumentFilter', 'space', this.get('folder.id'));
|
||||||
|
// } else if (selectedCategory !== '') {
|
||||||
|
// this.send('onDocumentFilter', 'category', selectedCategory);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
@ -148,8 +149,8 @@ export default Component.extend(AuthMixin, {
|
||||||
});
|
});
|
||||||
|
|
||||||
this.set('categoryFilter', '');
|
this.set('categoryFilter', '');
|
||||||
this.set('uncategorizedSelected', true);
|
|
||||||
this.set('spaceSelected', false);
|
this.set('spaceSelected', false);
|
||||||
|
this.set('uncategorizedSelected', true);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'space':
|
case 'space':
|
||||||
|
|
|
@ -10,7 +10,6 @@
|
||||||
// https://documize.com
|
// https://documize.com
|
||||||
|
|
||||||
import Component from '@ember/component';
|
import Component from '@ember/component';
|
||||||
import constants from '../../utils/constants';
|
|
||||||
import TooltipMixin from '../../mixins/tooltip';
|
import TooltipMixin from '../../mixins/tooltip';
|
||||||
import NotifierMixin from '../../mixins/notifier';
|
import NotifierMixin from '../../mixins/notifier';
|
||||||
import AuthMixin from '../../mixins/auth';
|
import AuthMixin from '../../mixins/auth';
|
||||||
|
@ -24,10 +23,13 @@ export default Component.extend(TooltipMixin, NotifierMixin, AuthMixin, {
|
||||||
this._super(...arguments);
|
this._super(...arguments);
|
||||||
this.publicFolders = [];
|
this.publicFolders = [];
|
||||||
this.protectedFolders = [];
|
this.protectedFolders = [];
|
||||||
this.privateFolders = [];
|
this.privateFolders = [];
|
||||||
},
|
},
|
||||||
|
|
||||||
didReceiveAttrs() {
|
didReceiveAttrs() {
|
||||||
|
this._super(...arguments);
|
||||||
|
|
||||||
|
let constants = this.get('constants');
|
||||||
let folders = this.get('spaces');
|
let folders = this.get('spaces');
|
||||||
let publicFolders = [];
|
let publicFolders = [];
|
||||||
let protectedFolders = [];
|
let protectedFolders = [];
|
||||||
|
|
|
@ -14,7 +14,6 @@ import { computed } from '@ember/object';
|
||||||
import { schedule } from '@ember/runloop';
|
import { schedule } from '@ember/runloop';
|
||||||
import { A } from '@ember/array';
|
import { A } from '@ember/array';
|
||||||
import { inject as service } from '@ember/service';
|
import { inject as service } from '@ember/service';
|
||||||
import constants from '../../utils/constants';
|
|
||||||
import TooltipMixin from '../../mixins/tooltip';
|
import TooltipMixin from '../../mixins/tooltip';
|
||||||
import ModalMixin from '../../mixins/modal';
|
import ModalMixin from '../../mixins/modal';
|
||||||
import AuthMixin from '../../mixins/auth';
|
import AuthMixin from '../../mixins/auth';
|
||||||
|
@ -51,7 +50,7 @@ export default Component.extend(ModalMixin, TooltipMixin, AuthMixin, {
|
||||||
dropzone: null,
|
dropzone: null,
|
||||||
|
|
||||||
spaceTypeOptions: A([]),
|
spaceTypeOptions: A([]),
|
||||||
spaceType: constants.FolderType.Private,
|
spaceType: 0,
|
||||||
likes: '',
|
likes: '',
|
||||||
allowLikes: false,
|
allowLikes: false,
|
||||||
|
|
||||||
|
@ -69,6 +68,7 @@ export default Component.extend(ModalMixin, TooltipMixin, AuthMixin, {
|
||||||
|
|
||||||
didReceiveAttrs() {
|
didReceiveAttrs() {
|
||||||
this._super(...arguments);
|
this._super(...arguments);
|
||||||
|
let constants = this.get('constants');
|
||||||
|
|
||||||
let folder = this.get('space');
|
let folder = this.get('space');
|
||||||
let targets = _.reject(this.get('spaces'), {id: folder.get('id')});
|
let targets = _.reject(this.get('spaces'), {id: folder.get('id')});
|
||||||
|
|
|
@ -13,7 +13,6 @@ import $ from 'jquery';
|
||||||
import { notEmpty } from '@ember/object/computed';
|
import { notEmpty } from '@ember/object/computed';
|
||||||
import { inject as service } from '@ember/service'
|
import { inject as service } from '@ember/service'
|
||||||
import ModalMixin from '../../mixins/modal';
|
import ModalMixin from '../../mixins/modal';
|
||||||
import constants from '../../utils/constants';
|
|
||||||
import Component from '@ember/component';
|
import Component from '@ember/component';
|
||||||
|
|
||||||
export default Component.extend(ModalMixin, {
|
export default Component.extend(ModalMixin, {
|
||||||
|
@ -31,6 +30,8 @@ export default Component.extend(ModalMixin, {
|
||||||
|
|
||||||
init() {
|
init() {
|
||||||
this._super(...arguments);
|
this._super(...arguments);
|
||||||
|
let constants = this.get('constants');
|
||||||
|
|
||||||
this.pins = [];
|
this.pins = [];
|
||||||
|
|
||||||
if (this.get('appMeta.authProvider') === constants.AuthProvider.Keycloak) {
|
if (this.get('appMeta.authProvider') === constants.AuthProvider.Keycloak) {
|
||||||
|
|
|
@ -12,9 +12,49 @@
|
||||||
import EmberObject from "@ember/object";
|
import EmberObject from "@ember/object";
|
||||||
|
|
||||||
// access like so:
|
// access like so:
|
||||||
// let constants = this.get('constants');
|
// let constants = this.get('constants');
|
||||||
|
|
||||||
let constants = EmberObject.extend({
|
let constants = EmberObject.extend({
|
||||||
|
FolderType: { // eslint-disable-line ember/avoid-leaking-state-in-ember-objects
|
||||||
|
Public: 1,
|
||||||
|
Private: 2,
|
||||||
|
Protected: 3
|
||||||
|
},
|
||||||
|
|
||||||
|
AuthProvider: { // eslint-disable-line ember/avoid-leaking-state-in-ember-objects
|
||||||
|
Documize: 'documize',
|
||||||
|
Keycloak: 'keycloak'
|
||||||
|
},
|
||||||
|
|
||||||
|
DocumentActionType: { // eslint-disable-line ember/avoid-leaking-state-in-ember-objects
|
||||||
|
Read: 1,
|
||||||
|
Feedback: 2,
|
||||||
|
Contribute: 3,
|
||||||
|
Approve: 4,
|
||||||
|
Approved: 5,
|
||||||
|
Rejected: 6,
|
||||||
|
Publish: 7,
|
||||||
|
},
|
||||||
|
|
||||||
|
UserActivityType: { // eslint-disable-line ember/avoid-leaking-state-in-ember-objects
|
||||||
|
Created: 1,
|
||||||
|
Read: 2,
|
||||||
|
Edited: 3,
|
||||||
|
Deleted: 4,
|
||||||
|
Archived: 5,
|
||||||
|
Approved: 6,
|
||||||
|
Reverted: 7,
|
||||||
|
PublishedTemplate: 8,
|
||||||
|
PublishedBlock: 9,
|
||||||
|
Feedback: 10,
|
||||||
|
Rejected: 11,
|
||||||
|
SentSecureLink: 12,
|
||||||
|
Draft: 13,
|
||||||
|
Versioned: 14,
|
||||||
|
Searched: 15,
|
||||||
|
Published: 16
|
||||||
|
},
|
||||||
|
|
||||||
// Document
|
// Document
|
||||||
ProtectionType: { // eslint-disable-line ember/avoid-leaking-state-in-ember-objects
|
ProtectionType: { // eslint-disable-line ember/avoid-leaking-state-in-ember-objects
|
||||||
None: 0,
|
None: 0,
|
||||||
|
@ -78,7 +118,18 @@ let constants = EmberObject.extend({
|
||||||
Unversioned: 1, // turn unversioned into versioned document
|
Unversioned: 1, // turn unversioned into versioned document
|
||||||
Cloned: 2, // create versioned document by cloning existing versioned document
|
Cloned: 2, // create versioned document by cloning existing versioned document
|
||||||
Linked: 3 // link existing unversion document into this version group
|
Linked: 3 // link existing unversion document into this version group
|
||||||
}
|
},
|
||||||
|
|
||||||
|
// Document
|
||||||
|
ActionType: { // eslint-disable-line ember/avoid-leaking-state-in-ember-objects
|
||||||
|
Read: 1,
|
||||||
|
Feedback: 2,
|
||||||
|
Contribute: 3,
|
||||||
|
ApprovalRequest: 4,
|
||||||
|
Approved: 5,
|
||||||
|
Rejected: 6,
|
||||||
|
Publish: 7,
|
||||||
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
export default { constants }
|
export default { constants }
|
||||||
|
|
|
@ -1,26 +0,0 @@
|
||||||
// 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 EmberObject from "@ember/object";
|
|
||||||
|
|
||||||
let econstants = EmberObject.extend({
|
|
||||||
// Document
|
|
||||||
ActionType: { // eslint-disable-line ember/avoid-leaking-state-in-ember-objects
|
|
||||||
Read: 1,
|
|
||||||
Feedback: 2,
|
|
||||||
Contribute: 3,
|
|
||||||
ApprovalRequest: 4,
|
|
||||||
Approved: 5,
|
|
||||||
Rejected: 6,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
export default { econstants }
|
|
|
@ -11,7 +11,6 @@
|
||||||
|
|
||||||
import $ from 'jquery';
|
import $ from 'jquery';
|
||||||
import constants from '../constants/constants';
|
import constants from '../constants/constants';
|
||||||
import econstants from '../constants/econstants';
|
|
||||||
|
|
||||||
export function initialize(application) {
|
export function initialize(application) {
|
||||||
// address insecure jquery defaults (kudos: @nathanhammond)
|
// address insecure jquery defaults (kudos: @nathanhammond)
|
||||||
|
@ -24,9 +23,7 @@ export function initialize(application) {
|
||||||
});
|
});
|
||||||
|
|
||||||
let cs = constants.constants;
|
let cs = constants.constants;
|
||||||
let ec = econstants.econstants;
|
|
||||||
application.register('constants:main', cs);
|
application.register('constants:main', cs);
|
||||||
application.register('econstants:main', ec);
|
|
||||||
|
|
||||||
Dropzone.autoDiscover = false;
|
Dropzone.autoDiscover = false;
|
||||||
CodeMirror.modeURL = "/codemirror/mode/%N/%N.js";
|
CodeMirror.modeURL = "/codemirror/mode/%N/%N.js";
|
||||||
|
|
|
@ -1,25 +0,0 @@
|
||||||
// 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
|
|
||||||
|
|
||||||
export function initialize(application) {
|
|
||||||
application.inject('route', 'econstants', 'econstants:main');
|
|
||||||
application.inject('controller', 'econstants', 'econstants:main');
|
|
||||||
application.inject('component', 'econstants', 'econstants:main');
|
|
||||||
application.inject('template', 'econstants', 'econstants:main');
|
|
||||||
application.inject('service', 'econstants', 'econstants:main');
|
|
||||||
application.inject('model', 'econstants', 'econstants:main');
|
|
||||||
}
|
|
||||||
|
|
||||||
export default {
|
|
||||||
name: 'econstants',
|
|
||||||
after: "application",
|
|
||||||
initialize: initialize
|
|
||||||
};
|
|
|
@ -10,9 +10,7 @@
|
||||||
// https://documize.com
|
// https://documize.com
|
||||||
|
|
||||||
import { inject as service } from '@ember/service';
|
import { inject as service } from '@ember/service';
|
||||||
|
|
||||||
import Mixin from '@ember/object/mixin';
|
import Mixin from '@ember/object/mixin';
|
||||||
import constants from '../utils/constants';
|
|
||||||
|
|
||||||
export default Mixin.create({
|
export default Mixin.create({
|
||||||
appMeta: service(),
|
appMeta: service(),
|
||||||
|
@ -21,7 +19,9 @@ export default Mixin.create({
|
||||||
|
|
||||||
init() {
|
init() {
|
||||||
this._super(...arguments);
|
this._super(...arguments);
|
||||||
|
let constants = this.get('constants');
|
||||||
|
|
||||||
this.set('isAuthProviderDocumize', this.get('appMeta.authProvider') === constants.AuthProvider.Documize);
|
this.set('isAuthProviderDocumize', this.get('appMeta.authProvider') === constants.AuthProvider.Documize);
|
||||||
this.set('isAuthProviderKeycloak', this.get('appMeta.authProvider') === constants.AuthProvider.Keycloak);
|
this.set('isAuthProviderKeycloak', this.get('appMeta.authProvider') === constants.AuthProvider.Keycloak);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -12,7 +12,6 @@
|
||||||
import { computed } from '@ember/object';
|
import { computed } from '@ember/object';
|
||||||
import Model from 'ember-data/model';
|
import Model from 'ember-data/model';
|
||||||
import attr from 'ember-data/attr';
|
import attr from 'ember-data/attr';
|
||||||
import constants from '../utils/constants';
|
|
||||||
|
|
||||||
export default Model.extend({
|
export default Model.extend({
|
||||||
orgId: attr('string'),
|
orgId: attr('string'),
|
||||||
|
@ -28,6 +27,7 @@ export default Model.extend({
|
||||||
|
|
||||||
activityLabel: computed('activityType', function() {
|
activityLabel: computed('activityType', function() {
|
||||||
let label = '';
|
let label = '';
|
||||||
|
let constants = this.get('constants');
|
||||||
|
|
||||||
switch (this.get('activityType')) {
|
switch (this.get('activityType')) {
|
||||||
case constants.UserActivityType.Created:
|
case constants.UserActivityType.Created:
|
||||||
|
@ -60,6 +60,9 @@ export default Model.extend({
|
||||||
case constants.UserActivityType.Rejected:
|
case constants.UserActivityType.Rejected:
|
||||||
label = 'Rejected';
|
label = 'Rejected';
|
||||||
break;
|
break;
|
||||||
|
case constants.UserActivityType.Published:
|
||||||
|
label = 'Published';
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -69,6 +72,7 @@ export default Model.extend({
|
||||||
|
|
||||||
activityColor: computed('activityType', function() {
|
activityColor: computed('activityType', function() {
|
||||||
let color = '';
|
let color = '';
|
||||||
|
let constants = this.get('constants');
|
||||||
|
|
||||||
switch (this.get('activityType')) {
|
switch (this.get('activityType')) {
|
||||||
case constants.UserActivityType.Created:
|
case constants.UserActivityType.Created:
|
||||||
|
@ -101,6 +105,9 @@ export default Model.extend({
|
||||||
case constants.UserActivityType.Rejected:
|
case constants.UserActivityType.Rejected:
|
||||||
color = 'color-red';
|
color = 'color-red';
|
||||||
break;
|
break;
|
||||||
|
case constants.UserActivityType.Published:
|
||||||
|
color = 'color-green';
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,7 +11,6 @@
|
||||||
|
|
||||||
import { computed } from '@ember/object';
|
import { computed } from '@ember/object';
|
||||||
import attr from 'ember-data/attr';
|
import attr from 'ember-data/attr';
|
||||||
import constants from '../utils/constants';
|
|
||||||
import stringUtil from '../utils/string';
|
import stringUtil from '../utils/string';
|
||||||
import Model from 'ember-data/model';
|
import Model from 'ember-data/model';
|
||||||
|
|
||||||
|
@ -20,6 +19,7 @@ export default Model.extend({
|
||||||
orgId: attr('string'),
|
orgId: attr('string'),
|
||||||
userId: attr('string'),
|
userId: attr('string'),
|
||||||
folderType: attr('number', { defaultValue: 2 }),
|
folderType: attr('number', { defaultValue: 2 }),
|
||||||
|
lifecycle: attr('number', { defaultValue: 1 }),
|
||||||
likes: attr('string'),
|
likes: attr('string'),
|
||||||
|
|
||||||
allowLikes: computed('likes', function () {
|
allowLikes: computed('likes', function () {
|
||||||
|
@ -31,14 +31,17 @@ export default Model.extend({
|
||||||
}),
|
}),
|
||||||
|
|
||||||
markAsRestricted() {
|
markAsRestricted() {
|
||||||
|
let constants = this.get('constants');
|
||||||
this.set('folderType', constants.FolderType.Protected);
|
this.set('folderType', constants.FolderType.Protected);
|
||||||
},
|
},
|
||||||
|
|
||||||
markAsPrivate() {
|
markAsPrivate() {
|
||||||
|
let constants = this.get('constants');
|
||||||
this.set('folderType', constants.FolderType.Private);
|
this.set('folderType', constants.FolderType.Private);
|
||||||
},
|
},
|
||||||
|
|
||||||
markAsPublic() {
|
markAsPublic() {
|
||||||
|
let constants = this.get('constants');
|
||||||
this.set('folderType', constants.FolderType.Public);
|
this.set('folderType', constants.FolderType.Public);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
@ -25,6 +25,7 @@ export default Model.extend({
|
||||||
versioned: attr('string'),
|
versioned: attr('string'),
|
||||||
drafted: attr('string'),
|
drafted: attr('string'),
|
||||||
archived: attr('string'),
|
archived: attr('string'),
|
||||||
|
published: attr('string'),
|
||||||
|
|
||||||
hasContributed: computed('contributed', function () {
|
hasContributed: computed('contributed', function () {
|
||||||
return this.get('contributed').length > 0;
|
return this.get('contributed').length > 0;
|
||||||
|
@ -49,5 +50,8 @@ export default Model.extend({
|
||||||
}),
|
}),
|
||||||
hasArchived: computed('archived', function () {
|
hasArchived: computed('archived', function () {
|
||||||
return this.get('archived').length > 0;
|
return this.get('archived').length > 0;
|
||||||
|
}),
|
||||||
|
hasPublished: computed('published', function () {
|
||||||
|
return this.get('published').length > 0;
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
|
|
|
@ -12,12 +12,13 @@
|
||||||
import $ from 'jquery';
|
import $ from 'jquery';
|
||||||
import { inject as service } from '@ember/service';
|
import { inject as service } from '@ember/service';
|
||||||
import Route from '@ember/routing/route';
|
import Route from '@ember/routing/route';
|
||||||
import constants from '../../../utils/constants';
|
|
||||||
|
|
||||||
export default Route.extend({
|
export default Route.extend({
|
||||||
appMeta: service(),
|
appMeta: service(),
|
||||||
|
|
||||||
beforeModel() {
|
beforeModel() {
|
||||||
|
let constants = this.get('constants');
|
||||||
|
|
||||||
if (this.get('appMeta.authProvider') === constants.AuthProvider.Keycloak) {
|
if (this.get('appMeta.authProvider') === constants.AuthProvider.Keycloak) {
|
||||||
this.transitionTo('auth.login');
|
this.transitionTo('auth.login');
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,10 +10,8 @@
|
||||||
// https://documize.com
|
// https://documize.com
|
||||||
|
|
||||||
import { Promise as EmberPromise } from 'rsvp';
|
import { Promise as EmberPromise } from 'rsvp';
|
||||||
|
|
||||||
import { inject as service } from '@ember/service';
|
import { inject as service } from '@ember/service';
|
||||||
import Route from '@ember/routing/route';
|
import Route from '@ember/routing/route';
|
||||||
import constants from '../../../utils/constants';
|
|
||||||
|
|
||||||
export default Route.extend({
|
export default Route.extend({
|
||||||
session: service(),
|
session: service(),
|
||||||
|
@ -29,6 +27,8 @@ export default Route.extend({
|
||||||
|
|
||||||
beforeModel(transition) {
|
beforeModel(transition) {
|
||||||
return new EmberPromise((resolve) => {
|
return new EmberPromise((resolve) => {
|
||||||
|
let constants = this.get('constants');
|
||||||
|
|
||||||
this.set('mode', is.not.undefined(transition.queryParams.mode) ? transition.queryParams.mode : 'reject');
|
this.set('mode', is.not.undefined(transition.queryParams.mode) ? transition.queryParams.mode : 'reject');
|
||||||
|
|
||||||
if (this.get('mode') === 'reject' || this.get('appMeta.authProvider') !== constants.AuthProvider.Keycloak) {
|
if (this.get('mode') === 'reject' || this.get('appMeta.authProvider') !== constants.AuthProvider.Keycloak) {
|
||||||
|
|
|
@ -13,7 +13,6 @@ import $ from 'jquery';
|
||||||
import { Promise as EmberPromise } from 'rsvp';
|
import { Promise as EmberPromise } from 'rsvp';
|
||||||
import { inject as service } from '@ember/service';
|
import { inject as service } from '@ember/service';
|
||||||
import Route from '@ember/routing/route';
|
import Route from '@ember/routing/route';
|
||||||
import constants from '../../../utils/constants';
|
|
||||||
|
|
||||||
export default Route.extend({
|
export default Route.extend({
|
||||||
appMeta: service(),
|
appMeta: service(),
|
||||||
|
@ -23,6 +22,8 @@ export default Route.extend({
|
||||||
|
|
||||||
beforeModel(transition) {
|
beforeModel(transition) {
|
||||||
return new EmberPromise((resolve) => {
|
return new EmberPromise((resolve) => {
|
||||||
|
let constants = this.get('constants');
|
||||||
|
|
||||||
let authProvider = this.get('appMeta.authProvider');
|
let authProvider = this.get('appMeta.authProvider');
|
||||||
|
|
||||||
switch (authProvider) {
|
switch (authProvider) {
|
||||||
|
|
|
@ -13,7 +13,6 @@ import { Promise as EmberPromise } from 'rsvp';
|
||||||
import { inject as service } from '@ember/service';
|
import { inject as service } from '@ember/service';
|
||||||
import Controller from '@ember/controller';
|
import Controller from '@ember/controller';
|
||||||
import NotifierMixin from "../../../mixins/notifier";
|
import NotifierMixin from "../../../mixins/notifier";
|
||||||
// import constants from '../../../utils/constants';
|
|
||||||
|
|
||||||
export default Controller.extend(NotifierMixin, {
|
export default Controller.extend(NotifierMixin, {
|
||||||
global: service(),
|
global: service(),
|
||||||
|
|
|
@ -13,7 +13,6 @@ import { Promise as EmberPromise } from 'rsvp';
|
||||||
import { inject as service } from '@ember/service';
|
import { inject as service } from '@ember/service';
|
||||||
import Route from '@ember/routing/route';
|
import Route from '@ember/routing/route';
|
||||||
import AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';
|
import AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';
|
||||||
import constants from '../../../utils/constants';
|
|
||||||
|
|
||||||
export default Route.extend(AuthenticatedRouteMixin, {
|
export default Route.extend(AuthenticatedRouteMixin, {
|
||||||
appMeta: service(),
|
appMeta: service(),
|
||||||
|
@ -33,6 +32,8 @@ export default Route.extend(AuthenticatedRouteMixin, {
|
||||||
};
|
};
|
||||||
|
|
||||||
return new EmberPromise((resolve) => {
|
return new EmberPromise((resolve) => {
|
||||||
|
let constants = this.get('constants');
|
||||||
|
|
||||||
this.get('global').getAuthConfig().then((config) => {
|
this.get('global').getAuthConfig().then((config) => {
|
||||||
switch (data.authProvider) {
|
switch (data.authProvider) {
|
||||||
case constants.AuthProvider.Keycloak:
|
case constants.AuthProvider.Keycloak:
|
||||||
|
|
|
@ -13,7 +13,6 @@ import { Promise as EmberPromise } from 'rsvp';
|
||||||
import { inject as service } from '@ember/service';
|
import { inject as service } from '@ember/service';
|
||||||
import Route from '@ember/routing/route';
|
import Route from '@ember/routing/route';
|
||||||
import AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';
|
import AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';
|
||||||
import constants from '../../../utils/constants';
|
|
||||||
|
|
||||||
export default Route.extend(AuthenticatedRouteMixin, {
|
export default Route.extend(AuthenticatedRouteMixin, {
|
||||||
userService: service('user'),
|
userService: service('user'),
|
||||||
|
@ -28,6 +27,8 @@ export default Route.extend(AuthenticatedRouteMixin, {
|
||||||
|
|
||||||
model() {
|
model() {
|
||||||
return new EmberPromise((resolve) => {
|
return new EmberPromise((resolve) => {
|
||||||
|
let constants = this.get('constants');
|
||||||
|
|
||||||
if (this.get('appMeta.authProvider') == constants.AuthProvider.Keycloak) {
|
if (this.get('appMeta.authProvider') == constants.AuthProvider.Keycloak) {
|
||||||
this.get('global').syncExternalUsers().then(() => {
|
this.get('global').syncExternalUsers().then(() => {
|
||||||
this.get('userService').getComplete('').then((users) =>{
|
this.get('userService').getComplete('').then((users) =>{
|
||||||
|
|
|
@ -15,7 +15,6 @@ import { resolve } from 'rsvp';
|
||||||
import Service, { inject as service } from '@ember/service';
|
import Service, { inject as service } from '@ember/service';
|
||||||
import miscUtil from '../utils/misc';
|
import miscUtil from '../utils/misc';
|
||||||
import config from '../config/environment';
|
import config from '../config/environment';
|
||||||
import constants from '../utils/constants';
|
|
||||||
|
|
||||||
export default Service.extend({
|
export default Service.extend({
|
||||||
ajax: service(),
|
ajax: service(),
|
||||||
|
@ -34,7 +33,7 @@ export default Service.extend({
|
||||||
updateAvailable: false,
|
updateAvailable: false,
|
||||||
valid: true,
|
valid: true,
|
||||||
allowAnonymousAccess: false,
|
allowAnonymousAccess: false,
|
||||||
authProvider: constants.AuthProvider.Documize,
|
authProvider: null,
|
||||||
authConfig: null,
|
authConfig: null,
|
||||||
setupMode: false,
|
setupMode: false,
|
||||||
secureMode: false,
|
secureMode: false,
|
||||||
|
@ -48,6 +47,9 @@ export default Service.extend({
|
||||||
},
|
},
|
||||||
|
|
||||||
boot(requestedRoute, requestedUrl) { // eslint-disable-line no-unused-vars
|
boot(requestedRoute, requestedUrl) { // eslint-disable-line no-unused-vars
|
||||||
|
let constants = this.get('constants');
|
||||||
|
this.set('authProvider', constants.AuthProvider.Documize);
|
||||||
|
|
||||||
let dbhash;
|
let dbhash;
|
||||||
if (is.not.null(document.head.querySelector("[property=dbhash]"))) {
|
if (is.not.null(document.head.querySelector("[property=dbhash]"))) {
|
||||||
dbhash = document.head.querySelector("[property=dbhash]").content;
|
dbhash = document.head.querySelector("[property=dbhash]").content;
|
||||||
|
@ -84,6 +86,7 @@ export default Service.extend({
|
||||||
|
|
||||||
let self = this;
|
let self = this;
|
||||||
let cacheBuster = + new Date();
|
let cacheBuster = + new Date();
|
||||||
|
|
||||||
$.getJSON(`https://storage.googleapis.com/documize/news/meta.json?cb=${cacheBuster}`, function (versions) {
|
$.getJSON(`https://storage.googleapis.com/documize/news/meta.json?cb=${cacheBuster}`, function (versions) {
|
||||||
let cv = 'v' + versions.community.version;
|
let cv = 'v' + versions.community.version;
|
||||||
let ev = 'v' + versions.enterprise.version;
|
let ev = 'v' + versions.enterprise.version;
|
||||||
|
|
|
@ -1,46 +0,0 @@
|
||||||
// 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
|
|
||||||
|
|
||||||
export default {
|
|
||||||
FolderType: {
|
|
||||||
Public: 1,
|
|
||||||
Private: 2,
|
|
||||||
Protected: 3
|
|
||||||
},
|
|
||||||
|
|
||||||
AuthProvider: {
|
|
||||||
Documize: 'documize',
|
|
||||||
Keycloak: 'keycloak'
|
|
||||||
},
|
|
||||||
|
|
||||||
DocumentActionType: {
|
|
||||||
Read: 1,
|
|
||||||
Feedback: 2,
|
|
||||||
Contribute: 3,
|
|
||||||
Approve: 4,
|
|
||||||
Approved: 5,
|
|
||||||
Rejected: 6,
|
|
||||||
},
|
|
||||||
|
|
||||||
UserActivityType: {
|
|
||||||
Created: 1,
|
|
||||||
Read: 2,
|
|
||||||
Edited: 3,
|
|
||||||
Deleted: 4,
|
|
||||||
Archived: 5,
|
|
||||||
Approved: 6,
|
|
||||||
Reverted: 7,
|
|
||||||
PublishedTemplate: 8,
|
|
||||||
PublishedBlock: 9,
|
|
||||||
Feedback: 10,
|
|
||||||
Rejected: 11,
|
|
||||||
}
|
|
||||||
};
|
|
|
@ -1,232 +0,0 @@
|
||||||
// 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 { htmlSafe } from '@ember/string';
|
|
||||||
import EmberObject, { computed } from '@ember/object';
|
|
||||||
import Ember from 'ember';
|
|
||||||
import stringUtil from '../utils/string';
|
|
||||||
import constants from '../utils/constants';
|
|
||||||
|
|
||||||
let BaseModel = EmberObject.extend({
|
|
||||||
id: "",
|
|
||||||
created: null,
|
|
||||||
revised: null,
|
|
||||||
|
|
||||||
setSafe(attr, value) {
|
|
||||||
this.set(attr, htmlSafe(Ember.Handlebars.Utils.escapeExpression(value)));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// ProtectedFolderParticipant used to display folder participants that can
|
|
||||||
// then be marked as folder owner.
|
|
||||||
let ProtectedFolderParticipant = EmberObject.extend({
|
|
||||||
userId: "",
|
|
||||||
email: "",
|
|
||||||
firstname: "",
|
|
||||||
lastname: "",
|
|
||||||
name: "",
|
|
||||||
folderId: "",
|
|
||||||
folderType: 0,
|
|
||||||
|
|
||||||
fullname: computed('firstname', 'lastname', function () {
|
|
||||||
return `${this.get('firstname')} ${this.get('lastname')}`;
|
|
||||||
})
|
|
||||||
});
|
|
||||||
|
|
||||||
let UserModel = BaseModel.extend({
|
|
||||||
firstname: "",
|
|
||||||
lastname: "",
|
|
||||||
email: "",
|
|
||||||
initials: "",
|
|
||||||
active: false,
|
|
||||||
editor: false,
|
|
||||||
admin: false,
|
|
||||||
|
|
||||||
fullname: computed('firstname', 'lastname', function () {
|
|
||||||
return `${this.get('firstname')} ${this.get('lastname')}`;
|
|
||||||
}),
|
|
||||||
|
|
||||||
init() {
|
|
||||||
this._super(...arguments);
|
|
||||||
this.accounts = [];
|
|
||||||
},
|
|
||||||
|
|
||||||
generateInitials() {
|
|
||||||
let first = this.get('firstname').trim();
|
|
||||||
let last = this.get('lastname').trim();
|
|
||||||
this.set('initials', first.substr(0, 1) + last.substr(0, 1));
|
|
||||||
},
|
|
||||||
|
|
||||||
copy() {
|
|
||||||
let copy = UserModel.create();
|
|
||||||
copy.id = this.id;
|
|
||||||
copy.created = this.created;
|
|
||||||
copy.revised = this.revised;
|
|
||||||
copy.firstname = this.firstname;
|
|
||||||
copy.lastname = this.lastname;
|
|
||||||
copy.email = this.email;
|
|
||||||
copy.initials = this.initials;
|
|
||||||
copy.active = this.active;
|
|
||||||
copy.editor = this.editor;
|
|
||||||
copy.admin = this.admin;
|
|
||||||
copy.accounts = this.accounts;
|
|
||||||
|
|
||||||
return copy;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
let OrganizationModel = BaseModel.extend({
|
|
||||||
title: "",
|
|
||||||
message: "",
|
|
||||||
email: "",
|
|
||||||
allowAnonymousAccess: false,
|
|
||||||
});
|
|
||||||
|
|
||||||
let DocumentModel = BaseModel.extend({
|
|
||||||
name: "",
|
|
||||||
excerpt: "",
|
|
||||||
job: "",
|
|
||||||
location: "",
|
|
||||||
orgId: "",
|
|
||||||
folderId: "",
|
|
||||||
userId: "",
|
|
||||||
tags: "",
|
|
||||||
template: "",
|
|
||||||
protection: 0,
|
|
||||||
approval: 0,
|
|
||||||
|
|
||||||
slug: computed('name', function () {
|
|
||||||
return stringUtil.makeSlug(this.get('name'));
|
|
||||||
}),
|
|
||||||
|
|
||||||
// client-side property
|
|
||||||
selected: false
|
|
||||||
});
|
|
||||||
|
|
||||||
let TemplateModel = BaseModel.extend({
|
|
||||||
author: "",
|
|
||||||
dated: null,
|
|
||||||
description: "",
|
|
||||||
title: "",
|
|
||||||
type: 0,
|
|
||||||
|
|
||||||
slug: computed('title', function () {
|
|
||||||
return stringUtil.makeSlug(this.get('title'));
|
|
||||||
}),
|
|
||||||
});
|
|
||||||
|
|
||||||
let FolderModel = BaseModel.extend({
|
|
||||||
name: "",
|
|
||||||
orgId: "",
|
|
||||||
userId: "",
|
|
||||||
folderType: constants.FolderType.Private,
|
|
||||||
|
|
||||||
slug: computed('name', function () {
|
|
||||||
return stringUtil.makeSlug(this.get('name'));
|
|
||||||
}),
|
|
||||||
|
|
||||||
markAsRestricted: function () {
|
|
||||||
this.set('folderType', constants.FolderType.Protected);
|
|
||||||
},
|
|
||||||
|
|
||||||
markAsPrivate: function () {
|
|
||||||
this.set('folderType', constants.FolderType.Private);
|
|
||||||
},
|
|
||||||
|
|
||||||
markAsPublic: function () {
|
|
||||||
this.set('folderType', constants.FolderType.Public);
|
|
||||||
},
|
|
||||||
|
|
||||||
// client-side prop that holds who can see this folder
|
|
||||||
init() {
|
|
||||||
this._super(...arguments);
|
|
||||||
this.sharedWith = [];
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
let AttachmentModel = BaseModel.extend({
|
|
||||||
documentId: "",
|
|
||||||
extension: "",
|
|
||||||
fileId: "",
|
|
||||||
filename: "",
|
|
||||||
job: "",
|
|
||||||
orgId: ""
|
|
||||||
});
|
|
||||||
|
|
||||||
let PageModel = BaseModel.extend({
|
|
||||||
documentId: "",
|
|
||||||
orgId: "",
|
|
||||||
contentType: "",
|
|
||||||
level: 1,
|
|
||||||
sequence: 1004,
|
|
||||||
revisions: 0,
|
|
||||||
title: "",
|
|
||||||
body: "",
|
|
||||||
rawBody: "",
|
|
||||||
status: 0,
|
|
||||||
relativeId: '',
|
|
||||||
|
|
||||||
tagName: computed('level', function () {
|
|
||||||
return "h" + this.get('level');
|
|
||||||
}),
|
|
||||||
|
|
||||||
tocIndent: computed('level', function () {
|
|
||||||
return (this.get('level') - 1) * 20;
|
|
||||||
}),
|
|
||||||
|
|
||||||
tocIndentCss: computed('tocIndent', function () {
|
|
||||||
let tocIndent = this.get('tocIndent');
|
|
||||||
return `margin-left-${tocIndent}`;
|
|
||||||
}),
|
|
||||||
|
|
||||||
init() {
|
|
||||||
this._super(...arguments);
|
|
||||||
this.meta = {};
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
let PageMetaModel = BaseModel.extend({
|
|
||||||
pageId: "",
|
|
||||||
documentId: "",
|
|
||||||
orgId: "",
|
|
||||||
rawBody: "",
|
|
||||||
externalSource: false,
|
|
||||||
|
|
||||||
init() {
|
|
||||||
this._super(...arguments);
|
|
||||||
this.config = {};
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
let SectionModel = BaseModel.extend({
|
|
||||||
contentType: "",
|
|
||||||
title: "",
|
|
||||||
description: "",
|
|
||||||
iconFont: "",
|
|
||||||
iconFile: "",
|
|
||||||
|
|
||||||
hasImage: computed('iconFont', 'iconFile', function () {
|
|
||||||
return this.get('iconFile').length > 0;
|
|
||||||
}),
|
|
||||||
});
|
|
||||||
|
|
||||||
export default {
|
|
||||||
AttachmentModel,
|
|
||||||
DocumentModel,
|
|
||||||
FolderModel,
|
|
||||||
OrganizationModel,
|
|
||||||
PageModel,
|
|
||||||
PageMetaModel,
|
|
||||||
ProtectedFolderParticipant,
|
|
||||||
SectionModel,
|
|
||||||
TemplateModel,
|
|
||||||
UserModel
|
|
||||||
};
|
|
Loading…
Add table
Add a link
Reference in a new issue