Merge pull request #1542 from nextcloud/backport-1540-switch-for-autoupdater-control-9
[stable9] Switch for autoupdater control
This commit is contained in:
commit
50bfd21dce
|
@ -102,11 +102,13 @@ class AdminController extends Controller {
|
|||
}
|
||||
$updateState = $this->updateChecker->getUpdateState();
|
||||
$params = [
|
||||
'isNewVersionAvailable' => ($updateState === []) ? false : true,
|
||||
'isNewVersionAvailable' => !empty($updateState['updateAvailable']),
|
||||
'lastChecked' => $lastUpdateCheck,
|
||||
'currentChannel' => $currentChannel,
|
||||
'channels' => $channels,
|
||||
'newVersionString' => ($updateState === []) ? '' : $updateState['updateVersion'],
|
||||
'newVersionString' => (empty($updateState['updateVersion'])) ? '' : $updateState['updateVersion'],
|
||||
'downloadLink' => (empty($updateState['downloadLink'])) ? '' : $updateState['downloadLink'],
|
||||
'updaterEnabled' => $updateState['updaterEnabled'],
|
||||
];
|
||||
|
||||
return new TemplateResponse($this->appName, 'admin', $params, '');
|
||||
|
|
|
@ -35,6 +35,11 @@ $(document).ready(function(){
|
|||
body.removeAttr('id');
|
||||
body.attr('id', 'body-settings');
|
||||
}
|
||||
},
|
||||
error: function() {
|
||||
OC.Notification.showTemporary(t('updatenotification', 'Could not start updater, please try the manual update'));
|
||||
$('#oca_updatenotification_button').addClass('hidden');
|
||||
$('#oca_updatenotification_section .button').removeClass('hidden');
|
||||
}
|
||||
});
|
||||
});
|
||||
|
|
|
@ -45,9 +45,13 @@ class UpdateChecker {
|
|||
if(isset($data['version']) && $data['version'] !== '' && $data['version'] !== []) {
|
||||
$result['updateAvailable'] = true;
|
||||
$result['updateVersion'] = $data['versionstring'];
|
||||
$result['updaterEnabled'] = $data['autoupdater'] === '1';
|
||||
if(substr($data['web'], 0, 8) === 'https://') {
|
||||
$result['updateLink'] = $data['web'];
|
||||
}
|
||||
if(substr($data['url'], 0, 8) === 'https://') {
|
||||
$result['downloadLink'] = $data['url'];
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
|
|
@ -16,13 +16,18 @@
|
|||
<form id="oca_updatenotification_section" class="section">
|
||||
<h2><?php p($l->t('Updater')); ?></h2>
|
||||
|
||||
<?php if($isNewVersionAvailable === true): ?>
|
||||
<?php if($isNewVersionAvailable === true) { ?>
|
||||
<strong><?php p($l->t('A new version is available: %s', [$newVersionString])); ?></strong>
|
||||
<input type="button" id="oca_updatenotification_button" value="<?php p($l->t('Open updater')) ?>">
|
||||
<?php else: ?>
|
||||
<?php if ($_['updaterEnabled']) { ?>
|
||||
<input type="button" id="oca_updatenotification_button" value="<?php p($l->t('Open updater')) ?>">
|
||||
<?php } ?>
|
||||
<?php if (!empty($_['downloadLink'])) { ?>
|
||||
<a href="<?php p($_['downloadLink']); ?>" class="button<?php if ($_['updaterEnabled']) { p(' hidden'); } ?>"><?php p($l->t('Download now')) ?></a>
|
||||
<?php } ?>
|
||||
<?php } else { ?>
|
||||
<strong><?php print_unescaped($l->t('Your version is up to date.')); ?></strong>
|
||||
<span class="icon-info svg" title="<?php p($l->t('Checked on %s', [$lastCheckedDate])) ?>"></span>
|
||||
<?php endif; ?>
|
||||
<?php } ?>
|
||||
|
||||
<p>
|
||||
<label for="release-channel"><?php p($l->t('Update channel:')) ?></label>
|
||||
|
|
|
@ -48,11 +48,14 @@ class UpdateCheckerTest extends TestCase {
|
|||
'version' => 123,
|
||||
'versionstring' => 'ownCloud 123',
|
||||
'web'=> 'javascript:alert(1)',
|
||||
'url'=> 'javascript:alert(2)',
|
||||
'autoupdater'=> '0',
|
||||
]);
|
||||
|
||||
$expected = [
|
||||
'updateAvailable' => true,
|
||||
'updateVersion' => 'ownCloud 123',
|
||||
'updaterEnabled' => false,
|
||||
];
|
||||
$this->assertSame($expected, $this->updateChecker->getUpdateState());
|
||||
}
|
||||
|
@ -65,12 +68,16 @@ class UpdateCheckerTest extends TestCase {
|
|||
'version' => 123,
|
||||
'versionstring' => 'ownCloud 123',
|
||||
'web'=> 'https://owncloud.org/myUrl',
|
||||
'url'=> 'https://downloads.nextcloud.org/server',
|
||||
'autoupdater'=> '1',
|
||||
]);
|
||||
|
||||
$expected = [
|
||||
'updateAvailable' => true,
|
||||
'updateVersion' => 'ownCloud 123',
|
||||
'updaterEnabled' => true,
|
||||
'updateLink' => 'https://owncloud.org/myUrl',
|
||||
'downloadLink' => 'https://downloads.nextcloud.org/server',
|
||||
];
|
||||
$this->assertSame($expected, $this->updateChecker->getUpdateState());
|
||||
}
|
||||
|
|
|
@ -108,7 +108,12 @@ class AdminControllerTest extends TestCase {
|
|||
$this->updateChecker
|
||||
->expects($this->once())
|
||||
->method('getUpdateState')
|
||||
->willReturn(['updateVersion' => '8.1.2']);
|
||||
->willReturn([
|
||||
'updateAvailable' => true,
|
||||
'updateVersion' => '8.1.2',
|
||||
'downloadLink' => 'https://downloads.nextcloud.org/server',
|
||||
'updaterEnabled' => true,
|
||||
]);
|
||||
|
||||
$params = [
|
||||
'isNewVersionAvailable' => true,
|
||||
|
@ -116,6 +121,8 @@ class AdminControllerTest extends TestCase {
|
|||
'currentChannel' => \OCP\Util::getChannel(),
|
||||
'channels' => $channels,
|
||||
'newVersionString' => '8.1.2',
|
||||
'downloadLink' => 'https://downloads.nextcloud.org/server',
|
||||
'updaterEnabled' => true,
|
||||
];
|
||||
|
||||
$expected = new TemplateResponse('updatenotification', 'admin', $params, '');
|
||||
|
@ -149,7 +156,7 @@ class AdminControllerTest extends TestCase {
|
|||
$this->updateChecker
|
||||
->expects($this->once())
|
||||
->method('getUpdateState')
|
||||
->willReturn([]);
|
||||
->willReturn(['updaterEnabled' => false]);
|
||||
|
||||
$params = [
|
||||
'isNewVersionAvailable' => false,
|
||||
|
@ -157,6 +164,8 @@ class AdminControllerTest extends TestCase {
|
|||
'currentChannel' => \OCP\Util::getChannel(),
|
||||
'channels' => $channels,
|
||||
'newVersionString' => '',
|
||||
'downloadLink' => '',
|
||||
'updaterEnabled' => 0,
|
||||
];
|
||||
|
||||
$expected = new TemplateResponse('updatenotification', 'admin', $params, '');
|
||||
|
|
|
@ -498,7 +498,7 @@ $CONFIG = array(
|
|||
/**
|
||||
* URL that Nextcloud should use to look for updates
|
||||
*/
|
||||
'updater.server.url' => 'https://updates.nextcloud.com/update-server/',
|
||||
'updater.server.url' => 'https://updates.nextcloud.com/updater_server/',
|
||||
|
||||
/**
|
||||
* Release channel to use for updates
|
||||
|
|
|
@ -144,7 +144,7 @@ class Updater extends BasicEmitter {
|
|||
return json_decode($this->config->getAppValue('core', 'lastupdateResult'), true);
|
||||
}
|
||||
|
||||
$updaterUrl = $this->config->getSystemValue('updater.server.url', 'https://updates.nextcloud.com/update-server/');
|
||||
$updaterUrl = $this->config->getSystemValue('updater.server.url', 'https://updates.nextcloud.com/updater_server/');
|
||||
|
||||
$this->config->setAppValue('core', 'lastupdatedat', time());
|
||||
|
||||
|
@ -174,6 +174,7 @@ class Updater extends BasicEmitter {
|
|||
$tmp['versionstring'] = (string)$data->versionstring;
|
||||
$tmp['url'] = (string)$data->url;
|
||||
$tmp['web'] = (string)$data->web;
|
||||
$tmp['autoupdater'] = (string)$data->autoupdater;
|
||||
} else {
|
||||
libxml_clear_errors();
|
||||
}
|
||||
|
|
|
@ -212,6 +212,7 @@ class UpdaterTest extends \Test\TestCase {
|
|||
'versionstring' => 'ownCloud 8.0.4',
|
||||
'url' => 'https://download.owncloud.org/community/owncloud-8.0.4.zip',
|
||||
'web' => 'http://doc.owncloud.org/server/8.0/admin_manual/maintenance/upgrade.html',
|
||||
'autoupdater' => '0',
|
||||
];
|
||||
|
||||
$this->config
|
||||
|
@ -222,8 +223,8 @@ class UpdaterTest extends \Test\TestCase {
|
|||
$this->config
|
||||
->expects($this->at(1))
|
||||
->method('getSystemValue')
|
||||
->with('updater.server.url', 'https://updates.nextcloud.com/update-server/')
|
||||
->willReturn('https://updates.nextcloud.com/update-server/');
|
||||
->with('updater.server.url', 'https://updates.nextcloud.com/updater_server/')
|
||||
->willReturnArgument(1);
|
||||
$this->config
|
||||
->expects($this->at(2))
|
||||
->method('setAppValue')
|
||||
|
@ -249,11 +250,12 @@ class UpdaterTest extends \Test\TestCase {
|
|||
<versionstring>ownCloud 8.0.4</versionstring>
|
||||
<url>https://download.owncloud.org/community/owncloud-8.0.4.zip</url>
|
||||
<web>http://doc.owncloud.org/server/8.0/admin_manual/maintenance/upgrade.html</web>
|
||||
<autoupdater>0</autoupdater>
|
||||
</owncloud>';
|
||||
$this->httpHelper
|
||||
->expects($this->once())
|
||||
->method('getUrlContent')
|
||||
->with($this->buildUpdateUrl('https://updates.nextcloud.com/update-server/'))
|
||||
->with($this->buildUpdateUrl('https://updates.nextcloud.com/updater_server/'))
|
||||
->will($this->returnValue($updateXml));
|
||||
|
||||
$this->assertSame($expectedResult, $this->updater->check());
|
||||
|
@ -268,8 +270,8 @@ class UpdaterTest extends \Test\TestCase {
|
|||
$this->config
|
||||
->expects($this->at(1))
|
||||
->method('getSystemValue')
|
||||
->with('updater.server.url', 'https://updates.nextcloud.com/update-server/')
|
||||
->willReturn('https://updates.nextcloud.com/update-server/');
|
||||
->with('updater.server.url', 'https://updates.nextcloud.com/updater_server/')
|
||||
->willReturnArgument(1);
|
||||
$this->config
|
||||
->expects($this->at(2))
|
||||
->method('setAppValue')
|
||||
|
@ -293,7 +295,7 @@ class UpdaterTest extends \Test\TestCase {
|
|||
$this->httpHelper
|
||||
->expects($this->once())
|
||||
->method('getUrlContent')
|
||||
->with($this->buildUpdateUrl('https://updates.nextcloud.com/update-server/'))
|
||||
->with($this->buildUpdateUrl('https://updates.nextcloud.com/updater_server/'))
|
||||
->will($this->returnValue($updateXml));
|
||||
|
||||
$this->assertSame([], $this->updater->check());
|
||||
|
@ -305,6 +307,7 @@ class UpdaterTest extends \Test\TestCase {
|
|||
'versionstring' => '',
|
||||
'url' => '',
|
||||
'web' => '',
|
||||
'autoupdater' => '',
|
||||
];
|
||||
|
||||
$this->config
|
||||
|
@ -315,8 +318,8 @@ class UpdaterTest extends \Test\TestCase {
|
|||
$this->config
|
||||
->expects($this->at(1))
|
||||
->method('getSystemValue')
|
||||
->with('updater.server.url', 'https://updates.nextcloud.com/update-server/')
|
||||
->willReturn('https://updates.nextcloud.com/update-server/');
|
||||
->with('updater.server.url', 'https://updates.nextcloud.com/updater_server/')
|
||||
->willReturnArgument(1);
|
||||
$this->config
|
||||
->expects($this->at(2))
|
||||
->method('setAppValue')
|
||||
|
@ -338,11 +341,12 @@ class UpdaterTest extends \Test\TestCase {
|
|||
<versionstring></versionstring>
|
||||
<url></url>
|
||||
<web></web>
|
||||
<autoupdater></autoupdater>
|
||||
</owncloud>';
|
||||
$this->httpHelper
|
||||
->expects($this->once())
|
||||
->method('getUrlContent')
|
||||
->with($this->buildUpdateUrl('https://updates.nextcloud.com/update-server/'))
|
||||
->with($this->buildUpdateUrl('https://updates.nextcloud.com/updater_server/'))
|
||||
->will($this->returnValue($updateXml));
|
||||
|
||||
$this->assertSame($expectedResult, $this->updater->check());
|
||||
|
@ -359,8 +363,8 @@ class UpdaterTest extends \Test\TestCase {
|
|||
$this->config
|
||||
->expects($this->at(1))
|
||||
->method('getSystemValue')
|
||||
->with('updater.server.url', 'https://updates.nextcloud.com/update-server/')
|
||||
->willReturn('https://updates.nextcloud.com/update-server/');
|
||||
->with('updater.server.url', 'https://updates.nextcloud.com/updater_server/')
|
||||
->willReturnArgument(1);
|
||||
$this->config
|
||||
->expects($this->at(2))
|
||||
->method('setAppValue')
|
||||
|
@ -384,7 +388,7 @@ class UpdaterTest extends \Test\TestCase {
|
|||
$this->httpHelper
|
||||
->expects($this->once())
|
||||
->method('getUrlContent')
|
||||
->with($this->buildUpdateUrl('https://updates.nextcloud.com/update-server/'))
|
||||
->with($this->buildUpdateUrl('https://updates.nextcloud.com/updater_server/'))
|
||||
->will($this->returnValue($updateXml));
|
||||
|
||||
$this->assertSame($expectedResult, $this->updater->check());
|
||||
|
|
Loading…
Reference in New Issue