From 26d950486ba5e48dd5ba44a4924760c88ed6c7ac Mon Sep 17 00:00:00 2001 From: Bernhard Posselt Date: Mon, 29 Sep 2014 21:22:34 +0200 Subject: add default locale and developer names and move the method to the pagecontroller, @cosenal --- controller/pagecontroller.php | 54 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 53 insertions(+), 1 deletion(-) (limited to 'controller/pagecontroller.php') diff --git a/controller/pagecontroller.php b/controller/pagecontroller.php index 27377eab4..e8b651608 100644 --- a/controller/pagecontroller.php +++ b/controller/pagecontroller.php @@ -13,26 +13,34 @@ namespace OCA\News\Controller; -use OCP\AppFramework\Http\TemplateResponse; +use \OCP\AppFramework\Http\TemplateResponse; use \OCP\IRequest; use \OCP\IConfig; use \OCP\IL10N; +use \OCP\IURLGenerator; use \OCP\AppFramework\Controller; +use \OCA\News\Config\AppConfig; class PageController extends Controller { private $settings; private $l10n; private $userId; + private $appConfig; + private $urlGenerator; public function __construct($appName, IRequest $request, IConfig $settings, + IURLGenerator $urlGenerator, + AppConfig $appConfig, IL10N $l10n, $userId){ parent::__construct($appName, $request); $this->settings = $settings; + $this->urlGenerator = $urlGenerator; + $this->appConfig = $appConfig; $this->l10n = $l10n; $this->userId = $userId; } @@ -82,4 +90,48 @@ class PageController extends Controller { } + /** + * @NoCSRFRequired + * @PublicPage + * + * Generates a web app manifest, according to specs in: + * https://developer.mozilla.org/en-US/Apps/Build/Manifest + */ + public function manifest() { + $config = $this->appConfig->getConfig(); + + // size of the icons: 128x128 is required by FxOS for all app manifests + $iconSizes = ['128', '512']; + $icons = []; + + $locale = str_replace('_', '-', $this->l10n->getLanguageCode()); + + foreach ($iconSizes as $size) { + $filename = 'app-' . $size . '.png'; + if (file_exists(__DIR__ . '/../img/' . $filename)) { + $icons[$size] = $this->urlGenerator->imagePath($config['id'], + $filename); + } + } + + $authors = []; + foreach ($config['authors'] as $author) { + $authors[] = $author['name']; + } + + return [ + "name" => $config['name'], + "type" => 'web', + "default_locale" => $locale, + "description" => $config['description'], + "launch_path" => $this->urlGenerator->linkToRoute( + $config['id'] . '.page.index'), + "icons" => $icons, + "developer" => [ + "name" => implode(', ', $authors), + "url" => $config['homepage'] + ] + ]; + } + } \ No newline at end of file -- cgit v1.2.3