From f2e6c36060a2fdf2689c38cbda55c8ae99692cf0 Mon Sep 17 00:00:00 2001 From: Pranav Kant Date: Thu, 13 Oct 2016 12:52:54 +0530 Subject: [PATCH 1/2] Lets remove this
--- templates/admin.php | 1 - 1 file changed, 1 deletion(-) diff --git a/templates/admin.php b/templates/admin.php index 7a82d418..8738a8a7 100644 --- a/templates/admin.php +++ b/templates/admin.php @@ -11,6 +11,5 @@ script('richdocuments', 'admin');
-
From 145854400e3e82c6a04d68e58e9661de7e3cace2 Mon Sep 17 00:00:00 2001 From: Pranav Kant Date: Thu, 13 Oct 2016 12:28:54 +0530 Subject: [PATCH 2/2] New 'Use OOXML by default' option in admin settings --- appinfo/app.php | 8 ++ appinfo/routes.php | 1 + assets/docxtemplate.docx | Bin 0 -> 12559 bytes assets/odttemplate.odt | Bin 8734 -> 8891 bytes assets/pptxtemplate.pptx | Bin 0 -> 31659 bytes assets/xlsxtemplate.xlsx | Bin 0 -> 8347 bytes controller/documentcontroller.php | 12 ++- controller/settingscontroller.php | 19 +++- js/admin.js | 12 +++ js/documents.js | 28 +++++- js/viewer/viewer.js | 148 ++++++++++++++++++------------ templates/admin.php | 3 + templates/documents.php | 6 +- 13 files changed, 166 insertions(+), 71 deletions(-) create mode 100644 assets/docxtemplate.docx create mode 100644 assets/pptxtemplate.pptx create mode 100644 assets/xlsxtemplate.xlsx diff --git a/appinfo/app.php b/appinfo/app.php index b057f763..d7845a3a 100644 --- a/appinfo/app.php +++ b/appinfo/app.php @@ -51,5 +51,13 @@ $eventDispatcher->addListener( } ); +if (class_exists('\OC\Files\Type\TemplateManager')) { + $manager = \OC_Helper::getFileTemplateManager(); + + $manager->registerTemplate('application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'apps/richdocuments/assets/docxtemplate.docx'); + $manager->registerTemplate('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'apps/richdocuments/assets/xlsxtemplate.xlsx'); + $manager->registerTemplate('application/vnd.openxmlformats-officedocument.presentationml.presentation', 'apps/richdocuments/assets/pptxtemplate.pptx'); +} + //Listen to delete file signal \OCP\Util::connectHook('OC_Filesystem', 'delete', "OCA\Richdocuments\Storage", "onDelete"); diff --git a/appinfo/routes.php b/appinfo/routes.php index 3b5d539c..37d996ab 100644 --- a/appinfo/routes.php +++ b/appinfo/routes.php @@ -41,5 +41,6 @@ $application->registerRoutes($this, [ //settings ['name' => 'settings#setSettings', 'url' => 'ajax/admin.php', 'verb' => 'POST'], ['name' => 'settings#getSupportedMimes', 'url' => 'ajax/mimes.php', 'verb' => 'GET'], + ['name' => 'settings#getSettings', 'url' => 'ajax/settings.php', 'verb' => 'GET'], ] ]); diff --git a/assets/docxtemplate.docx b/assets/docxtemplate.docx new file mode 100644 index 0000000000000000000000000000000000000000..900c52768b155e4bbd71ca5665fe4274944243ab GIT binary patch literal 12559 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 literal 8734 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 E1r|IW;Q#;t literal 0 HcmV?d00001 diff --git a/assets/xlsxtemplate.xlsx b/assets/xlsxtemplate.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..7dbe3992941f70796376c801abdf53d556053abf GIT binary patch literal 8347 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 literal 0 HcmV?d00001 diff --git a/controller/documentcontroller.php b/controller/documentcontroller.php index f4303475..20045d28 100644 --- a/controller/documentcontroller.php +++ b/controller/documentcontroller.php @@ -270,7 +270,8 @@ class DocumentController extends Controller { 'uploadMaxHumanFilesize' => \OCP\Util::humanFileSize($maxUploadFilesize), 'allowShareWithLink' => $this->settings->getAppValue('core', 'shareapi_allow_links', 'yes'), 'wopi_url' => $webSocket, - 'edit_groups' => $this->appConfig->getAppValue('edit_groups') + 'edit_groups' => $this->appConfig->getAppValue('edit_groups'), + 'doc_format' => $this->appConfig->getAppValue('doc_format') ]); $policy = new ContentSecurityPolicy(); @@ -308,6 +309,15 @@ class DocumentController extends Controller { case 'application/vnd.oasis.opendocument.presentation': $basename = $this->l10n->t('New Presentation.odp'); break; + case 'application/vnd.openxmlformats-officedocument.wordprocessingml.document': + $basename = $this->l10n->t('New Document.docx'); + break; + case 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet': + $basename = $this->l10n->t('New Spreadsheet.xlsx'); + break; + case 'application/vnd.openxmlformats-officedocument.presentationml.presentation': + $basename = $this->l10n->t('New Presentation.pptx'); + break; default: // to be safe $mimetype = 'application/vnd.oasis.opendocument.text'; diff --git a/controller/settingscontroller.php b/controller/settingscontroller.php index 8bf3289b..945b021b 100644 --- a/controller/settingscontroller.php +++ b/controller/settingscontroller.php @@ -43,6 +43,16 @@ class SettingsController extends Controller{ ); } + /** + * @NoAdminRequired + */ + public function getSettings() { + return array( + 'doc_format' => $this->appConfig->getAppValue('doc_format'), + 'wopi_url' => $this->appConfig->getAppValue('wopi_url') + ); + } + /** * @NoCSRFRequired */ @@ -63,13 +73,14 @@ class SettingsController extends Controller{ 'admin', [ 'wopi_url' => $this->appConfig->getAppValue('wopi_url'), - 'edit_groups' => $this->appConfig->getAppValue('edit_groups') + 'edit_groups' => $this->appConfig->getAppValue('edit_groups'), + 'doc_format' => $this->appConfig->getAppValue('doc_format') ], 'blank' ); } - public function setSettings($wopi_url, $edit_groups){ + public function setSettings($wopi_url, $edit_groups, $doc_format){ if (!is_null($wopi_url)){ $this->appConfig->setAppValue('wopi_url', $wopi_url); } @@ -78,6 +89,10 @@ class SettingsController extends Controller{ $this->appConfig->setAppValue('edit_groups', $edit_groups); } + if (!is_null($doc_format)){ + $this->appConfig->setAppValue('doc_format', $doc_format); + } + $richMemCache = \OC::$server->getMemCacheFactory()->create('richdocuments'); $richMemCache->clear('discovery.xml'); diff --git a/js/admin.js b/js/admin.js index 7a27eda0..223b1173 100644 --- a/js/admin.js +++ b/js/admin.js @@ -26,6 +26,13 @@ var documentsSettings = { ); }, + saveDocFormat: function(format) { + $.post( + OC.filePath('richdocuments', 'ajax', 'admin.php'), + { 'doc_format': format } + ); + }, + afterSave : function(response){ $('#wopi_apply').attr('disabled', false); OC.msg.finishedAction('#documents-admin-msg', response); @@ -45,6 +52,11 @@ var documentsSettings = { $('#wopi_apply').on('click', documentsSettings.save); documentsSettings.initEditGroups(); + $(document).on('change', '.doc-format-ooxml', function() { + var ooxml = this.checked; + documentsSettings.saveDocFormat(ooxml ? 'ooxml' : 'odf'); + }); + $(document).on('change', '#edit_group_select', function() { var element = $(this).parent().find('input.edit-groups-enable'); var groups = $(this).val(); diff --git a/js/documents.js b/js/documents.js index 7179389c..809c2b0b 100644 --- a/js/documents.js +++ b/js/documents.js @@ -712,6 +712,21 @@ var documentsMain = { documentsMain.create('application/vnd.oasis.opendocument.presentation'); }, + onCreateDOCX: function(event){ + event.preventDefault(); + documentsMain.create('application/vnd.openxmlformats-officedocument.wordprocessingml.document'); + }, + + onCreateXLSX: function(event){ + event.preventDefault(); + documentsMain.create('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); + }, + + onCreatePPTX: function(event){ + event.preventDefault(); + documentsMain.create('application/vnd.openxmlformats-officedocument.presentationml.presentation'); + }, + create: function(mimetype){ var docElem = $('.documentslist .template').clone(); docElem.removeClass('template'); @@ -970,7 +985,7 @@ FileList.generatePreviewUrl = function(urlSpec) { urlSpec.y = Math.ceil(urlSpec.y); urlSpec.forceIcon = 0; return OC.generateUrl('/core/preview.png?') + $.param(urlSpec); -} +}; FileList.isFileNameValid = function (name) { var trimmedName = name.trim(); @@ -980,14 +995,14 @@ FileList.isFileNameValid = function (name) { throw t('files', 'File name cannot be empty.'); } return true; -} +}; FileList.setViewerMode = function(){ }; FileList.findFile = function(fileName){ fullPath = escapeHTML(FileList.getCurrentDirectory + '/' + fileName); - return !!$('.documentslist .document:not(.template,.progress) a[original-title="' + fullPath + '"]').length -} + return !!$('.documentslist .document:not(.template,.progress) a[original-title="' + fullPath + '"]').length; +}; $(document).ready(function() { @@ -1030,10 +1045,13 @@ $(document).ready(function() { $('.add-document').on('click', '.add-odt', documentsMain.onCreateODT); $('.add-document').on('click', '.add-ods', documentsMain.onCreateODS); $('.add-document').on('click', '.add-odp', documentsMain.onCreateODP); + $('.add-document').on('click', '.add-docx', documentsMain.onCreateDOCX); + $('.add-document').on('click', '.add-xlsx', documentsMain.onCreateXLSX); + $('.add-document').on('click', '.add-pptx', documentsMain.onCreatePPTX); OC.Upload._isReceivedSharedFile = function () { return false; - } + }; var file_upload_start = $('#file_upload_start'); if (typeof supportAjaxUploadWithProgress !== 'undefined' && supportAjaxUploadWithProgress()) { diff --git a/js/viewer/viewer.js b/js/viewer/viewer.js index 27318ca7..9ec81bd6 100644 --- a/js/viewer/viewer.js +++ b/js/viewer/viewer.js @@ -96,6 +96,88 @@ var odfViewer = { onClose: function() { FileList.setViewerMode(false); $('#loleafletframe').remove(); + }, + + registerFilesMenu: function(response) { + var ooxml = response.doc_format === 'ooxml'; + + var docExt, spreadsheetExt, presentationExt; + var docMime, spreadsheetMime, presentationMime; + if (ooxml) { + docExt = 'docx'; + spreadsheetExt = 'xlsx'; + presentationExt = 'pptx'; + docMime = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'; + spreadsheetMime = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'; + presentationMime = 'application/vnd.openxmlformats-officedocument.presentationml.presentation'; + } else { + docExt = 'odt'; + spreadsheetExt = 'ods'; + presentationExt = 'odp'; + docMime = 'application/vnd.oasis.opendocument.text'; + spreadsheetMime = 'application/vnd.oasis.opendocument.spreadsheet'; + presentationMime = 'application/vnd.oasis.opendocument.presentation'; + } + + (function(OCA){ + OCA.FilesLOMenu = { + attach: function(newFileMenu) { + var self = this; + + newFileMenu.addMenuEntry({ + id: 'add-' + docExt, + displayName: t('richdocuments', 'Document'), + templateName: 'New Document.' + docExt, + iconClass: 'icon-filetype-document', + fileType: 'x-office-document', + actionHandler: function(filename) { + self._createDocument(docMime, filename); + } + }); + + newFileMenu.addMenuEntry({ + id: 'add-' + spreadsheetExt, + displayName: t('richdocuments', 'Spreadsheet'), + templateName: 'New Spreadsheet.' + spreadsheetExt, + iconClass: 'icon-filetype-spreadsheet', + fileType: 'x-office-spreadsheet', + actionHandler: function(filename) { + self._createDocument(spreadsheetMime, filename); + } + }); + + newFileMenu.addMenuEntry({ + id: 'add-' + presentationExt, + displayName: t('richdocuments', 'Presentation'), + templateName: 'New Presentation.' + presentationExt, + iconClass: 'icon-filetype-presentation', + fileType: 'x-office-presentation', + actionHandler: function(filename) { + self._createDocument(presentationMime, filename); + } + }); + }, + + _createDocument: function(mimetype, filename) { + OCA.Files.Files.isFileNameValid(filename); + filename = FileList.getUniqueName(filename); + + $.post( + OC.generateUrl('apps/richdocuments/ajax/documents/create'), + { mimetype : mimetype, filename: filename, dir: $('#dir').val() }, + function(response){ + if (response && response.status === 'success'){ + FileList.add(response.data, {animate: true, scrollTo: true}); + } else { + OC.dialogs.alert(response.data.message, t('core', 'Could not create file')); + } + } + ); + } + }; + })(OCA); + + OC.Plugins.register('OCA.Files.NewFileMenu', OCA.FilesLOMenu); } }; @@ -109,67 +191,13 @@ $(document).ready(function() { {}, odfViewer.register ); + + $.get( + OC.filePath('richdocuments', 'ajax', 'settings.php'), + {}, + odfViewer.registerFilesMenu + ); } $('#odf_close').live('click', odfViewer.onClose); }); - -(function(OCA){ - OCA.FilesLOMenu = { - attach: function(newFileMenu) { - var self = this; - - newFileMenu.addMenuEntry({ - id: 'add-odt', - displayName: t('richdocuments', 'Document'), - templateName: 'New Document.odt', - iconClass: 'icon-filetype-document', - fileType: 'x-office-document', - actionHandler: function(filename) { - self._createDocument('application/vnd.oasis.opendocument.text', filename); - } - }); - - newFileMenu.addMenuEntry({ - id: 'add-ods', - displayName: t('richdocuments', 'Spreadsheet'), - templateName: 'New Spreadsheet.ods', - iconClass: 'icon-filetype-spreadsheet', - fileType: 'x-office-spreadsheet', - actionHandler: function(filename) { - self._createDocument('application/vnd.oasis.opendocument.spreadsheet', filename); - } - }); - - newFileMenu.addMenuEntry({ - id: 'add-odp', - displayName: t('richdocuments', 'Presentation'), - templateName: 'New Presentation.odp', - iconClass: 'icon-filetype-presentation', - fileType: 'x-office-presentation', - actionHandler: function(filename) { - self._createDocument('application/vnd.oasis.opendocument.presentation', filename); - } - }); - }, - - _createDocument: function(mimetype, filename) { - OCA.Files.Files.isFileNameValid(filename); - filename = FileList.getUniqueName(filename); - - $.post( - OC.generateUrl('apps/richdocuments/ajax/documents/create'), - { mimetype : mimetype, filename: filename, dir: $('#dir').val() }, - function(response){ - if (response && response.status === 'success'){ - FileList.add(response.data, {animate: true, scrollTo: true}); - } else { - OC.dialogs.alert(response.data.message, t('core', 'Could not create file')); - } - } - ); - } - }; -})(OCA); - -OC.Plugins.register('OCA.Files.NewFileMenu', OCA.FilesLOMenu); diff --git a/templates/admin.php b/templates/admin.php index 8738a8a7..412c47d6 100644 --- a/templates/admin.php +++ b/templates/admin.php @@ -12,4 +12,7 @@ script('richdocuments', 'admin'); +
+ data-appid="richdocuments" /> + diff --git a/templates/documents.php b/templates/documents.php index 75594590..898e2219 100644 --- a/templates/documents.php +++ b/templates/documents.php @@ -9,13 +9,13 @@ script('files', 'jquery.fileupload');