$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;
'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;
}
}
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();
};
}
var img = '<svg width="72" height="72" viewBox="0 0 72 72">';
if (appfromstore) {
- img += '<image x="0" y="0" width="72" height="72" preserveAspectRatio="xMinYMin meet" xlink:href="' + url + '?v=' + oc_config.version + '" class="app-icon" /></svg>';
+ img += '<image x="0" y="0" width="72" height="72" preserveAspectRatio="xMinYMin meet" xlink:href="' + url + '" class="app-icon" /></svg>';
} else {
img += '<image x="0" y="0" width="72" height="72" preserveAspectRatio="xMinYMin meet" filter="url(#invertIcon)" xlink:href="' + url + '?v=' + oc_config.version + '" class="app-icon"></image></svg>';
}
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;
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 */
->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);
$this->request,
$this->l10n,
$this->config,
- $cacheFactory,
$this->navigationManager,
$this->appManager,
$this->categoryFetcher,
->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);
->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);