diff --git a/gui/app/components/document/document-history.js b/gui/app/components/document/document-history.js deleted file mode 100644 index 0d09e2ab..00000000 --- a/gui/app/components/document/document-history.js +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright 2016 Documize Inc. . 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 . -// -// https://documize.com - -import { computed, set } from '@ember/object'; - -import Component from '@ember/component'; - -export default Component.extend({ - revision: null, - hasDiff: computed('diff', function () { - return this.get('diff').length > 0; - }), - - didReceiveAttrs() { - let revisions = this.get('revisions'); - - revisions.forEach((r) => { - set(r, 'deleted', r.revisions === 0); - set(r, 'label', `${r.created} - ${r.firstname} ${r.lastname} - ${r.title}`); - }); - - if (revisions.length > 0 && is.null(this.get('revision'))) { - this.send('onSelectRevision', revisions[0]); - } - - this.set('revisions', revisions); - }, - - actions: { - onSelectRevision(revision) { - this.set('revision', revision); - - if (!revision.deleted) { - this.attrs.onFetchDiff(revision.pageId, revision.id); - } - }, - - onRollback() { - let revision = this.get('revision'); - this.attrs.onRollback(revision.pageId, revision.id); - } - } -}); diff --git a/gui/app/components/document/view-revision.js b/gui/app/components/document/view-revision.js new file mode 100644 index 00000000..df8083ec --- /dev/null +++ b/gui/app/components/document/view-revision.js @@ -0,0 +1,73 @@ +// Copyright 2016 Documize Inc. . 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 . +// +// https://documize.com + +import { computed, set } from '@ember/object'; +import { inject as service } from '@ember/service'; +import Component from '@ember/component'; +import ModalMixin from '../../mixins/modal'; + +export default Component.extend(ModalMixin, { + documentService: service('document'), + revisions: [], + revision: null, + diff: '', + hasRevisions: computed('revisions', function() { + return this.get('revisions').length > 0; + }), + hasDiff: computed('diff', function() { + return this.get('diff').length > 0; + }), + + didReceiveAttrs() { + this._super(...arguments); + this.fetchRevisions(); + }, + + fetchRevisions() { + this.get('documentService').getDocumentRevisions(this.get('document.id')).then((revisions) => { + revisions.forEach((r) => { + set(r, 'deleted', r.revisions === 0); + let date = moment(r.created).format('Do MMMM YYYY HH:mm'); + let format = `${r.firstname} ${r.lastname} on ${date} changed ${r.title}`; + set(r, 'label', format); + }); + + this.set('revisions', revisions); + + if (revisions.length > 0 && is.null(this.get('revision'))) { + this.send('onSelectRevision', revisions[0]); + } + }); + }, + + fetchDiff(pageId, revisionId) { + this.get('documentService').getPageRevisionDiff(this.get('document.id'), pageId, revisionId).then((revision) => { + this.set('diff', revision); + }); + }, + + actions: { + onSelectRevision(revision) { + this.set('revision', revision); + + if (!revision.deleted) { + this.fetchDiff(revision.pageId, revision.id); + } + }, + + onRollback() { + let revision = this.get('revision'); + this.attrs.onRollback(revision.pageId, revision.id); + + this.modalClose('#document-rollback-modal'); + } + } +}); diff --git a/gui/app/pods/document/history/controller.js b/gui/app/pods/document/history/controller.js deleted file mode 100644 index 68c2d610..00000000 --- a/gui/app/pods/document/history/controller.js +++ /dev/null @@ -1,25 +0,0 @@ -import { inject as service } from '@ember/service'; -import Controller from '@ember/controller'; -import NotifierMixin from '../../../mixins/notifier'; - -export default Controller.extend(NotifierMixin, { - documentService: service('document'), - - actions: { - onFetchDiff(pageId, revisionId) { - this.get('documentService').getPageRevisionDiff(this.get('model.document.id'), pageId, revisionId).then((revision) => { - this.set('model.diff', revision); - }); - }, - - onRollback(pageId, revisionId) { - this.get('documentService').rollbackPage(this.get('model.document.id'), pageId, revisionId).then(() => { - this.transitionToRoute('document.index', - this.get('model.folder.id'), - this.get('model.folder.slug'), - this.get('model.document.id'), - this.get('model.document.slug')); - }); - } - } -}); diff --git a/gui/app/pods/document/history/route.js b/gui/app/pods/document/history/route.js deleted file mode 100644 index 120fe758..00000000 --- a/gui/app/pods/document/history/route.js +++ /dev/null @@ -1,25 +0,0 @@ -import { hash } from 'rsvp'; -import { inject as service } from '@ember/service'; -import Route from '@ember/routing/route'; -import AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin'; - -export default Route.extend(AuthenticatedRouteMixin, { - documentService: service('document'), - folderService: service('folder'), - - model() { - return hash({ - folders: this.modelFor('document').folders, - folder: this.modelFor('document').folder, - document: this.modelFor('document').document, - pages: this.modelFor('document').pages, - diff: "", - revisions: this.get('documentService').getDocumentRevisions(this.modelFor('document').document.get('id')) - }); - }, - - setupController(controller, model) { - controller.set('model', model); - controller.set('hasRevisions', model.revisions.length > 0); - } -}); diff --git a/gui/app/pods/document/history/template.hbs b/gui/app/pods/document/history/template.hbs deleted file mode 100644 index cdb5247c..00000000 --- a/gui/app/pods/document/history/template.hbs +++ /dev/null @@ -1,23 +0,0 @@ -
-
-
-
-
- {{#link-to 'document.index' model.folder.id model.folder.slug model.document.id model.document.slug}} - arrow_back {{model.document.name}} - {{/link-to}} -
- {{document/document-heading document=model.document}} - {{#if hasRevisions}} - {{document/document-history document=model.document folder=model.folder pages=model.pages - revisions=model.revisions diff=model.diff onFetchDiff=(action 'onFetchDiff') onRollback=(action 'onRollback')}} - {{else}} - No revisions made - {{/if}} -
-
-
-
- - - diff --git a/gui/app/pods/document/index/controller.js b/gui/app/pods/document/index/controller.js index 425b9124..83446890 100644 --- a/gui/app/pods/document/index/controller.js +++ b/gui/app/pods/document/index/controller.js @@ -238,6 +238,13 @@ export default Controller.extend(NotifierMixin, TooltipMixin, { let doc = this.get('model.document'); doc.set('tags', tags); this.get('documentService').save(doc); - } + }, + + onRollback(pageId, revisionId) { + this.get('documentService').rollbackPage(this.get('model.document.id'), pageId, revisionId).then(() => { + this.set('tab', 'content'); + this.get('target._routerMicrolib').refresh(); + }); + } } }); diff --git a/gui/app/pods/document/index/template.hbs b/gui/app/pods/document/index/template.hbs index ab12a4f6..df2c9fdb 100644 --- a/gui/app/pods/document/index/template.hbs +++ b/gui/app/pods/document/index/template.hbs @@ -30,6 +30,10 @@ {{#if (eq tab 'activity')}} {{document/view-activity document=model.document pages=model.pages permissions=model.permissions}} {{/if}} + + {{#if (eq tab 'revision')}} + {{document/view-revision document=model.document folder=model.folder pages=model.pages onRollback=(action 'onRollback')}} + {{/if}}
{{document/document-sidebar tab=tab diff --git a/gui/app/router.js b/gui/app/router.js index 8796ef3a..15fe26fe 100644 --- a/gui/app/router.js +++ b/gui/app/router.js @@ -38,9 +38,6 @@ export default Router.map(function () { this.route('block', { path: 'block/:block_id' }); - this.route('history', { - path: 'history' - }); }); this.route('customize', { diff --git a/gui/app/styles/view/document/all.scss b/gui/app/styles/view/document/all.scss index b9be6990..6fccbaff 100644 --- a/gui/app/styles/view/document/all.scss +++ b/gui/app/styles/view/document/all.scss @@ -1,3 +1,2 @@ -@import "history.scss"; @import "toc.scss"; @import "new-section.scss"; diff --git a/gui/app/styles/view/document/document.scss b/gui/app/styles/view/document/document.scss index e3e57521..a0f73d3d 100644 --- a/gui/app/styles/view/document/document.scss +++ b/gui/app/styles/view/document/document.scss @@ -3,4 +3,5 @@ @import "section-editor.scss"; @import "view-attachment.scss"; @import "view-activity.scss"; +@import "view-revision.scss"; @import "wysiwyg.scss"; diff --git a/gui/app/styles/view/document/history.scss b/gui/app/styles/view/document/view-revision.scss similarity index 54% rename from gui/app/styles/view/document/history.scss rename to gui/app/styles/view/document/view-revision.scss index 9daa9a11..01211fb6 100644 --- a/gui/app/styles/view/document/history.scss +++ b/gui/app/styles/view/document/view-revision.scss @@ -1,10 +1,5 @@ -.zone-document-history { - margin-left: 60px; - padding: 20px 60px; - z-index: 777; - position: relative; - - .diff-zone { +.view-revision { + > .diff-zone { @extend .transition-all; @include border-radius(2px); @include ease-in(); @@ -12,16 +7,10 @@ padding: 25px 50px; box-shadow: 0 0 0 0.75pt $color-stroke,0 0 3pt 0.75pt $color-stroke; background-color: $color-white; + margin: 50px 0; > .canvas { padding: 0; } } - - .revision-picker { - width: 300px; - float: left; - margin-top: 10px; - display: inline-block; - } } diff --git a/gui/app/templates/components/document/document-history.hbs b/gui/app/templates/components/document/document-history.hbs deleted file mode 100644 index 2da5e482..00000000 --- a/gui/app/templates/components/document/document-history.hbs +++ /dev/null @@ -1,17 +0,0 @@ -{{ui-select tagName="span" class="revision-picker" content=revisions action=(action 'onSelectRevision') optionValuePath="id" optionLabelPath="label"}} - -
Restore
-{{#dropdown-dialog target="restore-history-button" position="bottom right" button="Restore" color="flat-green" onAction=(action 'onRollback')}} -

Are you sure you want to roll back to this version?

-{{/dropdown-dialog}} -
-
- -
- {{#if hasDiff}} -
- {{{diff}}} -
- {{/if}} -
-
diff --git a/gui/app/templates/components/document/view-revision.hbs b/gui/app/templates/components/document/view-revision.hbs new file mode 100644 index 00000000..528cea03 --- /dev/null +++ b/gui/app/templates/components/document/view-revision.hbs @@ -0,0 +1,41 @@ +
+ {{#if hasRevisions}} +
+
+ {{ui-select tagName="span" class="revision-picker" content=revisions action=(action 'onSelectRevision') optionValuePath="id" optionLabelPath="label"}} +
+
+
Restore
+
+
+
+
+
+ {{#if hasDiff}} +
+ {{{diff}}} +
+ {{/if}} +
+
+
+ + + {{else}} +

No revisions made

+ {{/if}} +
+