From a9a6d4c1826c7d1c1d11af9af349b67ba5af4923 Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Thu, 15 Oct 2015 16:15:42 +0200 Subject: [PATCH] Stay on the same category when refreshing the page on the apps list --- settings/controller/appsettingscontroller.php | 4 +++- settings/js/apps.js | 12 ++++++----- settings/templates/apps.php | 2 +- .../controller/AppSettingsControllerTest.php | 21 ++++++++++++++++++- 4 files changed, 31 insertions(+), 8 deletions(-) diff --git a/settings/controller/appsettingscontroller.php b/settings/controller/appsettingscontroller.php index f5cb043da20..9022e48a342 100644 --- a/settings/controller/appsettingscontroller.php +++ b/settings/controller/appsettingscontroller.php @@ -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'); diff --git a/settings/js/apps.js b/settings/js/apps.js index 987153b778c..bb3b1b85c3b 100644 --- a/settings/js/apps.js +++ b/settings/js/apps.js @@ -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', diff --git a/settings/templates/apps.php b/settings/templates/apps.php index 7e6c151fa65..5d9abe021ac 100644 --- a/settings/templates/apps.php +++ b/settings/templates/apps.php @@ -127,7 +127,7 @@ script( -
+
diff --git a/tests/settings/controller/AppSettingsControllerTest.php b/tests/settings/controller/AppSettingsControllerTest.php index d6379deb9c8..62eebc2de50 100644 --- a/tests/settings/controller/AppSettingsControllerTest.php +++ b/tests/settings/controller/AppSettingsControllerTest.php @@ -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)); + } }