Add WOPI client settings

pull/1/head
Henry Castro 8 years ago
parent ce5528be4d
commit 08dbf236d9

@ -61,9 +61,8 @@ class DocumentController extends Controller{
]); ]);
$policy = new ContentSecurityPolicy(); $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\' ' . $this->settings->getAppValue('documents', 'wopi_url', $_SERVER['SERVER_NAME']));
$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\' ' . $this->settings->getAppValue('documents', 'wopi_url', $_SERVER['SERVER_NAME']));
$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->addAllowedConnectDomain('ws://' . $_SERVER['SERVER_NAME'] . ':9980'); $policy->addAllowedConnectDomain('ws://' . $_SERVER['SERVER_NAME'] . ':9980');
$policy->addAllowedImageDomain('*'); $policy->addAllowedImageDomain('*');
$policy->allowInlineScript(true); $policy->allowInlineScript(true);

@ -22,18 +22,18 @@ use OCA\Richdocuments\Converter;
use OCA\Richdocuments\Filter; use OCA\Richdocuments\Filter;
class SettingsController extends Controller{ class SettingsController extends Controller{
private $userId; private $userId;
private $l10n; private $l10n;
private $appConfig; private $appConfig;
public function __construct($appName, IRequest $request, IL10N $l10n, AppConfig $appConfig, $userId){ public function __construct($appName, IRequest $request, IL10N $l10n, AppConfig $appConfig, $userId){
parent::__construct($appName, $request); parent::__construct($appName, $request);
$this->userId = $userId; $this->userId = $userId;
$this->l10n = $l10n; $this->l10n = $l10n;
$this->appConfig = $appConfig; $this->appConfig = $appConfig;
} }
/** /**
* @NoAdminRequired * @NoAdminRequired
*/ */
@ -43,47 +43,48 @@ class SettingsController extends Controller{
'mimes' => Filter::getAll() 'mimes' => Filter::getAll()
); );
} }
/** /**
* @NoAdminRequired * @NoAdminRequired
* @NoCSRFRequired * @NoCSRFRequired
*/ */
public function personalIndex(){ public function personalIndex(){
return new TemplateResponse( return new TemplateResponse(
$this->appName, $this->appName,
'personal', 'personal',
[ 'save_path' => $this->appConfig->getUserValue($this->userId, 'save_path') ], [ 'save_path' => $this->appConfig->getUserValue($this->userId, 'save_path') ],
'blank' 'blank'
); );
} }
/** /**
* @NoCSRFRequired * @NoCSRFRequired
*/ */
public function settingsIndex(){ public function settingsIndex(){
return new TemplateResponse( return new TemplateResponse(
$this->appName, $this->appName,
'settings', 'settings',
[ 'unstable' => $this->appConfig->getAppValue('unstable') ], [ 'unstable' => $this->appConfig->getAppValue('unstable') ],
'blank' 'blank'
); );
} }
/** /**
* @NoCSRFRequired * @NoCSRFRequired
*/ */
public function adminIndex(){ public function adminIndex(){
return new TemplateResponse( return new TemplateResponse(
$this->appName, $this->appName,
'admin', 'admin',
[ [
'converter' => $this->appConfig->getAppValue('converter'), 'converter' => $this->appConfig->getAppValue('converter'),
'wopi_url' => $this->appConfig->getAppValue('wopi_url'),
'converter_url' => $this->appConfig->getAppValue('converter_url'), 'converter_url' => $this->appConfig->getAppValue('converter_url'),
], ],
'blank' 'blank'
); );
} }
/** /**
* @NoAdminRequired * @NoAdminRequired
*/ */
@ -95,7 +96,7 @@ class SettingsController extends Controller{
if (\OC\Files\Filesystem::file_exists($savePath) === false ){ if (\OC\Files\Filesystem::file_exists($savePath) === false ){
$status = \OC\Files\Filesystem::mkdir($savePath); $status = \OC\Files\Filesystem::mkdir($savePath);
} }
if ($status){ if ($status){
$this->appConfig->setUserValue($this->userId, 'save_path', $savePath); $this->appConfig->setUserValue($this->userId, 'save_path', $savePath);
$response = array( $response = array(
@ -112,33 +113,37 @@ class SettingsController extends Controller{
} }
return $response; return $response;
} }
public function setUnstable($unstable){ public function setUnstable($unstable){
if (!is_null($unstable)){ if (!is_null($unstable)){
$this->appConfig->setAppValue('unstable', $unstable); $this->appConfig->setAppValue('unstable', $unstable);
} }
return array('status' => 'success'); return array('status' => 'success');
} }
public function setConverter($converter, $url){ public function setConverter($converter, $wopi_url, $url){
if (!is_null($converter)){ if (!is_null($converter)){
$this->appConfig->setAppValue('converter', $converter); $this->appConfig->setAppValue('converter', $converter);
} }
if (!is_null($wopi_url)){
$this->appConfig->setAppValue('wopi_url', $wopi_url);
}
if (!is_null($url)){ if (!is_null($url)){
$this->appConfig->setAppValue('converter_url', $url); $this->appConfig->setAppValue('converter_url', $url);
} }
$response = array( $response = array(
'status' => 'success', 'status' => 'success',
'data' => array('message' => (string) $this->l10n->t('Saved')) 'data' => array('message' => (string) $this->l10n->t('Saved'))
); );
$currentConverter = $this->appConfig->getAppValue('converter'); $currentConverter = $this->appConfig->getAppValue('converter');
if ($currentConverter == 'external'){ if ($currentConverter == 'external'){
if (!Converter::checkConnection()){ if (!Converter::checkConnection()){
\OC::$server->getLogger()->warning( \OC::$server->getLogger()->warning(
'Bad response from Format Filter Server', 'Bad response from Format Filter Server',
['app' => $this->appName] ['app' => $this->appName]
); );
$response = array( $response = array(
@ -150,7 +155,7 @@ class SettingsController extends Controller{
} elseif ($currentConverter === 'local') { } elseif ($currentConverter === 'local') {
try { try {
if (!Converter::testConversion()){ if (!Converter::testConversion()){
$response = array( $response = array(
'status' => 'error', 'status' => 'error',
'data'=> 'data'=>
array('message' => (string) $this->l10n->t('Conversion failed. Check log for details.') ) array('message' => (string) $this->l10n->t('Conversion failed. Check log for details.') )
@ -163,7 +168,7 @@ class SettingsController extends Controller{
); );
} }
} }
return $response; return $response;
} }
} }

@ -1,32 +1,33 @@
/*global OC, $ */ /*global OC, $ */
$(document).ready(function(){ $(document).ready(function(){
var documentsSettings = { var documentsSettings = {
save : function() { save : function() {
$('#docs_apply').attr('disabled', true); $('#docs_apply').attr('disabled', true);
var data = { var data = {
converter : $('[name="docs_converter"]:checked').val() converter : $('[name="docs_converter"]:checked').val(),
}; wopi_url : $('#wopi_url').val()
};
if (data.converter === 'external'){ if (data.converter === 'external'){
data.url = $('#docs_url').val(); data.url = $('#docs_url').val();
} }
OC.msg.startAction('#documents-admin-msg', t('richdocuments', 'Saving...')); OC.msg.startAction('#documents-admin-msg', t('richdocuments', 'Saving...'));
$.post( $.post(
OC.filePath('richdocuments', 'ajax', 'admin.php'), OC.filePath('richdocuments', 'ajax', 'admin.php'),
data, data,
documentsSettings.afterSave documentsSettings.afterSave
); );
}, },
afterSave : function(response){ afterSave : function(response){
$('#docs_apply').attr('disabled', false); $('#docs_apply').attr('disabled', false);
OC.msg.finishedAction('#documents-admin-msg', response); OC.msg.finishedAction('#documents-admin-msg', response);
} }
}; };
$('#docs_converter_external, #docs_converter_local, #docs_converter_off').on('click', function(){ $('#docs_converter_external, #docs_converter_local, #docs_converter_off').on('click', function(){
$('#docs_extra').toggle($('[name="docs_converter"]:checked').val() === 'external'); $('#docs_extra').toggle($('[name="docs_converter"]:checked').val() === 'external');
}); });

@ -8,7 +8,7 @@
* This file is licensed under the Affero General Public License version 3 or * This file is licensed under the Affero General Public License version 3 or
* later. * later.
*/ */
namespace OCA\Richdocuments; namespace OCA\Richdocuments;
use \OCP\IConfig; use \OCP\IConfig;
@ -18,15 +18,16 @@ use \OCP\IConfig;
private $defaults = [ private $defaults = [
'converter' => 'off', 'converter' => 'off',
'converter_url' => 'http://localhost:16080', 'converter_url' => 'http://localhost:16080',
'unstable' => 'false' 'unstable' => 'false',
'wopi_url' => 'htpp://localhost'
]; ];
private $config; private $config;
public function __construct(IConfig $config) { public function __construct(IConfig $config) {
$this->config = $config; $this->config = $config;
} }
/** /**
* Can we convert anything to odt? * Can we convert anything to odt?
* @return bool * @return bool
@ -34,7 +35,7 @@ use \OCP\IConfig;
public function isConverterEnabled(){ public function isConverterEnabled(){
return $this->getAppValue('converter') !== 'off'; return $this->getAppValue('converter') !== 'off';
} }
/** /**
* Get a value by key * Get a value by key
* @param string $key * @param string $key
@ -57,7 +58,7 @@ use \OCP\IConfig;
public function setAppValue($key, $value) { public function setAppValue($key, $value) {
return $this->config->setAppValue($this->appName, $key, $value); return $this->config->setAppValue($this->appName, $key, $value);
} }
/** /**
* Get a value by key for a user * Get a value by key for a user
* @param string $userId * @param string $userId
@ -83,4 +84,4 @@ use \OCP\IConfig;
return $this->config->setAppValue($userId, $this->appName, $key, $value); return $this->config->setAppValue($userId, $this->appName, $key, $value);
} }
} }

@ -5,34 +5,39 @@ script('richdocuments', 'admin');
<h2><?php p($l->t('Documents')) ?></h2> <h2><?php p($l->t('Documents')) ?></h2>
<p><?php p($l->t('MS Word support (requires openOffice/libreOffice)')) ?></p> <p><?php p($l->t('MS Word support (requires openOffice/libreOffice)')) ?></p>
<p> <p>
<input type="radio" name="docs_converter" value="local" id="docs_converter_local" <input type="radio" name="docs_converter" value="local" id="docs_converter_local"
<?php print_unescaped($_['converter']=='local' ? 'checked="checked"' : '') ?> <?php print_unescaped($_['converter']=='local' ? 'checked="checked"' : '') ?>
/> />
<label for="docs_converter_local"><?php p($l->t('Local')) ?></label><br> <label for="docs_converter_local"><?php p($l->t('Local')) ?></label><br>
<em><?php p($l->t('openOffice/libreOffice is installed on this server. Path to binary is provided via preview_libreoffice_path in config.php')) ?></em> <em><?php p($l->t('openOffice/libreOffice is installed on this server. Path to binary is provided via preview_libreoffice_path in config.php')) ?></em>
</p> </p>
<p> <p>
<input type="radio" name="docs_converter" value="external" id="docs_converter_external" <input type="radio" name="docs_converter" value="external" id="docs_converter_external"
<?php print_unescaped($_['converter']=='external' ? 'checked="checked"' : '') ?> <?php print_unescaped($_['converter']=='external' ? 'checked="checked"' : '') ?>
/> />
<label for="docs_converter_external"><?php p($l->t('External')) ?></label><br> <label for="docs_converter_external"><?php p($l->t('External')) ?></label><br>
<em><?php p($l->t('openOffice/libreOffice is installed on external server running a format filter server')) ?></em> <em><?php p($l->t('openOffice/libreOffice is installed on external server running a format filter server')) ?></em>
</p> </p>
<p> <p>
<input type="radio" name="docs_converter" value="off" id="docs_converter_off" <input type="radio" name="docs_converter" value="off" id="docs_converter_off"
<?php print_unescaped($_['converter']=='off' ? 'checked="checked"' : '') ?> <?php print_unescaped($_['converter']=='off' ? 'checked="checked"' : '') ?>
/> />
<label for="docs_converter_off"><?php p($l->t('Disabled')) ?></label><br> <label for="docs_converter_off"><?php p($l->t('Disabled')) ?></label><br>
<em><?php p($l->t('No MS Word support')) ?></em> <em><?php p($l->t('No MS Word support')) ?></em>
</p> </p>
<div id="docs_extra" <?php print_unescaped($_['converter']!=='external' ? 'style="display:none"' : '') ?>> <div id="docs_extra" <?php print_unescaped($_['converter']!=='external' ? 'style="display:none"' : '') ?>>
<input type="text" name="docs_url" id="docs_url" <input type="text" name="docs_url" id="docs_url"
value="<?php p($_['converter_url'])?>" value="<?php p($_['converter_url'])?>"
original-title="<?php p($l->t('scheme://domain.tld[:port]')) ?>" original-title="<?php p($l->t('scheme://domain.tld[:port]')) ?>"
style="width:250px;" style="width:250px;"
/> />
<br /><em><?php p($l->t('Server URL')) ?></em> <br /><em><?php p($l->t('Server URL')) ?></em>
</div> </div>
<br />
<div id="wopi_client">
<input type="text" name="wopi_url" id="wopi_url" value="<?php p($_['wopi_url'])?>" style="width:250px;">
<br /><em><?php p($l->t('WOPI Client')) ?></em>
</div>
<br /><button type="button" id="docs_apply"><?php p($l->t('Apply and test')) ?></button> <br /><button type="button" id="docs_apply"><?php p($l->t('Apply and test')) ?></button>
<span id="documents-admin-msg" class="msg"></span> <span id="documents-admin-msg" class="msg"></span>
</div> </div>

Loading…
Cancel
Save