From 8c3702464c42651ed50fef8d227cf73ca8d71f9c Mon Sep 17 00:00:00 2001 From: Fabian Bitter Date: Sun, 27 Aug 2023 08:35:23 +0200 Subject: [PATCH] Update --- .idea/php.xml | 1 + CHANGELOG | 4 + Gruntfile.js | 1 + controller.php | 2 +- controllers/dialog/support/create_ticket.php | 3 +- .../single_page/dashboard/system/app_icon.php | 13 +- single_pages/dashboard/system/app_icon.php | 23 +++- .../AppIcon/Provider/ServiceProvider.php | 114 +++++++++--------- src/Bitter/AppIcon/Settings.php | 93 -------------- views/dialogs/support/create_ticket.php | 12 +- 10 files changed, 95 insertions(+), 171 deletions(-) delete mode 100755 src/Bitter/AppIcon/Settings.php diff --git a/.idea/php.xml b/.idea/php.xml index 4493a6d..a8e1ca9 100644 --- a/.idea/php.xml +++ b/.idea/php.xml @@ -5,4 +5,5 @@ + \ No newline at end of file diff --git a/CHANGELOG b/CHANGELOG index b701e27..d39dfa8 100755 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,7 @@ +Version 2.6.0 +================================================== +- Add support for multi sites + Version 2.5.0 ================================================== - V9 compatible diff --git a/Gruntfile.js b/Gruntfile.js index dd15aca..b354d6b 100755 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -61,6 +61,7 @@ module.exports = function (grunt) { {src: ['routes/**'], dest: "dist/"}, {src: ['single_pages/**'], dest: "dist/"}, {src: ['src/**'], dest: "dist/"}, + {src: ['views/**'], dest: "dist/"}, {src: ['languages/**'], dest: "dist/"}, {src: ['icon.png'], dest: "dist/"}, {src: ['CHANGELOG'], dest: "dist/"} diff --git a/controller.php b/controller.php index af8215b..0d76d6f 100755 --- a/controller.php +++ b/controller.php @@ -16,7 +16,7 @@ class Controller extends Package { protected $pkgHandle = 'app_icon'; - protected $pkgVersion = '2.5.0'; + protected $pkgVersion = '2.6.0'; protected $appVersionRequired = '9.0.0'; protected $pkgAutoloaderRegistries = [ 'src/Bitter/AppIcon' => 'Bitter\AppIcon', diff --git a/controllers/dialog/support/create_ticket.php b/controllers/dialog/support/create_ticket.php index b2481b6..ec556b2 100644 --- a/controllers/dialog/support/create_ticket.php +++ b/controllers/dialog/support/create_ticket.php @@ -45,10 +45,9 @@ public function submit() $rawData = $response->getBody()->getContents(); - /** @noinspection PhpComposerExtensionStubsInspection */ $json = json_decode($rawData, true); - if ($json["error"]) { + if (isset($json["error"])) { foreach ($json["errors"] as $errorMessage) { $errorList->add($errorMessage); } diff --git a/controllers/single_page/dashboard/system/app_icon.php b/controllers/single_page/dashboard/system/app_icon.php index 67bca6b..ec12797 100755 --- a/controllers/single_page/dashboard/system/app_icon.php +++ b/controllers/single_page/dashboard/system/app_icon.php @@ -10,23 +10,20 @@ namespace Concrete\Package\AppIcon\Controller\SinglePage\Dashboard\System; -use Concrete\Core\Page\Controller\DashboardPageController; -use Bitter\AppIcon\Settings; +use Concrete\Core\Page\Controller\DashboardSitePageController; /** @noinspection PhpUnused */ -class AppIcon extends DashboardPageController +class AppIcon extends DashboardSitePageController { public function view() { - /** @var Settings $settings */ - $settings = $this->app->make(Settings::class); + $config = $this->getSite()->getConfigRepository(); - /** @noinspection PhpUndefinedMethodInspection */ if ($this->request->getMethod() === "POST") { - $settings->setAppIconFileId($this->post("appIcon")); + $config->save("settings.app_icon_file_id", (int)$this->request->request->get("appIcon", 0)); } - $this->set("appIcon", $settings->getAppIconFile()); + $this->set("appIcon", $config->get("settings.app_icon_file_id")); } } diff --git a/single_pages/dashboard/system/app_icon.php b/single_pages/dashboard/system/app_icon.php index 03f1841..0da62a8 100755 --- a/single_pages/dashboard/system/app_icon.php +++ b/single_pages/dashboard/system/app_icon.php @@ -14,7 +14,7 @@ use Concrete\Core\Entity\File\File; use Concrete\Core\Form\Service\Form; use Concrete\Core\Support\Facade\Application; -use Concrete\Core\View\View; +use Concrete\Core\Support\Facade\Url; /** @var File $appIcon */ @@ -26,6 +26,27 @@ ?> + + + + +
diff --git a/src/Bitter/AppIcon/Provider/ServiceProvider.php b/src/Bitter/AppIcon/Provider/ServiceProvider.php index d9d1d18..ef5a8d7 100644 --- a/src/Bitter/AppIcon/Provider/ServiceProvider.php +++ b/src/Bitter/AppIcon/Provider/ServiceProvider.php @@ -10,7 +10,6 @@ namespace Bitter\AppIcon\Provider; -use Bitter\AppIcon\Settings; use Concrete\Core\Cache\Level\ExpensiveCache; use Concrete\Core\Entity\File\File; use Concrete\Core\Entity\File\Version; @@ -51,16 +50,23 @@ private function initializeRoutes() $list->loadRoutes($router); } + private function getIconFile(): ?File + { + /** @var SiteService $siteService */ + $siteService = $this->app->make(SiteService::class); + $site = $siteService->getSite(); + $config = $site->getConfigRepository(); + + return \Concrete\Core\File\File::getByID($config->get("settings.app_icon_file_id")); + } + private function getResizedAppIconUrl($width, $height) { $resizedAppIconUrl = ''; - /** @var Settings $settings */ - $settings = $this->app->make(Settings::class); + $file = $this->getIconFile(); - $file = $settings->getAppIconFile(); - - if ($settings->hasAppIconFile()) { + if ($file instanceof File) { try { /** @var ImageHelper $imageHelper */ /** @noinspection PhpDeprecationInspection */ @@ -83,78 +89,70 @@ private function getRealResizedAppIconUrl() { $retVal = null; - /** @var Settings $settings */ - $settings = $this->app->make(Settings::class); - - if ($settings->hasAppIconFile()) { - $file = $settings->getAppIconFile(); - - if ($file instanceof File) { - $filesystem = $file->getFileStorageLocationObject()->getFileSystemObject(); + $file = $this->getIconFile(); + if ($file instanceof File) { + $filesystem = $file->getFileStorageLocationObject()->getFileSystemObject(); - $configuration = $file->getFileStorageLocationObject()->getConfigurationObject(); + $configuration = $file->getFileStorageLocationObject()->getConfigurationObject(); - $fID = $file->getFileID(); + $fID = $file->getFileID(); - $fileVersion = $file->getApprovedVersion(); + $fileVersion = $file->getApprovedVersion(); - if ($fileVersion instanceof Version) { - try { - $timestamp = $fileVersion->getFileResource()->getTimestamp(); - $icoFileName = '/cache/thumbnails/' . md5(implode(':', [$fID, $timestamp])) . ".ico"; + if ($fileVersion instanceof Version) { + try { + $timestamp = $fileVersion->getFileResource()->getTimestamp(); + $icoFileName = '/cache/thumbnails/' . md5(implode(':', [$fID, $timestamp])) . ".ico"; - if ($filesystem->has($icoFileName) === false) { - $fileData = $fileVersion->getFileContents(); + if ($filesystem->has($icoFileName) === false) { + $fileData = $fileVersion->getFileContents(); - $imagine = new Imagine(); + $imagine = new Imagine(); - $resizedImage = $imagine->load($fileData)->resize(new Box(16, 16))->crop(new Point(0, 0), new Box(16, 16)); + $resizedImage = $imagine->load($fileData)->resize(new Box(16, 16))->crop(new Point(0, 0), new Box(16, 16)); - if ($resizedImage instanceof Image) { - // https://msdn.microsoft.com/de-de/library/windows/desktop/dd183376(v=vs.85).aspx - $bitmapData = pack("VVVvvVVVVVV", 40, 16, 32, 1, 32, 0, 0, 0, 0, 0, 0); + if ($resizedImage instanceof Image) { + // https://msdn.microsoft.com/de-de/library/windows/desktop/dd183376(v=vs.85).aspx + $bitmapData = pack("VVVvvVVVVVV", 40, 16, 32, 1, 32, 0, 0, 0, 0, 0, 0); - for ($y = 15; $y >= 0; $y--) { - for ($x = 0; $x < 16; $x++) { - /** @noinspection PhpComposerExtensionStubsInspection */ - $bitmapData .= pack('V', imagecolorat($resizedImage->getGdResource(), $x, $y) & 0xFFFFFF); - } + for ($y = 15; $y >= 0; $y--) { + for ($x = 0; $x < 16; $x++) { + /** @noinspection PhpComposerExtensionStubsInspection */ + $bitmapData .= pack('V', imagecolorat($resizedImage->getGdResource(), $x, $y) & 0xFFFFFF); } + } - // https://msdn.microsoft.com/en-us/library/ms997538.aspx - $icoHeader = pack("vvvCCCCvvVV", 0, 1, 1, 16, 16, 0, 0, 1, 32, strlen($bitmapData), 22); + // https://msdn.microsoft.com/en-us/library/ms997538.aspx + $icoHeader = pack("vvvCCCCvvVV", 0, 1, 1, 16, 16, 0, 0, 1, 32, strlen($bitmapData), 22); - // Merge ico header + bitmap data together - $icoFileContent = $icoHeader . $bitmapData; + // Merge ico header + bitmap data together + $icoFileContent = $icoHeader . $bitmapData; - // write to file - try { - $filesystem->write($icoFileName, $icoFileContent); - } catch (FileExistsException $e) { - // Skip issue - } + // write to file + try { + $filesystem->write($icoFileName, $icoFileContent); + } catch (FileExistsException $e) { + // Skip issue } } - - $retVal = $configuration->getPublicURLToFile($icoFileName); - } catch (FileNotFoundException $e) { - // Skip issue } + + $retVal = $configuration->getPublicURLToFile($icoFileName); + } catch (FileNotFoundException $e) { + // Skip issue } } } + return $retVal; } private function getMimeType() { - /** @var Settings $settings */ - $settings = $this->app->make(Settings::class); - - if ($settings->hasAppIconFile()) { - $file = $settings->getAppIconFile(); + $file = $this->getIconFile(); + if ($file instanceof File) { $fileVersion = $file->getApprovedVersion(); if ($fileVersion instanceof Version) { @@ -251,7 +249,12 @@ private function getIconHtml() /** @var $cache ExpensiveCache */ $cache = $this->app->make(ExpensiveCache::class); - $cacheItem = $cache->getItem('bitter.app_icon.icon_html'); + /** @var SiteService $siteService */ + $siteService = $this->app->make(SiteService::class); + $site = $siteService->getSite(); + $siteId = $site->getSiteID(); + + $cacheItem = $cache->getItem('bitter.app_icon.icon_html_' . $siteId); if ($cacheItem->isMiss()) { $cacheItem->lock(); @@ -274,10 +277,7 @@ private function injectToHeader() $page = $pageEvent->getPageObject(); if ($page instanceof Page) { - /** @var Settings $settings */ - $settings = $this->app->make(Settings::class); - - if ($settings->hasAppIconFile()) { + if ($this->getIconFile() instanceof File) { View::getInstance()->addHeaderItem($this->getIconHtml()); } } diff --git a/src/Bitter/AppIcon/Settings.php b/src/Bitter/AppIcon/Settings.php deleted file mode 100755 index 6cdebe6..0000000 --- a/src/Bitter/AppIcon/Settings.php +++ /dev/null @@ -1,93 +0,0 @@ -app = $application; - $this->packageService = $packageService; - $this->packageEntity = $this->packageService->getByHandle('app_icon'); - $this->package = $this->packageEntity->getController(); - $this->cache = $cache; - } - - - private function getSetting($keyName, $defaultValue) - { - return $this->package->getConfig()->get($keyName, $defaultValue); - } - - private function setSetting($keyName, $value) - { - return $this->package->getConfig()->save($keyName, $value); - } - - public function getAppIconFile() - { - return File::getById($this->getAppIconFileId()); - } - - public function hasAppIconFile() - { - return $this->getAppIconFile() instanceof FileEntity; - } - - public function getAppIconFileId() - { - $fileId = (int)$this->getSetting("settings.app_icon_file_id", 0); - - /* - * Check for page specific app icon - */ - - $page = Page::getCurrentPage(); - - if ($page instanceof Page) { - /** @var $pageSpecificAppIconFile FileEntity */ - $pageSpecificAppIconFile = $page->getAttribute("app_icon"); - - if ($pageSpecificAppIconFile instanceof FileEntity) { - $fileId = $pageSpecificAppIconFile->getFileID(); - } - } - - return $fileId; - } - - public function setAppIconFileId($fileId) - { - $cacheItem = $this->cache->getItem('bitter.app_icon.icon_html'); - $cacheItem->clear(); - - return $this->setSetting("settings.app_icon_file_id", (int)$fileId); - } -} diff --git a/views/dialogs/support/create_ticket.php b/views/dialogs/support/create_ticket.php index 881de86..2d5dab7 100644 --- a/views/dialogs/support/create_ticket.php +++ b/views/dialogs/support/create_ticket.php @@ -10,8 +10,6 @@ defined('C5_EXECUTE') or die('Access denied'); -use Concrete\Core\Captcha\CaptchaInterface; -use Concrete\Core\Editor\EditorInterface; use Concrete\Core\Form\Service\Form; use Concrete\Core\Support\Facade\Application; use Concrete\Core\Support\Facade\Url; @@ -41,10 +39,6 @@ $app = Application::getFacadeApplication(); /** @var Form $form */ $form = $app->make(Form::class); -/** @var EditorInterface $editor */ -$editor = $app->make(EditorInterface::class); -/** @var CaptchaInterface $captcha */ -$captcha = $app->make(CaptchaInterface::class); ?> @@ -67,7 +61,7 @@
label('content', t("Content")); ?> - outputStandardEditor('content'); ?> + textarea('content'); ?>
@@ -81,11 +75,11 @@
- -