Commit Graph

62 Commits

Author SHA1 Message Date
Ferdinand Thiessen 2a5fc73ca9 fix: resolve PHP deprecation of imagedestroy
> Prior to PHP 8.0.0, imagedestroy() freed any memory associated with the image resource.
> As of 8.0.0, the GD extension uses objects instead of resources, and objects cannot be explicitly closed.

With PHP 8.5 this is deprecated and causes a deprecation warning!

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-06-11 00:59:15 +02:00
Côme Chilliet 1ab09ec753 chore: Apply new coding standard to all files
The diff can be checked using: git diff --ignore-all-space --ignore-blank-lines
To see only the changes not related to blank lines.

Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2026-06-01 13:46:39 +02:00
Anna Larch 8a0080cbbb fix(theming): fix broken custom images introduced in 32.0.9
PR #58224 introduced a raster→SVG conversion path in ImageManager::getImage()
that breaks display of custom theming images. The root cause is a three-part
bug chain:

1. getImage() attempted to convert raster images (PNG/JPEG) to SVG format,
   which Imagick cannot do meaningfully and produces broken output.
2. getMimeType() returns 'application/octet-stream' for extensionless stored
   files, so the Content-Type response header was wrong.
3. Stale .svg cache files persisted after image replacement, causing
   subsequent requests to serve the wrong format.

Fix by:
- Restricting the Imagick conversion to SVG→PNG only (not raster→SVG)
- Reading the stored MIME type from IAppConfig for extensionless files in
  ThemingController::getImage()
- Deleting .svg cache files in ImageManager::delete()
- Injecting IAppConfig into ImageManager and reading the cachebuster via
  IAppConfig::getAppValueInt() so the URL returned after upload always
  carries the freshly-incremented value (IConfig::getAppValue() can return
  a stale cached value within the same request)
- Updating the FileInputField Vue component to use a reactive cacheKey ref
  that increments on every upload, so the thumbnail refreshes even when the
  MIME type of the new image is the same as the old one

AI-Assisted-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Anna Larch <anna@nextcloud.com>
2026-05-07 19:40:49 +02:00
Cristian Scheid 0a5f75e719 fix(theming): display error messages on image upload and delete previous image only after validation
Signed-off-by: Cristian Scheid <cristianscheid@gmail.com>
2026-02-12 08:03:03 -03:00
SebastianKrupinski e2c4db1541 fix: generate favourite icon without imagick svg support
Signed-off-by: SebastianKrupinski <krupinskis05@gmail.com>
2026-01-26 13:57:22 -05:00
Ferdinand Thiessen 5981b7eb51 chore: apply new CSFixer rules
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>

# Conflicts:
#	apps/settings/lib/SetupChecks/PhpOpcacheSetup.php
2025-07-01 16:26:50 +02:00
provokateurin 381077028a refactor(apps): Use constructor property promotion when possible
Signed-off-by: provokateurin <kate@provokateurin.de>
2024-10-21 12:37:59 +02:00
Joas Schilling 693a81bfa3 fix(mail): Fix big logos in mail templates for Outlook
Signed-off-by: Joas Schilling <coding@schilljs.com>
2024-07-17 09:24:55 +02:00
Ferdinand Thiessen d5dc6b2476 feat(theming): Allow shipped backgrounds to have a dark variant
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-07-12 13:00:07 +02:00
Andy Scherzinger cc1686dba9 chore: Add SPDX header
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2024-05-31 10:38:47 +02:00
Ferdinand Thiessen 11dbfa636d fix(settings): Return mean color of background image on set
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-05-21 20:36:26 +02:00
Ferdinand Thiessen 482395ba2f fix(theming): Also reset background color settings when updating global background image
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-05-21 20:36:21 +02:00
Ferdinand Thiessen 705335e6a5 feat(theming): Allow to configure primary color separate from background in admin settings
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-05-21 20:36:21 +02:00
Côme Chilliet 6d7ff2e85a fix: Fix typing issues related to resource migration
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2024-04-09 10:48:27 +02:00
John Molakvoæ a024ee1cfe Fix background removal check
Signed-off-by: John Molakvoæ <skjnldsv@protonmail.com>
2023-10-19 11:54:09 +02:00
Côme Chilliet 0a9371f99f Migrate applications away from deprecated ILogger
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2023-09-21 11:57:21 +02:00
John Molakvoæ 0a046844f6 feat(theming): add mime accept in Theming image file picker
Signed-off-by: John Molakvoæ <skjnldsv@protonmail.com>
2023-08-03 11:49:45 +02:00
Daniel Kesselberg f21cbfff64 feat: add detected mime type to exception
The mimetype may not match the file extension.
Helps the user to find out why a provided image is not accepted.

Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
2023-06-24 22:38:57 +02:00
Faraz Samapoor 437631a334 Refactors "strpos" calls in /apps/theming to improve code readability.
Signed-off-by: Faraz Samapoor <f.samapoor@gmail.com>
2023-06-02 15:43:47 +03:30
Ferdinand Thiessen 2ca1153ff6 fix(themeing): Add error handling to ImageManager
Signed-off-by: Ferdinand Thiessen <rpm@fthiessen.de>
2023-02-20 14:57:50 +01:00
Ferdinand Thiessen 7e1152603f feat(theming): Only convert a background image if it benefits from it
* WebP images are generally quite small, converting to pngs would increase
  the filesize a lot.
* Small JPEG and PNG images do not benefit from any conversion, so skip it.
* JPEG images will get quite bigger when converted to PNG so instead convert to progressive JPEG

Signed-off-by: Ferdinand Thiessen <rpm@fthiessen.de>
2023-02-20 13:11:19 +01:00
John Molakvoæ a869259e41 More theming cypress tests and some fixes
Signed-off-by: John Molakvoæ <skjnldsv@protonmail.com>
2022-11-29 11:26:27 +01:00
John Molakvoæ 064fa10ecf Extract colour from custom background
Signed-off-by: John Molakvoæ <skjnldsv@protonmail.com>
2022-11-29 11:23:05 +01:00
John Molakvoæ cedae7c6d7 Allow to remove the background and select a custom colour
Signed-off-by: John Molakvoæ <skjnldsv@protonmail.com>
2022-11-29 11:22:13 +01:00
Christopher Ng 4a2bbc7af9 Rewrite admin theming in Vue
Signed-off-by: Christopher Ng <chrng8@gmail.com>
2022-10-28 00:18:47 +00:00
John Molakvoæ d89da9b898 Simplify variable names
Signed-off-by: John Molakvoæ <skjnldsv@protonmail.com>
2022-10-19 12:59:16 +02:00
John Molakvoæ a8e90a03fc Properly use user background cachebuster
Signed-off-by: John Molakvoæ <skjnldsv@protonmail.com>
2022-10-14 16:18:40 +02:00
John Molakvoæ e4ff84d468 Scope the appdata theming storage for global and users
Signed-off-by: John Molakvoæ <skjnldsv@protonmail.com>
2022-10-14 16:18:37 +02:00
Julius Härtl 3d0b5c1ff9 Avoid file system access on checking if an image exists
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-02-02 11:26:36 +01:00
Carl Schwan e3a12b3482 Fix psalm issues in theming app
After this change, we are down to only one psalm warning for this app
and related to the Application.php. This also make composer
psam:update-baseline not silently ignore new errors.

Signed-off-by: Carl Schwan <carl@carlschwan.eu>
2022-01-26 14:26:58 +01:00
John Molakvoæ (skjnldsv) 215aef3cbd Update php licenses
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
2021-06-04 22:02:41 +02:00
ste101 d41e12f2e2 Allow webp as background image 2021-03-09 10:17:06 +01:00
Christoph Wurst d89a75be0b Update all license headers for Nextcloud 21
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
2020-12-16 18:48:22 +01:00
Julien Veyssier f5ef2d7d58 override default dashboard background with theming one
fix getAppValue default value in theming app
fix cacheBuster value injection

Signed-off-by: Julien Veyssier <eneiluj@posteo.net>
Signed-off-by: npmbuildbot-nextcloud[bot] <npmbuildbot-nextcloud[bot]@users.noreply.github.com>
2020-11-13 06:51:26 +00:00
Morris Jobke dd93532526 Cleanup ImageManager::getImage()
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2020-11-04 10:08:36 +01:00
Jacob Neplokh ef8822d3c7 Add gif to if-statement to not convert
- SVGs are already there, so I just added it alongside it (as recommended by https://github.com/nextcloud/server/issues/16232#issuecomment-679920284)

Signed-off-by: Jacob Neplokh <me@jacobneplokh.com>
2020-11-02 13:52:49 -08:00
John Molakvoæ (skjnldsv) 68f1f44e58 Enable theming background transparency
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
2020-10-25 19:15:52 +01:00
Gary Kim dfa17e9174 Allow setting favicon with a .ico file
Signed-off-by: Gary Kim <gary@garykim.dev>
2020-10-14 18:19:23 -04:00
Julius Härtl aa95b3d71b Add occ command to set theming values
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2020-09-24 08:22:07 +02:00
Christoph Wurst cb057829f7 Update license headers for 19
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
2020-04-29 11:57:22 +02:00
Christoph Wurst caff1023ea Format control structures, classes, methods and function
To continue this formatting madness, here's a tiny patch that adds
unified formatting for control structures like if and loops as well as
classes, their methods and anonymous functions. This basically forces
the constructs to start on the same line. This is not exactly what PSR2
wants, but I think we can have a few exceptions with "our" style. The
starting of braces on the same line is pracrically standard for our
code.

This also removes and empty lines from method/function bodies at the
beginning and end.

Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
2020-04-10 14:19:56 +02:00
Christoph Wurst 5bf3d1bb38 Update license headers
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
2019-12-05 15:38:45 +01:00
Roeland Jago Douma 68748d4f85 Some php-cs fixes
* Order the imports
* No leading slash on imports
* Empty line before namespace
* One line per import
* Empty after imports
* Emmpty line at bottom of file

Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2019-11-22 20:52:10 +01:00
Morris Jobke 7971ba5cc6 Merge pull request #10898 from nextcloud/feature/10684/default-logo-color-theme-colors
Switches the default logo color depending on the primary color
2018-10-08 10:33:22 +02:00
Daniel Kesselberg 1243caea2e Append error from exception for message
Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
2018-10-03 22:20:57 +02:00
Daniel Kesselberg 1986c1f563 Fix call to logger
Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
2018-10-03 21:15:20 +02:00
Michael Weimann c7e81e17c8 Updates inverted logo handling to work like the app icons
Signed-off-by: Michael Weimann <mail@michael-weimann.eu>
2018-10-02 08:37:55 +02:00
Michael Weimann d855c38e07 Moves the logo files to logo
Signed-off-by: Michael Weimann <mail@michael-weimann.eu>
2018-10-02 08:37:54 +02:00
Michael Weimann 92049c3ceb Switches the default logo color depending on the primary color
Signed-off-by: Michael Weimann <mail@michael-weimann.eu>
2018-10-02 08:37:54 +02:00
Julius Härtl ceee91d9d4 Add info message if an exception occurs during the svg to png conversion
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-06-14 17:36:02 +02:00