mirror of
https://github.com/documize/community.git
synced 2025-08-03 04:25:25 +02:00
upgraded Ember and Bootstrap, merged changes
This commit is contained in:
parent
b4fd42da38
commit
5dd7d9c181
114 changed files with 9814 additions and 1361 deletions
|
@ -12,33 +12,15 @@
|
|||
import Service, { inject as service } from '@ember/service';
|
||||
|
||||
export default Service.extend({
|
||||
sessionService: service('session'),
|
||||
ajax: service(),
|
||||
store: service(),
|
||||
|
||||
// document number of views, edits, approvals, etc.
|
||||
getDocumentSummary(documentId, days) {
|
||||
return this.get('ajax').request(`activity/document/${documentId}?days=${days}`, {
|
||||
|
||||
getDocumentSummary(documentId) {
|
||||
return this.get('ajax').request(`activity/document/${documentId}`, {
|
||||
method: "GET"
|
||||
}).then((response) => {
|
||||
let data = {
|
||||
viewers: [],
|
||||
changers: []
|
||||
};
|
||||
|
||||
data.viewers = response.viewers.map((obj) => {
|
||||
let data = this.get('store').normalize('documentActivity', obj);
|
||||
return this.get('store').push(data);
|
||||
});
|
||||
|
||||
data.changers = response.changers.map((obj) => {
|
||||
let data = this.get('store').normalize('documentActivity', obj);
|
||||
return this.get('store').push(data);
|
||||
});
|
||||
|
||||
return data;
|
||||
return response;
|
||||
}).catch(() => {
|
||||
return [];
|
||||
});
|
||||
},
|
||||
}
|
||||
});
|
||||
|
|
|
@ -9,7 +9,9 @@
|
|||
//
|
||||
// https://documize.com
|
||||
|
||||
import $ from 'jquery';
|
||||
import Service, { inject as service } from '@ember/service';
|
||||
import { schedule } from '@ember/runloop';
|
||||
|
||||
export default Service.extend({
|
||||
sessionService: service('session'),
|
||||
|
@ -42,5 +44,17 @@ export default Service.extend({
|
|||
}
|
||||
|
||||
$('head').append('<meta name="description" content="' + description + '">');
|
||||
},
|
||||
|
||||
scrollTo(id) {
|
||||
schedule('afterRender', () => {
|
||||
let elem = $(id).offset();
|
||||
|
||||
if (is.undefined(elem)) return;
|
||||
|
||||
$('html, body').animate({
|
||||
scrollTop: elem.top
|
||||
}, 250);
|
||||
});
|
||||
}
|
||||
});
|
|
@ -52,6 +52,8 @@ export default Service.extend({
|
|||
});
|
||||
|
||||
return documents;
|
||||
}).catch((error) => {
|
||||
return error;
|
||||
});
|
||||
},
|
||||
|
||||
|
@ -100,6 +102,8 @@ export default Service.extend({
|
|||
}).then((response) => {
|
||||
let data = this.get('store').normalize('page', response);
|
||||
return this.get('store').push(data);
|
||||
}).catch((error) => {
|
||||
return error;
|
||||
});
|
||||
},
|
||||
|
||||
|
@ -121,7 +125,6 @@ export default Service.extend({
|
|||
|
||||
// Returns document page with content
|
||||
getPage(documentId, pageId) {
|
||||
|
||||
return this.get('ajax').request(`documents/${documentId}/pages/${pageId}`, {
|
||||
method: 'GET'
|
||||
}).then((response) => {
|
||||
|
@ -132,7 +135,6 @@ export default Service.extend({
|
|||
|
||||
// Returns document page meta object
|
||||
getPageMeta(documentId, pageId) {
|
||||
|
||||
return this.get('ajax').request(`documents/${documentId}/pages/${pageId}/meta`, {
|
||||
method: 'GET'
|
||||
}).then((response) => {
|
||||
|
@ -203,34 +205,12 @@ export default Service.extend({
|
|||
});
|
||||
},
|
||||
|
||||
//**************************************************
|
||||
// Activity
|
||||
//**************************************************
|
||||
|
||||
// document meta referes to number of views, edits, approvals, etc.
|
||||
getActivity(documentId, days) {
|
||||
return this.get('ajax').request(`documents/${documentId}/activity?days=${days}`, {
|
||||
method: "GET"
|
||||
}).then((response) => {
|
||||
let data = [];
|
||||
data = response.map((obj) => {
|
||||
let data = this.get('store').normalize('documentActivity', obj);
|
||||
return this.get('store').push(data);
|
||||
});
|
||||
|
||||
return data;
|
||||
}).catch(() => {
|
||||
return [];
|
||||
});
|
||||
},
|
||||
|
||||
//**************************************************
|
||||
// Table of contents
|
||||
//**************************************************
|
||||
|
||||
// Returns all pages without the content
|
||||
getTableOfContents(documentId) {
|
||||
|
||||
return this.get('ajax').request(`documents/${documentId}/pages?content=0`, {
|
||||
method: 'GET'
|
||||
}).then((response) => {
|
||||
|
@ -268,7 +248,6 @@ export default Service.extend({
|
|||
|
||||
// document attachments without the actual content
|
||||
getAttachments(documentId) {
|
||||
|
||||
return this.get('ajax').request(`documents/${documentId}/attachments`, {
|
||||
method: 'GET'
|
||||
}).then((response) => {
|
||||
|
@ -380,8 +359,108 @@ export default Service.extend({
|
|||
data.links = response.links;
|
||||
|
||||
return data;
|
||||
}).catch((error) => {
|
||||
return error;
|
||||
});
|
||||
},
|
||||
|
||||
// fetchPages returns all pages, page meta and pending changes for document.
|
||||
// This method bulk fetches data to reduce network chatter.
|
||||
// We produce a bunch of calculated boolean's for UI display purposes
|
||||
// that can tell us quickly about pending changes for UI display.
|
||||
fetchPages(documentId, currentUserId) {
|
||||
let constants = this.get('constants');
|
||||
let changePending = false;
|
||||
let changeAwaitingReview = false;
|
||||
let changeRejected = false;
|
||||
let userHasChangePending = false;
|
||||
let userHasChangeAwaitingReview = false;
|
||||
let userHasChangeRejected = false;
|
||||
|
||||
return this.get('ajax').request(`fetch/page/${documentId}`, {
|
||||
method: 'GET'
|
||||
}).then((response) => {
|
||||
let data = A([]);
|
||||
|
||||
response.forEach((page) => {
|
||||
changePending = false;
|
||||
changeAwaitingReview = false;
|
||||
changeRejected = false;
|
||||
userHasChangePending = false;
|
||||
userHasChangeAwaitingReview = false;
|
||||
userHasChangeRejected = false;
|
||||
|
||||
let p = this.get('store').normalize('page', page.page);
|
||||
p = this.get('store').push(p);
|
||||
|
||||
let m = this.get('store').normalize('page-meta', page.meta);
|
||||
m = this.get('store').push(m);
|
||||
|
||||
let pending = A([]);
|
||||
page.pending.forEach((i) => {
|
||||
let p = this.get('store').normalize('page', i.page);
|
||||
p = this.get('store').push(p);
|
||||
|
||||
let m = this.get('store').normalize('page-meta', i.meta);
|
||||
m = this.get('store').push(m);
|
||||
|
||||
let belongsToMe = p.get('userId') === currentUserId;
|
||||
let pageStatus = p.get('status');
|
||||
|
||||
let pi = {
|
||||
id: p.get('id'),
|
||||
page: p,
|
||||
meta: m,
|
||||
owner: i.owner,
|
||||
changePending: pageStatus === constants.ChangeState.Pending || pageStatus === constants.ChangeState.PendingNew,
|
||||
changeAwaitingReview: pageStatus === constants.ChangeState.UnderReview,
|
||||
changeRejected: pageStatus === constants.ChangeState.Rejected,
|
||||
userHasChangePending: belongsToMe && (pageStatus === constants.ChangeState.Pending || pageStatus === constants.ChangeState.PendingNew),
|
||||
userHasChangeAwaitingReview: belongsToMe && pageStatus === constants.ChangeState.UnderReview,
|
||||
userHasChangeRejected: belongsToMe && pageStatus === constants.ChangeState.Rejected
|
||||
};
|
||||
|
||||
let pim = this.get('store').normalize('page-pending', pi);
|
||||
pim = this.get('store').push(pim);
|
||||
pending.pushObject(pim);
|
||||
|
||||
if (p.get('status') === constants.ChangeState.Pending || p.get('status') === constants.ChangeState.PendingNew) {
|
||||
changePending = true;
|
||||
userHasChangePending = belongsToMe;
|
||||
}
|
||||
if (p.get('status') === constants.ChangeState.UnderReview) {
|
||||
changeAwaitingReview = true;
|
||||
userHasChangeAwaitingReview = belongsToMe;
|
||||
}
|
||||
if (p.get('status') === constants.ChangeState.Rejected) {
|
||||
changeRejected = p.get('status') === constants.ChangeState.Rejected;
|
||||
userHasChangeRejected = changeRejected && belongsToMe;
|
||||
}
|
||||
});
|
||||
|
||||
let pi = {
|
||||
id: p.get('id'),
|
||||
page: p,
|
||||
meta: m,
|
||||
pending: pending,
|
||||
changePending: changePending,
|
||||
changeAwaitingReview: changeAwaitingReview,
|
||||
changeRejected: changeRejected,
|
||||
userHasChangePending: userHasChangePending,
|
||||
userHasChangeAwaitingReview: userHasChangeAwaitingReview,
|
||||
userHasChangeRejected: userHasChangeRejected,
|
||||
userHasNewPagePending: p.isNewPageUserPending(this.get('sessionService.user.id'))
|
||||
};
|
||||
|
||||
let pim = this.get('store').normalize('page-container', pi);
|
||||
pim = this.get('store').push(pim);
|
||||
data.pushObject(pim);
|
||||
});
|
||||
|
||||
return data;
|
||||
}).catch((error) => {
|
||||
return error;
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
|
|
|
@ -19,10 +19,12 @@ export default BaseService.extend({
|
|||
ajax: service(),
|
||||
localStorage: service(),
|
||||
store: service(),
|
||||
|
||||
// selected folder
|
||||
currentFolder: null,
|
||||
permissions: {},
|
||||
|
||||
init() {
|
||||
this._super(...arguments);
|
||||
this.permissions = {};
|
||||
},
|
||||
|
||||
// Add a new folder.
|
||||
add(payload) {
|
||||
|
|
|
@ -10,7 +10,6 @@
|
|||
// https://documize.com
|
||||
|
||||
import { Promise as EmberPromise } from 'rsvp';
|
||||
|
||||
import Service, { inject as service } from '@ember/service';
|
||||
import netUtil from '../utils/net';
|
||||
|
||||
|
@ -19,7 +18,11 @@ export default Service.extend({
|
|||
ajax: service(),
|
||||
appMeta: service(),
|
||||
keycloak: null,
|
||||
config: {},
|
||||
|
||||
init() {
|
||||
this._super(...arguments);
|
||||
this.config = {};
|
||||
},
|
||||
|
||||
boot() {
|
||||
return new EmberPromise((resolve, reject) => {
|
||||
|
|
|
@ -19,9 +19,13 @@ export default Service.extend({
|
|||
ajax: service(),
|
||||
appMeta: service(),
|
||||
store: service(),
|
||||
pins: [],
|
||||
initialized: false,
|
||||
|
||||
init() {
|
||||
this._super(...arguments);
|
||||
this.pins = [];
|
||||
},
|
||||
|
||||
getUserPins() {
|
||||
let userId = this.get('session.user.id');
|
||||
|
||||
|
|
|
@ -10,17 +10,33 @@
|
|||
// https://documize.com
|
||||
|
||||
import Service, { inject as service } from '@ember/service';
|
||||
import { A } from '@ember/array';
|
||||
import ArrayProxy from '@ember/array/proxy';
|
||||
|
||||
export default Service.extend({
|
||||
sessionService: service('session'),
|
||||
ajax: service(),
|
||||
store: service(),
|
||||
|
||||
// find all matching documents.
|
||||
// find all matching documents
|
||||
find(payload) {
|
||||
return this.get('ajax').request("search", {
|
||||
method: "POST",
|
||||
data: JSON.stringify(payload),
|
||||
contentType: 'json'
|
||||
}).then((response) => {
|
||||
let results = ArrayProxy.create({
|
||||
content: A([])
|
||||
});
|
||||
|
||||
results = response.map((doc) => {
|
||||
let data = this.get('store').normalize('doc-search-result', doc);
|
||||
return this.get('store').push(data);
|
||||
});
|
||||
|
||||
return results;
|
||||
}).catch((error) => {
|
||||
return error;
|
||||
});
|
||||
},
|
||||
});
|
||||
});
|
|
@ -40,6 +40,7 @@ export default SimpleAuthSession.extend({
|
|||
}),
|
||||
|
||||
authenticated: computed('session.content.authenticated.user', function () {
|
||||
if (is.null(this.get('session.authenticator'))) return false;
|
||||
return this.get('session.authenticator') !== 'authenticator:anonymous' && this.get('session.content.authenticated.user.id') !== '0';
|
||||
}),
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue