Respect updater kill switch and fall back to download button
Signed-off-by: Joas Schilling <coding@schilljs.com>
This commit is contained in:
parent
0fac5146bd
commit
7d910437fd
|
@ -35,6 +35,11 @@ $(document).ready(function(){
|
||||||
body.removeAttr('id');
|
body.removeAttr('id');
|
||||||
body.attr('id', 'body-settings');
|
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');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -107,11 +107,13 @@ class AdminController extends Controller implements ISettings {
|
||||||
$notifyGroups = json_decode($this->config->getAppValue('updatenotification', 'notify_groups', '["admin"]'), true);
|
$notifyGroups = json_decode($this->config->getAppValue('updatenotification', 'notify_groups', '["admin"]'), true);
|
||||||
|
|
||||||
$params = [
|
$params = [
|
||||||
'isNewVersionAvailable' => ($updateState === []) ? false : true,
|
'isNewVersionAvailable' => !empty($updateState['updateAvailable']),
|
||||||
'lastChecked' => $lastUpdateCheck,
|
'lastChecked' => $lastUpdateCheck,
|
||||||
'currentChannel' => $currentChannel,
|
'currentChannel' => $currentChannel,
|
||||||
'channels' => $channels,
|
'channels' => $channels,
|
||||||
'newVersionString' => ($updateState === []) ? '' : $updateState['updateVersion'],
|
'newVersionString' => (empty($updateState['updateVersion'])) ? '' : $updateState['updateVersion'],
|
||||||
|
'downloadLink' => (empty($updateState['downloadLink'])) ? '' : $updateState['downloadLink'],
|
||||||
|
'updaterEnabled' => $updateState['updaterEnabled'],
|
||||||
|
|
||||||
'notify_groups' => implode('|', $notifyGroups),
|
'notify_groups' => implode('|', $notifyGroups),
|
||||||
];
|
];
|
||||||
|
|
|
@ -46,9 +46,13 @@ class UpdateChecker {
|
||||||
if(isset($data['version']) && $data['version'] !== '' && $data['version'] !== []) {
|
if(isset($data['version']) && $data['version'] !== '' && $data['version'] !== []) {
|
||||||
$result['updateAvailable'] = true;
|
$result['updateAvailable'] = true;
|
||||||
$result['updateVersion'] = $data['versionstring'];
|
$result['updateVersion'] = $data['versionstring'];
|
||||||
|
$result['updaterEnabled'] = $data['autoupdater'] === '1';
|
||||||
if(substr($data['web'], 0, 8) === 'https://') {
|
if(substr($data['web'], 0, 8) === 'https://') {
|
||||||
$result['updateLink'] = $data['web'];
|
$result['updateLink'] = $data['web'];
|
||||||
}
|
}
|
||||||
|
if(substr($data['url'], 0, 8) === 'https://') {
|
||||||
|
$result['downloadLink'] = $data['url'];
|
||||||
|
}
|
||||||
|
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,13 +14,18 @@
|
||||||
$currentChannel = $_['currentChannel'];
|
$currentChannel = $_['currentChannel'];
|
||||||
?>
|
?>
|
||||||
<form id="oca_updatenotification_section" class="followupsection">
|
<form id="oca_updatenotification_section" class="followupsection">
|
||||||
<?php if($isNewVersionAvailable === true): ?>
|
<?php if($isNewVersionAvailable === true) { ?>
|
||||||
<strong><?php p($l->t('A new version is available: %s', [$newVersionString])); ?></strong>
|
<strong><?php p($l->t('A new version is available: %s', [$newVersionString])); ?></strong>
|
||||||
|
<?php if ($_['updaterEnabled']) { ?>
|
||||||
<input type="button" id="oca_updatenotification_button" value="<?php p($l->t('Open updater')) ?>">
|
<input type="button" id="oca_updatenotification_button" value="<?php p($l->t('Open updater')) ?>">
|
||||||
<?php else: ?>
|
<?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>
|
<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>
|
<span class="icon-info svg" title="<?php p($l->t('Checked on %s', [$lastCheckedDate])) ?>"></span>
|
||||||
<?php endif; ?>
|
<?php } ?>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
<label for="release-channel"><?php p($l->t('Update channel:')) ?></label>
|
<label for="release-channel"><?php p($l->t('Update channel:')) ?></label>
|
||||||
|
|
|
@ -110,7 +110,12 @@ class AdminControllerTest extends TestCase {
|
||||||
$this->updateChecker
|
$this->updateChecker
|
||||||
->expects($this->once())
|
->expects($this->once())
|
||||||
->method('getUpdateState')
|
->method('getUpdateState')
|
||||||
->willReturn(['updateVersion' => '8.1.2']);
|
->willReturn([
|
||||||
|
'updateAvailable' => true,
|
||||||
|
'updateVersion' => '8.1.2',
|
||||||
|
'downloadLink' => 'https://downloads.nextcloud.org/server',
|
||||||
|
'updaterEnabled' => true,
|
||||||
|
]);
|
||||||
|
|
||||||
$params = [
|
$params = [
|
||||||
'isNewVersionAvailable' => true,
|
'isNewVersionAvailable' => true,
|
||||||
|
@ -118,6 +123,8 @@ class AdminControllerTest extends TestCase {
|
||||||
'currentChannel' => \OCP\Util::getChannel(),
|
'currentChannel' => \OCP\Util::getChannel(),
|
||||||
'channels' => $channels,
|
'channels' => $channels,
|
||||||
'newVersionString' => '8.1.2',
|
'newVersionString' => '8.1.2',
|
||||||
|
'downloadLink' => 'https://downloads.nextcloud.org/server',
|
||||||
|
'updaterEnabled' => true,
|
||||||
'notify_groups' => 'admin',
|
'notify_groups' => 'admin',
|
||||||
];
|
];
|
||||||
|
|
||||||
|
@ -154,7 +161,7 @@ class AdminControllerTest extends TestCase {
|
||||||
$this->updateChecker
|
$this->updateChecker
|
||||||
->expects($this->once())
|
->expects($this->once())
|
||||||
->method('getUpdateState')
|
->method('getUpdateState')
|
||||||
->willReturn([]);
|
->willReturn(['updaterEnabled' => false]);
|
||||||
|
|
||||||
$params = [
|
$params = [
|
||||||
'isNewVersionAvailable' => false,
|
'isNewVersionAvailable' => false,
|
||||||
|
@ -162,6 +169,8 @@ class AdminControllerTest extends TestCase {
|
||||||
'currentChannel' => \OCP\Util::getChannel(),
|
'currentChannel' => \OCP\Util::getChannel(),
|
||||||
'channels' => $channels,
|
'channels' => $channels,
|
||||||
'newVersionString' => '',
|
'newVersionString' => '',
|
||||||
|
'downloadLink' => '',
|
||||||
|
'updaterEnabled' => 0,
|
||||||
'notify_groups' => 'admin',
|
'notify_groups' => 'admin',
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
|
@ -50,11 +50,13 @@ class UpdateCheckerTest extends TestCase {
|
||||||
'versionstring' => 'Nextcloud 123',
|
'versionstring' => 'Nextcloud 123',
|
||||||
'web'=> 'javascript:alert(1)',
|
'web'=> 'javascript:alert(1)',
|
||||||
'url'=> 'javascript:alert(2)',
|
'url'=> 'javascript:alert(2)',
|
||||||
|
'autoupdater'=> '0',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$expected = [
|
$expected = [
|
||||||
'updateAvailable' => true,
|
'updateAvailable' => true,
|
||||||
'updateVersion' => 'Nextcloud 123',
|
'updateVersion' => 'Nextcloud 123',
|
||||||
|
'updaterEnabled' => false,
|
||||||
];
|
];
|
||||||
$this->assertSame($expected, $this->updateChecker->getUpdateState());
|
$this->assertSame($expected, $this->updateChecker->getUpdateState());
|
||||||
}
|
}
|
||||||
|
@ -68,12 +70,15 @@ class UpdateCheckerTest extends TestCase {
|
||||||
'versionstring' => 'Nextcloud 123',
|
'versionstring' => 'Nextcloud 123',
|
||||||
'web'=> 'https://docs.nextcloud.com/myUrl',
|
'web'=> 'https://docs.nextcloud.com/myUrl',
|
||||||
'url'=> 'https://downloads.nextcloud.org/server',
|
'url'=> 'https://downloads.nextcloud.org/server',
|
||||||
|
'autoupdater'=> '1',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$expected = [
|
$expected = [
|
||||||
'updateAvailable' => true,
|
'updateAvailable' => true,
|
||||||
'updateVersion' => 'Nextcloud 123',
|
'updateVersion' => 'Nextcloud 123',
|
||||||
|
'updaterEnabled' => true,
|
||||||
'updateLink' => 'https://docs.nextcloud.com/myUrl',
|
'updateLink' => 'https://docs.nextcloud.com/myUrl',
|
||||||
|
'downloadLink' => 'https://downloads.nextcloud.org/server',
|
||||||
];
|
];
|
||||||
$this->assertSame($expected, $this->updateChecker->getUpdateState());
|
$this->assertSame($expected, $this->updateChecker->getUpdateState());
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue