diff --git a/controller/documentcontroller.php b/controller/documentcontroller.php index e8e0c404..80ee5219 100644 --- a/controller/documentcontroller.php +++ b/controller/documentcontroller.php @@ -58,12 +58,12 @@ class DocumentController extends Controller{ 'uploadMaxFilesize' => $maxUploadFilesize, 'uploadMaxHumanFilesize' => \OCP\Util::humanFileSize($maxUploadFilesize), 'allowShareWithLink' => $this->settings->getAppValue('core', 'shareapi_allow_links', 'yes'), + 'wopi_url' => $this->settings->getAppValue('richdocuments', 'wopi_url'), ]); $policy = new ContentSecurityPolicy(); - //$policy->addAllowedChildSrcDomain('\'self\' http://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js http://cdnjs.cloudflare.com/ajax/libs/jquery-mousewheel/3.1.12/jquery.mousewheel.min.js \'unsafe-eval\''); - $policy->addAllowedScriptDomain('\'self\' http://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js http://cdnjs.cloudflare.com/ajax/libs/jquery-mousewheel/3.1.12/jquery.mousewheel.min.js \'unsafe-eval\''); - $policy->addAllowedFrameDomain('\'self\' http://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js http://cdnjs.cloudflare.com/ajax/libs/jquery-mousewheel/3.1.12/jquery.mousewheel.min.js \'unsafe-eval\''); ++ $policy->addAllowedScriptDomain('\'self\' http://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js http://cdnjs.cloudflare.com/ajax/libs/jquery-mousewheel/3.1.12/jquery.mousewheel.min.js \'unsafe-eval\' ' . $this->settings->getAppValue('richdocuments', 'wopi_url')); ++ $policy->addAllowedFrameDomain('\'self\' http://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js http://cdnjs.cloudflare.com/ajax/libs/jquery-mousewheel/3.1.12/jquery.mousewheel.min.js \'unsafe-eval\' ' . $this->settings->getAppValue('richdocuments', 'wopi_url')); $policy->addAllowedConnectDomain('ws://' . $_SERVER['SERVER_NAME'] . ':9980'); $policy->addAllowedImageDomain('*'); $policy->allowInlineScript(true); diff --git a/controller/settingscontroller.php b/controller/settingscontroller.php index 3e008a7b..7fbed840 100644 --- a/controller/settingscontroller.php +++ b/controller/settingscontroller.php @@ -22,18 +22,18 @@ use OCA\Richdocuments\Converter; use OCA\Richdocuments\Filter; class SettingsController extends Controller{ - + private $userId; private $l10n; private $appConfig; - + public function __construct($appName, IRequest $request, IL10N $l10n, AppConfig $appConfig, $userId){ parent::__construct($appName, $request); $this->userId = $userId; $this->l10n = $l10n; $this->appConfig = $appConfig; } - + /** * @NoAdminRequired */ @@ -43,47 +43,48 @@ class SettingsController extends Controller{ 'mimes' => Filter::getAll() ); } - + /** * @NoAdminRequired * @NoCSRFRequired */ public function personalIndex(){ return new TemplateResponse( - $this->appName, + $this->appName, 'personal', [ 'save_path' => $this->appConfig->getUserValue($this->userId, 'save_path') ], 'blank' ); } - + /** * @NoCSRFRequired */ public function settingsIndex(){ return new TemplateResponse( - $this->appName, + $this->appName, 'settings', [ 'unstable' => $this->appConfig->getAppValue('unstable') ], 'blank' ); } - + /** * @NoCSRFRequired */ public function adminIndex(){ return new TemplateResponse( - $this->appName, + $this->appName, 'admin', [ 'converter' => $this->appConfig->getAppValue('converter'), + 'wopi_url' => $this->appConfig->getAppValue('wopi_url'), 'converter_url' => $this->appConfig->getAppValue('converter_url'), ], 'blank' ); } - + /** * @NoAdminRequired */ @@ -95,7 +96,7 @@ class SettingsController extends Controller{ if (\OC\Files\Filesystem::file_exists($savePath) === false ){ $status = \OC\Files\Filesystem::mkdir($savePath); } - + if ($status){ $this->appConfig->setUserValue($this->userId, 'save_path', $savePath); $response = array( @@ -112,33 +113,37 @@ class SettingsController extends Controller{ } return $response; } - + public function setUnstable($unstable){ if (!is_null($unstable)){ $this->appConfig->setAppValue('unstable', $unstable); } return array('status' => 'success'); } - - public function setConverter($converter, $url){ + + public function setConverter($converter, $wopi_url, $url){ if (!is_null($converter)){ $this->appConfig->setAppValue('converter', $converter); } - + + if (!is_null($wopi_url)){ + $this->appConfig->setAppValue('wopi_url', $wopi_url); + } + if (!is_null($url)){ $this->appConfig->setAppValue('converter_url', $url); } - + $response = array( 'status' => 'success', 'data' => array('message' => (string) $this->l10n->t('Saved')) ); - + $currentConverter = $this->appConfig->getAppValue('converter'); if ($currentConverter == 'external'){ if (!Converter::checkConnection()){ \OC::$server->getLogger()->warning( - 'Bad response from Format Filter Server', + 'Bad response from Format Filter Server', ['app' => $this->appName] ); $response = array( @@ -150,7 +155,7 @@ class SettingsController extends Controller{ } elseif ($currentConverter === 'local') { try { if (!Converter::testConversion()){ - $response = array( + $response = array( 'status' => 'error', 'data'=> array('message' => (string) $this->l10n->t('Conversion failed. Check log for details.') ) @@ -163,7 +168,7 @@ class SettingsController extends Controller{ ); } } - + return $response; } } diff --git a/js/admin.js b/js/admin.js index f2da6bdc..e0f78ded 100644 --- a/js/admin.js +++ b/js/admin.js @@ -1,32 +1,33 @@ /*global OC, $ */ $(document).ready(function(){ - + var documentsSettings = { save : function() { $('#docs_apply').attr('disabled', true); var data = { - converter : $('[name="docs_converter"]:checked').val() - }; - + converter : $('[name="docs_converter"]:checked').val(), + wopi_url : $('#wopi_url').val() + }; + if (data.converter === 'external'){ data.url = $('#docs_url').val(); } - + OC.msg.startAction('#documents-admin-msg', t('richdocuments', 'Saving...')); $.post( - OC.filePath('richdocuments', 'ajax', 'admin.php'), + OC.filePath('richdocuments', 'ajax', 'admin.php'), data, documentsSettings.afterSave ); }, - + afterSave : function(response){ $('#docs_apply').attr('disabled', false); OC.msg.finishedAction('#documents-admin-msg', response); } }; - + $('#docs_converter_external, #docs_converter_local, #docs_converter_off').on('click', function(){ $('#docs_extra').toggle($('[name="docs_converter"]:checked').val() === 'external'); }); diff --git a/js/documents.js b/js/documents.js index 95f0ca7c..5b8d16eb 100644 --- a/js/documents.js +++ b/js/documents.js @@ -179,22 +179,28 @@ var documentsMain = { $(document.body).prepend(documentsMain.UI.container); $('title').text(title + ' - ' + documentsMain.UI.mainTitle); - var viewer = window.location.protocol + '//' + window.location.host + '/loleaflet/dist/loleaflet.html?' + - 'file_path=' + documentsMain.url + - '&host=' + 'ws://' + window.location.hostname + ':9980' + - '&permission=' + 'view' + - '×tamp=' + ''; - var frame = ''; + // TODO. wopiurl = get from discovery xml + var wopiurl = $('#wopi-url').val() + '/loleaflet/dist/loleaflet.html'; + var wopisrc = documentsMain.url; + var action = wopiurl + '?' + wopisrc; + var token = oc_requesttoken; + var form = '
'; + var frame = ''; + + $('#mainContainer').append(form); $('#mainContainer').append(frame); documentsMain.overlay.documentOverlay('hide'); $('#loleafletframe').load(function(){ - var iframe = $('#loleafletframe').contents(); + // avoid Blocked a frame with origin different domains + + /*var iframe = $('#loleafletframe').contents(); iframe.find('#tb_toolbar-up_item_close').click(function() { documentsMain.onClose(); - }); - var frameWindow = $('#loleafletframe')[0].contentWindow; + });*/ + /*var frameWindow = $('#loleafletframe')[0].contentWindow; (function() { cloudSuiteOnClick = frameWindow.onClick; frameWindow.onClick = function() { @@ -203,8 +209,9 @@ var documentsMain = { cloudSuiteOnClick.apply(this, arguments); frameWindow.map.options.doc = documentsMain.url; }; - })(); + })();*/ }); + $('#loleafletform').submit(); }, hideEditor : function(){ @@ -499,25 +506,12 @@ var documentsMain = { }, loadDocument: function() { - var url = OC.generateUrl('apps/richdocuments/load/{file_id}', {file_id: documentsMain.fileId}); - $.post( - url, - {}, - function(result) { - if (result && result.status === 'error') { - if (result.message){ - documentsMain.IU.notify(result.message); - } - documentsMain.onEditorShutdown(t('richdocuments', 'Failed to load this document. Please check if it can be opened with an external editor. This might also mean it has been unshared or deleted recently.')); - return; - } - - documentsMain.url = 'file://' + result.filename; - documentsMain.baseName = result.basename; - - documentsMain.UI.showEditor(documentsMain.fileName); - } - ); + // Provides access to information about a file and allows + // for file-level operations. + // HTTP://server/<...>/wopi*/files/t('MS Word support (requires openOffice/libreOffice)')) ?>
-
+
/>
t('openOffice/libreOffice is installed on this server. Path to binary is provided via preview_libreoffice_path in config.php')) ?>
+
/>
t('openOffice/libreOffice is installed on external server running a format filter server')) ?>
+
/>
t('No MS Word support')) ?>