summaryrefslogtreecommitdiffstats
path: root/controller/pagecontroller.php
diff options
context:
space:
mode:
Diffstat (limited to 'controller/pagecontroller.php')
-rw-r--r--controller/pagecontroller.php54
1 files changed, 53 insertions, 1 deletions
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