Stay on the same category when refreshing the page on the apps list

This commit is contained in:
Joas Schilling 2015-10-15 16:15:42 +02:00
parent 5181e5c29a
commit a9a6d4c182
4 changed files with 31 additions and 8 deletions

View File

@ -96,11 +96,13 @@ class AppSettingsController extends Controller {
/**
* @NoCSRFRequired
* @param int $category
* @return TemplateResponse
*/
public function viewApps() {
public function viewApps($category = 0) {
$params = [];
$params['experimentalEnabled'] = $this->config->getSystemValue('appstore.experimental.enabled', false);
$params['category'] = $category;
$this->navigationManager->setActiveEntry('core_apps');
$templateResponse = new TemplateResponse($this->appName, 'apps', $params, 'user');

View File

@ -40,7 +40,8 @@ OC.Settings.Apps = OC.Settings.Apps || {
}
var categories = [
{displayName: 'Enabled', id: '0'}
{displayName: t('settings', 'Enabled'), id: '0'},
{displayName: t('settings', 'Not enabled'), id: '1'}
];
var source = $("#categories-template").html();
@ -48,7 +49,7 @@ OC.Settings.Apps = OC.Settings.Apps || {
var html = template(categories);
$('#apps-categories').html(html);
OC.Settings.Apps.loadCategory(0);
OC.Settings.Apps.loadCategory(parseInt($('#app-navigation').attr('data-category'), 10));
this._loadCategoriesCall = $.ajax(OC.generateUrl('settings/apps/categories'), {
data:{},
@ -398,14 +399,14 @@ OC.Settings.Apps = OC.Settings.Apps || {
.text('');
},
showReloadMessage: function(appId) {
showReloadMessage: function() {
OC.dialogs.info(
t(
'settings',
'The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds.'
),
t('settings','App update'),
function (result) {
function () {
window.location.reload();
},
true
@ -443,6 +444,7 @@ OC.Settings.Apps = OC.Settings.Apps || {
$(document).on('click', 'ul#apps-categories li', function () {
var categoryId = $(this).data('categoryId');
OC.Settings.Apps.loadCategory(categoryId);
OC.Util.History.pushState('category=' + categoryId);
});
$(document).on('click', '.app-description-toggle-show', function () {
@ -508,7 +510,7 @@ OC.Settings.Apps = OC.Settings.Apps || {
});
$(document).on('click', '#enable-experimental-apps', function () {
var state = $(this).prop('checked')
var state = $(this).prop('checked');
$.ajax(OC.generateUrl('settings/apps/experimental'), {
data: {state: state},
type: 'POST',

View File

@ -127,7 +127,7 @@ script(
</div>
</script>
<div id="app-navigation" class="icon-loading">
<div id="app-navigation" class="icon-loading" data-category="<?php p($_['category']);?>">
<ul id="apps-categories">
</ul>

View File

@ -223,9 +223,28 @@ class AppSettingsControllerTest extends TestCase {
$policy = new ContentSecurityPolicy();
$policy->addAllowedImageDomain('https://apps.owncloud.com');
$expected = new TemplateResponse('settings', 'apps', ['experimentalEnabled' => false], 'user');
$expected = new TemplateResponse('settings', 'apps', ['experimentalEnabled' => false, 'category' => 0], 'user');
$expected->setContentSecurityPolicy($policy);
$this->assertEquals($expected, $this->appSettingsController->viewApps());
}
public function testViewAppsNotEnabled() {
$this->config
->expects($this->once())
->method('getSystemValue')
->with('appstore.experimental.enabled', false);
$this->navigationManager
->expects($this->once())
->method('setActiveEntry')
->with('core_apps');
$policy = new ContentSecurityPolicy();
$policy->addAllowedImageDomain('https://apps.owncloud.com');
$expected = new TemplateResponse('settings', 'apps', ['experimentalEnabled' => false, 'category' => 1], 'user');
$expected->setContentSecurityPolicy($policy);
$this->assertEquals($expected, $this->appSettingsController->viewApps(1));
}
}