diff --git a/settings/controller/appsettingscontroller.php b/settings/controller/appsettingscontroller.php index f5cb043da2..9022e48a34 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 987153b778..bb3b1b85c3 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 7e6c151fa6..5d9abe021a 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 d6379deb9c..62eebc2de5 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)); + } }