diff --git a/app/app/components/folder/folder-toolbar.js b/app/app/components/folder/folder-toolbar.js index 50fa03cc..a13fc1dc 100644 --- a/app/app/components/folder/folder-toolbar.js +++ b/app/app/components/folder/folder-toolbar.js @@ -18,36 +18,24 @@ const { } = Ember; export default Ember.Component.extend(NotifierMixin, TooltipMixin, { + folderService: Ember.inject.service('folder'), documentService: Ember.inject.service('document'), - templateService: Ember.inject.service('template'), - folderService: Ember.inject.service('folder'), session: Ember.inject.service(), + appMeta: Ember.inject.service(), + showToolbar: false, folder: {}, busy: false, importedDocuments: [], - savedTemplates: [], isFolderOwner: computed.equal('folder.userId', 'session.user.id'), moveFolderId: "", didReceiveAttrs() { - let self = this; - this.set('isFolderOwner', this.get('folder.userId') === this.get("session.user.id")); let show = this.get('isFolderOwner') || this.get('hasSelectedDocuments') || this.get('folderService').get('canEditCurrentFolder'); this.set('showToolbar', show); - this.get('templateService').getSavedTemplates().then(function(saved) { - let emptyTemplate = { - id: "0", - title: "Empty document", - selected: true - }; - saved.unshiftObject(emptyTemplate); - self.set('savedTemplates', saved); - }); - let targets = _.reject(this.get('folders'), { id: this.get('folder').get('id') }); @@ -66,34 +54,61 @@ export default Ember.Component.extend(NotifierMixin, TooltipMixin, { } if (this.get('folderService').get('canEditCurrentFolder')) { this.addTooltip(document.getElementById("import-document-button")); - this.addTooltip(document.getElementById("start-document-button")); } } }, + didInsertElement() { + let self = this; + let folderId = this.get('folder.id'); + let url = this.get('appMeta.endpoint'); + let importUrl = `${url}/import/folder/${folderId}`; + + Dropzone.options.uploadDocuments = false; + + let dzone = new Dropzone("#import-document-button", { + headers: { + 'Authorization': 'Bearer ' + self.get('session.session.content.authenticated.token') + }, + url: importUrl, + method: "post", + paramName: 'attachment', + acceptedFiles: ".doc,.docx,.txt,.md,.markdown", + clickable: true, + maxFilesize: 10, + parallelUploads: 3, + uploadMultiple: false, + addRemoveLinks: false, + autoProcessQueue: true, + + init: function () { + this.on("success", function (document) { + self.send('onDocumentImported', document.name, document); + }); + + this.on("error", function (x) { + console.log("Conversion failed for ", x.name, " obj ", x); // TODO proper error handling + }); + + this.on("queuecomplete", function () {}); + + this.on("addedfile", function (file) { + self.send('onDocumentImporting', file.name); + self.audit.record('converted-document'); + }); + } + }); + + dzone.on("complete", function (file) { + dzone.removeFile(file); + }); + }, + willDestroyElement() { this.destroyTooltips(); }, - navigateToDocument(document) { - this.attrs.showDocument(this.get('folder'), document); - }, - actions: { - onEditTemplate(template) { - this.navigateToDocument(template); - }, - - onDocumentTemplate(id /*, title, type*/ ) { - let self = this; - - this.send("showNotification", "Creating"); - - this.get('templateService').importSavedTemplate(this.folder.get('id'), id).then(function(document) { - self.navigateToDocument(document); - }); - }, - onDocumentImporting(filename) { this.send("showNotification", `Importing ${filename}`); diff --git a/app/app/components/folder/folders-list.js b/app/app/components/folder/folders-list.js index 349387d3..5bfe7030 100644 --- a/app/app/components/folder/folders-list.js +++ b/app/app/components/folder/folders-list.js @@ -12,18 +12,43 @@ import Ember from 'ember'; import constants from '../../utils/constants'; import TooltipMixin from '../../mixins/tooltip'; +import NotifierMixin from '../../mixins/notifier'; -export default Ember.Component.extend(TooltipMixin, { +export default Ember.Component.extend(TooltipMixin, NotifierMixin, { folderService: Ember.inject.service('folder'), + templateService: Ember.inject.service('template'), publicFolders: [], protectedFolders: [], privateFolders: [], + savedTemplates: [], hasPublicFolders: false, hasProtectedFolders: false, hasPrivateFolders: false, newFolder: "", showScrollTool: false, + init() { + this._super(...arguments); + + let _this = this; + this.get('templateService').getSavedTemplates().then(function(saved) { + let emptyTemplate = { + id: "0", + title: "Empty document", + selected: true + }; + + saved.unshiftObject(emptyTemplate); + _this.set('savedTemplates', saved); + }); + }, + + didRender() { + if (this.get('folderService').get('canEditCurrentFolder')) { + this.addTooltip(document.getElementById("start-document-button")); + } + }, + didInsertElement() { this._super(...arguments); @@ -88,7 +113,19 @@ export default Ember.Component.extend(TooltipMixin, { } }, + navigateToDocument(document) { + this.attrs.showDocument(this.get('folder'), document); + }, + actions: { + scrollTop() { + this.set('showScrollTool', false); + + $("html,body").animate({ + scrollTop: 0 + }, 500, "linear"); + }, + addFolder() { var folderName = this.get('newFolder'); @@ -103,12 +140,18 @@ export default Ember.Component.extend(TooltipMixin, { return true; }, - scrollTop() { - this.set('showScrollTool', false); + onEditTemplate(template) { + this.navigateToDocument(template); + }, - $("html,body").animate({ - scrollTop: 0 - }, 500, "linear"); - } + onDocumentTemplate(id /*, title, type*/ ) { + let self = this; + + this.send("showNotification", "Creating"); + + this.get('templateService').importSavedTemplate(this.folder.get('id'), id).then(function(document) { + self.navigateToDocument(document); + }); + } } }); diff --git a/app/app/components/folder/start-document.js b/app/app/components/folder/start-document.js index 30638575..fe709bad 100644 --- a/app/app/components/folder/start-document.js +++ b/app/app/components/folder/start-document.js @@ -19,20 +19,11 @@ export default Ember.Component.extend(NotifierMixin, { id: "0" }, canEditTemplate: "", - drop: null, - appMeta: Ember.inject.service(), didReceiveAttrs() { this.send('setTemplate', this.get('savedTemplates')[0]); }, - willDestroyElement() { - if (is.not.null(this.get('drop'))) { - this.get('drop').destroy(); - this.set('drop', null); - } - }, - actions: { setTemplate(chosen) { if (is.undefined(chosen)) { @@ -51,7 +42,6 @@ export default Ember.Component.extend(NotifierMixin, { editTemplate() { let template = this.get('selectedTemplate'); - this.audit.record('edited-saved-template'); this.attrs.onEditTemplate(template); @@ -60,62 +50,10 @@ export default Ember.Component.extend(NotifierMixin, { startDocument() { let template = this.get('selectedTemplate'); - this.audit.record('used-saved-template'); this.attrs.onDocumentTemplate(template.id, template.title, "private"); + return true; - }, - - onOpenCallback() { - if (is.not.null(this.get('drop'))) { - return; - } - - let self = this; - let folderId = this.get('folder.id'); - let url = this.get('appMeta.endpoint'); - let importUrl = `${url}/import/folder/${folderId}`; - - Dropzone.options.uploadDocuments = false; - - let dzone = new Dropzone("#upload-documents", { - headers: { - 'Authorization': 'Bearer ' + self.get('session.session.content.authenticated.token') - }, - url: importUrl, - method: "post", - paramName: 'attachment', - acceptedFiles: ".doc,.docx,.txt,.md,.markdown", - clickable: true, - maxFilesize: 10, - parallelUploads: 3, - uploadMultiple: false, - addRemoveLinks: false, - autoProcessQueue: true, - - init: function () { - this.on("success", function (document) { - self.attrs.onDocumentImported(document.name, document); - }); - - this.on("error", function (x) { - console.log("Conversion failed for ", x.name, " obj ", x); // TODO proper error handling - }); - - this.on("queuecomplete", function () {}); - - this.on("addedfile", function (file) { - self.attrs.onDocumentImporting(file.name); - self.audit.record('converted-document'); - }); - } - }); - - dzone.on("complete", function (file) { - dzone.removeFile(file); - }); - - this.set('drop', dzone); } } -}); \ No newline at end of file +}); diff --git a/app/app/pods/folders/folder/template.hbs b/app/app/pods/folders/folder/template.hbs index bdb645f6..e99781d3 100644 --- a/app/app/pods/folders/folder/template.hbs +++ b/app/app/pods/folders/folder/template.hbs @@ -3,7 +3,9 @@ {{layout/zone-navigation}} {{#layout/zone-sidebar}} - {{folder/folders-list folders=model.folders folder=model.folder onFolderAdd=(action 'onFolderAdd')}} + {{folder/folders-list folders=model.folders folder=model.folder + onFolderAdd=(action 'onFolderAdd') + showDocument=(action 'showDocument')}} {{/layout/zone-sidebar}} {{#layout/zone-content}} @@ -13,8 +15,7 @@ hasSelectedDocuments=hasSelectedDocuments refresh=(action 'refresh') onDeleteDocument=(action 'onDeleteDocument') - onMoveDocument=(action 'onMoveDocument') - showDocument=(action 'showDocument')}} + onMoveDocument=(action 'onMoveDocument')}} {{folder/documents-list documents=model.documents folder=model.folder isFolderOwner=isFolderOwner onDocumentsChecked=(action 'onDocumentsChecked') }} {{/layout/zone-content}} diff --git a/app/app/styles/view/page-documents.scss b/app/app/styles/view/page-documents.scss index 06dec474..e725095d 100644 --- a/app/app/styles/view/page-documents.scss +++ b/app/app/styles/view/page-documents.scss @@ -173,11 +173,6 @@ } } -.upload-container { - text-align: center; - margin: 2rem 0; -} - .no-documents { margin-top: 50px; text-align: center; diff --git a/app/app/templates/components/document/document-sidebar.hbs b/app/app/templates/components/document/document-sidebar.hbs index c35fc8e6..b63ac87b 100644 --- a/app/app/templates/components/document/document-sidebar.hbs +++ b/app/app/templates/components/document/document-sidebar.hbs @@ -31,7 +31,7 @@ {{/if}} {{#if isEditor}} -
+
add
{{#if showingSections}} diff --git a/app/app/templates/components/folder/folder-toolbar.hbs b/app/app/templates/components/folder/folder-toolbar.hbs index b3ee9551..fdb5b20f 100644 --- a/app/app/templates/components/folder/folder-toolbar.hbs +++ b/app/app/templates/components/folder/folder-toolbar.hbs @@ -46,19 +46,6 @@
file_upload
-
-
- add -
- {{/if}} - {{#if folderService.canEditCurrentFolder}} - {{folder/start-document - savedTemplates=savedTemplates - folder=folder - onEditTemplate=(action 'onEditTemplate') - onDocumentTemplate=(action 'onDocumentTemplate') - onDocumentImporting=(action 'onDocumentImporting') - onDocumentImported=(action 'onDocumentImported')}} {{/if}} {{/if}}
diff --git a/app/app/templates/components/folder/folders-list.hbs b/app/app/templates/components/folder/folders-list.hbs index d4b016bc..e3cfee9e 100644 --- a/app/app/templates/components/folder/folders-list.hbs +++ b/app/app/templates/components/folder/folders-list.hbs @@ -15,9 +15,16 @@ {{/if}}
-
- add -
+ {{#if folderService.canEditCurrentFolder}} +
+ add +
+ {{folder/start-document + savedTemplates=savedTemplates + folder=folder + onEditTemplate=(action 'onEditTemplate') + onDocumentTemplate=(action 'onDocumentTemplate')}} + {{/if}} {{#if showScrollTool}}
diff --git a/app/app/templates/components/folder/start-document.hbs b/app/app/templates/components/folder/start-document.hbs index eb7e0f23..5e141b20 100644 --- a/app/app/templates/components/folder/start-document.hbs +++ b/app/app/templates/components/folder/start-document.hbs @@ -1,10 +1,4 @@ -{{#dropdown-dialog target="start-document-button" position="bottom right" button="Start" color="flat-green" onAction=(action 'startDocument') button2=canEditTemplate color2="flat-blue" onAction2=(action 'editTemplate') onOpenCallback=(action 'onOpenCallback')}} -
-
Import Word / Markdown
-
- -

Or use a template:

- +{{#dropdown-dialog target="start-document-button" position="bottom left" button="Start" color="flat-green" onAction=(action 'startDocument') button2=canEditTemplate color2="flat-blue" onAction2=(action 'editTemplate')}}