Generate the WebP variants for style cover photos during the upgrade
authorAlexander Ebert <ebert@woltlab.com>
Thu, 28 Jan 2021 18:37:55 +0000 (19:37 +0100)
committerTim Düsterhus <duesterhus@woltlab.com>
Fri, 29 Jan 2021 12:46:59 +0000 (13:46 +0100)
wcfsetup/install/files/acp/update_com.woltlab.wcf_5.4_styleCoverPhoto.php [new file with mode: 0644]
wcfsetup/install/lang/de.xml
wcfsetup/install/lang/en.xml

diff --git a/wcfsetup/install/files/acp/update_com.woltlab.wcf_5.4_styleCoverPhoto.php b/wcfsetup/install/files/acp/update_com.woltlab.wcf_5.4_styleCoverPhoto.php
new file mode 100644 (file)
index 0000000..ef59734
--- /dev/null
@@ -0,0 +1,33 @@
+<?php
+
+/**
+ * Generates the WebP variant for cover photos of styles.
+ *
+ * @author Alexander Ebert
+ * @copyright 2001-2021 WoltLab GmbH
+ * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
+ * @package WoltLabSuite\Core
+ */
+
+use wcf\data\style\StyleEditor;
+use wcf\system\package\SplitNodeException;
+use wcf\system\style\StyleHandler;
+
+foreach (StyleHandler::getInstance()->getStyles() as $style) {
+    if (!$style->coverPhotoExtension) {
+        continue;
+    }
+
+    if (\file_exists($style->getCoverPhotoLocation(true))) {
+        continue;
+    }
+
+    $styleEditor = new StyleEditor($style);
+    $result = $styleEditor->createCoverPhotoVariant();
+    if ($result === null) {
+        continue;
+    }
+
+    // Queue the script again to prevent running into a timeout.
+    throw new SplitNodeException();
+}
index 22b33d90fd6821090d6d2829dc9e2b40f9d9cffb..a7840f818c7a40775792e2a4456999033ccf53b0 100644 (file)
@@ -2885,7 +2885,7 @@ Kein Abschnitt darf leer sein und alle Abschnitten dürfen nur folgende Zeichen
                <item name="wcf.acp.style.copyStyle.confirmMessage"><![CDATA[{if LANGUAGE_USE_INFORMAL_VARIANT}Willst du{else}Wollen Sie{/if} den Stil <span class="confirmationObject">{$style->styleName}</span> wirklich duplizieren?]]></item>
                <item name="wcf.acp.style.coverPhoto"><![CDATA[Standard-Titelbild]]></item>
                <item name="wcf.acp.style.coverPhoto.delete.confirmMessage"><![CDATA[{if LANGUAGE_USE_INFORMAL_VARIANT}Willst du{else}Wollen Sie{/if} das Standard-Titelbild dieses Stils wirklich löschen? Nach dem Löschen wird das allgemeine, Stil-unabhängige Standard-Titelbild verwendet.]]></item>
-               <item name="wcf.acp.style.coverPhoto.description"><![CDATA[Das Bild muss mindestens {$coverPhotoMinWidth}×{$coverPhotoMinHeight} Pixel groß sein, als Bildformate sind GIF, JPG, JPEG und PNG zulässig.]]></item>
+               <item name="wcf.acp.style.coverPhoto.description"><![CDATA[Das Bild muss mindestens {$coverPhotoMinWidth}×{$coverPhotoMinHeight} Pixel groß sein, als Bildformate sind GIF, JPG, JPEG, PNG und WEBP zulässig.]]></item>
                <item name="wcf.acp.style.customAssets"><![CDATA[Zusätzliche Bilder]]></item>
                <item name="wcf.acp.style.customAssets.description"><![CDATA[{literal}Die hochgeladenen Bilder werden unter demselben Dateinamen im <kbd>custom/</kbd>-Ordner innerhalb des Stil-Ordners gespeichert. Im CSS muss der Ordner mit der Variable <kbd>#{$style_image_path}custom/</kbd> verlinkt werden.{/literal}]]></item>
                <item name="wcf.acp.style.delete.confirmMessage"><![CDATA[{if LANGUAGE_USE_INFORMAL_VARIANT}Willst du{else}Wollen Sie{/if} den Stil <span class="confirmationObject">{$style->styleName}</span> wirklich löschen?]]></item>
index 54042797df50ad2e904d855c238c0f9aff82a101..b8ba9e602ee01c6b5481fd03633724f71a8a2c9e 100644 (file)
@@ -2813,7 +2813,7 @@ If you have <strong>already bought the licenses for the listed apps</strong>, th
                <item name="wcf.acp.style.copyStyle.confirmMessage"><![CDATA[Do you really want to duplicate the style <span class="confirmationObject">{$style->styleName}</span>?]]></item>
                <item name="wcf.acp.style.coverPhoto"><![CDATA[Default Cover Photo]]></item>
                <item name="wcf.acp.style.coverPhoto.delete.confirmMessage"><![CDATA[Do you really want to delete the default cover photo? Once deleted, the global default photo will be used instead.]]></item>
-               <item name="wcf.acp.style.coverPhoto.description"><![CDATA[The image must be at least {$coverPhotoMinWidth}×{$coverPhotoMinHeight} pixels large, acceptable image types are GIF, JPG, JPEG and PNG.]]></item>
+               <item name="wcf.acp.style.coverPhoto.description"><![CDATA[The image must be at least {$coverPhotoMinWidth}×{$coverPhotoMinHeight} pixels large, acceptable image types are GIF, JPG, JPEG, PNG and WEBP.]]></item>
                <item name="wcf.acp.style.customAssets"><![CDATA[Additional Images]]></item>
                <item name="wcf.acp.style.customAssets.description"><![CDATA[{literal}The uploaded images will be stored with the same file name within the <kbd>custom/</kbd> folder in the style’s image folder. You can retrieve the folder’s path within the CSS by using <kbd>#{$style_image_path}custom/</kbd>.{/literal}]]></item>
                <item name="wcf.acp.style.delete.confirmMessage"><![CDATA[Do you really want to delete the style <span class="confirmationObject">{$style->styleName}</span>?]]></item>