Backport of Do not error on maxUploadChange #1005 to stable10

Do not error on maxUploadChange

The new admin page broke the updating of the max upload size. This is
due to very old code there.

* Now update is done in the background using js
* Added proper route+controller to update

Fixes #994

put file handling into a section again
This commit is contained in:
Roeland Jago Douma 2016-08-22 10:10:28 +02:00 committed by Arthur Schiwon
parent f4bb803564
commit d2718b38ff
No known key found for this signature in database
GPG Key ID: 7424F1874854DF23
5 changed files with 103 additions and 10 deletions

View File

@ -65,6 +65,11 @@ $application->registerRoutes(
'url' => '/', 'url' => '/',
'verb' => 'GET', 'verb' => 'GET',
], ],
[
'name' => 'settings#setMaxUploadSize',
'url' => '/settings/maxUpload',
'verb' => 'POST',
]
) )
) )
); );

View File

@ -8,6 +8,46 @@
* *
*/ */
(function() {
if (!OCA.Files) {
/**
* Namespace for the files app
* @namespace OCA.Files
*/
OCA.Files = {};
}
/**
* @namespace OCA.Files.Admin
*/
OCA.Files.Admin = {
initialize: function() {
$('#submitMaxUpload').on('click', _.bind(this._onClickSubmitMaxUpload, this));
},
_onClickSubmitMaxUpload: function () {
OC.msg.startSaving('#maxUploadSizeSettingsMsg');
var request = $.ajax({
url: OC.generateUrl('/apps/files/settings/maxUpload'),
type: 'POST',
data: {
maxUploadSize: $('#maxUploadSize').val()
}
});
request.done(function (data) {
$('#maxUploadSize').val(data.maxUploadSize);
OC.msg.finishedSuccess('#maxUploadSizeSettingsMsg', 'Saved');
});
request.fail(function () {
OC.msg.finishedError('#maxUploadSizeSettingsMsg', 'Error');
});
}
}
})();
function switchPublicFolder() { function switchPublicFolder() {
var publicEnable = $('#publicEnable').is(':checked'); var publicEnable = $('#publicEnable').is(':checked');
// find all radiobuttons of that group // find all radiobuttons of that group
@ -19,6 +59,8 @@ function switchPublicFolder() {
} }
$(document).ready(function() { $(document).ready(function() {
OCA.Files.Admin.initialize();
// Execute the function after loading DOM tree // Execute the function after loading DOM tree
switchPublicFolder(); switchPublicFolder();
$('#publicEnable').click(function() { $('#publicEnable').click(function() {

View File

@ -0,0 +1,51 @@
<?php
/**
*
*
* @author Roeland Jago Douma <roeland@famdouma.nl>
*
* @license GNU AGPL version 3 or any later version
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
namespace OCA\Files\Controller;
use OCP\AppFramework\Controller;
use OCP\AppFramework\Http;
use OCP\AppFramework\Http\JSONResponse;
use OCP\IRequest;
use OCP\Util;
class SettingsController extends Controller {
public function __construct($appName, IRequest $request) {
parent::__construct($appName, $request);
}
/**
* @param string $maxUploadSize
* @return JSONResponse
*/
public function setMaxUploadSize($maxUploadSize) {
$setMaxSize = \OC_Files::setUploadLimit(Util::computerFileSize($maxUploadSize));
if ($setMaxSize === false) {
return new JSONResponse([], Http::STATUS_BAD_REQUEST);
} else {
return new JSONResponse([
'maxUploadSize' => Util::humanFileSize($setMaxSize)
]);
}
}
}

View File

@ -53,13 +53,6 @@ class Admin implements ISettings {
$upload_max_filesize = $this->iniWrapper->getBytes('upload_max_filesize'); $upload_max_filesize = $this->iniWrapper->getBytes('upload_max_filesize');
$post_max_size = $this->iniWrapper->getBytes('post_max_size'); $post_max_size = $this->iniWrapper->getBytes('post_max_size');
$maxUploadFilesize = Util::humanFileSize(min($upload_max_filesize, $post_max_size)); $maxUploadFilesize = Util::humanFileSize(min($upload_max_filesize, $post_max_size));
if($_POST && $this->request->passesCSRFCheck()) {
if(isset($_POST['maxUploadSize'])) {
if(($setMaxSize = \OC_Files::setUploadLimit(Util::computerFileSize($_POST['maxUploadSize']))) !== false) {
$maxUploadFilesize = Util::humanFileSize($setMaxSize);
}
}
}
$parameters = [ $parameters = [
'uploadChangable' => (($htaccessWorking and $htaccessWritable) or $userIniWritable ), 'uploadChangable' => (($htaccessWorking and $htaccessWritable) or $userIniWritable ),

View File

@ -1,18 +1,20 @@
<?php OCP\Util::addscript('files', 'admin'); ?> <?php OCP\Util::addscript('files', 'admin'); ?>
<form name="filesForm" class="section" action="#" method="post"> <div class="section">
<h2><?php p($l->t('File handling')); ?></h2> <h2><?php p($l->t('File handling')); ?></h2>
<label for="maxUploadSize"><?php p($l->t( 'Maximum upload size' )); ?> </label> <label for="maxUploadSize"><?php p($l->t( 'Maximum upload size' )); ?> </label>
<span id="maxUploadSizeSettingsMsg" class="msg"></span>
<br />
<input type="text" name='maxUploadSize' id="maxUploadSize" value='<?php p($_['uploadMaxFilesize']) ?>' <?php if(!$_['uploadChangable']) { p('disabled'); } ?> /> <input type="text" name='maxUploadSize' id="maxUploadSize" value='<?php p($_['uploadMaxFilesize']) ?>' <?php if(!$_['uploadChangable']) { p('disabled'); } ?> />
<?php if($_['displayMaxPossibleUploadSize']):?> <?php if($_['displayMaxPossibleUploadSize']):?>
(<?php p($l->t('max. possible: ')); p($_['maxPossibleUploadSize']) ?>) (<?php p($l->t('max. possible: ')); p($_['maxPossibleUploadSize']) ?>)
<?php endif;?> <?php endif;?>
<input type="hidden" value="<?php p($_['requesttoken']); ?>" name="requesttoken" /> <input type="hidden" value="<?php p($_['requesttoken']); ?>" name="requesttoken" />
<?php if($_['uploadChangable']): ?> <?php if($_['uploadChangable']): ?>
<input type="submit" name="submitFilesAdminSettings" id="submitFilesAdminSettings" <input type="submit" id="submitMaxUpload"
value="<?php p($l->t( 'Save' )); ?>"/> value="<?php p($l->t( 'Save' )); ?>"/>
<p><em><?php p($l->t('With PHP-FPM it might take 5 minutes for changes to be applied.')); ?></em></p> <p><em><?php p($l->t('With PHP-FPM it might take 5 minutes for changes to be applied.')); ?></em></p>
<?php else: ?> <?php else: ?>
<p><em><?php p($l->t('Missing permissions to edit from here.')); ?></em></p> <p><em><?php p($l->t('Missing permissions to edit from here.')); ?></em></p>
<?php endif; ?> <?php endif; ?>
</form> </div>