From a68595742b4a5e13f27bc5cc9d4bbd79044e1790 Mon Sep 17 00:00:00 2001 From: Lukas Reschke Date: Mon, 31 Oct 2016 17:08:11 +0100 Subject: [PATCH] Proxy images through usercontent.apps.nextcloud.com Signed-off-by: Lukas Reschke --- settings/Controller/AppSettingsController.php | 7 ++++--- settings/js/apps.js | 4 ++-- .../Controller/AppSettingsControllerTest.php | 16 ++-------------- 3 files changed, 8 insertions(+), 19 deletions(-) diff --git a/settings/Controller/AppSettingsController.php b/settings/Controller/AppSettingsController.php index 1222b6bc86..8164dd1fcf 100644 --- a/settings/Controller/AppSettingsController.php +++ b/settings/Controller/AppSettingsController.php @@ -113,7 +113,7 @@ class AppSettingsController extends Controller { $templateResponse = new TemplateResponse($this->appName, 'apps', $params, 'user'); $policy = new ContentSecurityPolicy(); - $policy->addAllowedImageDomain('*'); + $policy->addAllowedImageDomain('https://usercontent.apps.nextcloud.com'); $templateResponse->setContentSecurityPolicy($policy); return $templateResponse; @@ -234,18 +234,19 @@ class AppSettingsController extends Controller { 'missingMaxOwnCloudVersion' => false, 'missingMinOwnCloudVersion' => false, 'canInstall' => true, - 'preview' => $app['screenshots'][0]['url'], + 'preview' => isset($app['screenshots'][0]['url']) ? 'https://usercontent.apps.nextcloud.com/'.base64_encode($app['screenshots'][0]['url']) : '', 'score' => $app['ratingOverall'], 'removable' => $existsLocally, 'active' => $this->appManager->isEnabledForUser($app['id']), 'needsDownload' => !$existsLocally, 'groups' => $groups, + 'fromAppStore' => true, ]; $appFetcher = \OC::$server->getAppFetcher(); $newVersion = \OC\Installer::isUpdateAvailable($app['id'], $appFetcher); - if($newVersion) { + if($newVersion && $this->appManager->isInstalled($app['id'])) { $formattedApps[count($formattedApps)-1]['update'] = $newVersion; } } diff --git a/settings/js/apps.js b/settings/js/apps.js index ecd7543c8c..654756af53 100644 --- a/settings/js/apps.js +++ b/settings/js/apps.js @@ -207,7 +207,7 @@ OC.Settings.Apps = OC.Settings.Apps || { currentImage.onload = function() { page.find('.app-image') - .append(OC.Settings.Apps.imageUrl(app.preview, app.detailpage)) + .append(OC.Settings.Apps.imageUrl(app.preview, app.fromAppStore)) .fadeIn(); }; } @@ -244,7 +244,7 @@ OC.Settings.Apps = OC.Settings.Apps || { var img = ''; if (appfromstore) { - img += ''; + img += ''; } else { img += ''; } diff --git a/tests/Settings/Controller/AppSettingsControllerTest.php b/tests/Settings/Controller/AppSettingsControllerTest.php index 72fcf1bd7f..a3e4a6fd82 100644 --- a/tests/Settings/Controller/AppSettingsControllerTest.php +++ b/tests/Settings/Controller/AppSettingsControllerTest.php @@ -28,13 +28,11 @@ use OC\Settings\Controller\AppSettingsController; use OCP\AppFramework\Http\ContentSecurityPolicy; use OCP\AppFramework\Http\JSONResponse; use OCP\AppFramework\Http\TemplateResponse; -use OCP\ICacheFactory; use OCP\L10N\IFactory; use Test\TestCase; use OCP\IRequest; use OCP\IL10N; use OCP\IConfig; -use OCP\ICache; use OCP\INavigationManager; use OCP\App\IAppManager; @@ -52,8 +50,6 @@ class AppSettingsControllerTest extends TestCase { private $l10n; /** @var IConfig|\PHPUnit_Framework_MockObject_MockObject */ private $config; - /** @var ICache|\PHPUnit_Framework_MockObject_MockObject */ - private $cache; /** @var INavigationManager|\PHPUnit_Framework_MockObject_MockObject */ private $navigationManager; /** @var IAppManager|\PHPUnit_Framework_MockObject_MockObject */ @@ -74,13 +70,6 @@ class AppSettingsControllerTest extends TestCase { ->method('t') ->will($this->returnArgument(0)); $this->config = $this->createMock(IConfig::class); - $cacheFactory = $this->createMock(ICacheFactory::class); - $this->cache = $this->createMock(ICache::class); - $cacheFactory - ->expects($this->once()) - ->method('create') - ->with('settings') - ->will($this->returnValue($this->cache)); $this->navigationManager = $this->createMock(INavigationManager::class); $this->appManager = $this->createMock(IAppManager::class); $this->categoryFetcher = $this->createMock(CategoryFetcher::class); @@ -92,7 +81,6 @@ class AppSettingsControllerTest extends TestCase { $this->request, $this->l10n, $this->config, - $cacheFactory, $this->navigationManager, $this->appManager, $this->categoryFetcher, @@ -185,7 +173,7 @@ class AppSettingsControllerTest extends TestCase { ->with('core_apps'); $policy = new ContentSecurityPolicy(); - $policy->addAllowedImageDomain('*'); + $policy->addAllowedImageDomain('https://usercontent.apps.nextcloud.com'); $expected = new TemplateResponse('settings', 'apps', ['category' => 'enabled', 'appstoreEnabled' => true], 'user'); $expected->setContentSecurityPolicy($policy); @@ -205,7 +193,7 @@ class AppSettingsControllerTest extends TestCase { ->with('core_apps'); $policy = new ContentSecurityPolicy(); - $policy->addAllowedImageDomain('*'); + $policy->addAllowedImageDomain('https://usercontent.apps.nextcloud.com'); $expected = new TemplateResponse('settings', 'apps', ['category' => 'enabled', 'appstoreEnabled' => false], 'user'); $expected->setContentSecurityPolicy($policy);